@vived/app 5.0.1 → 5.0.2

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 (42) hide show
  1. package/dist/cjs/Callouts/UC/CreateCalloutUC.js +1 -1
  2. package/dist/cjs/Callouts/UC/CreateCalloutUC.js.map +1 -1
  3. package/dist/cjs/Callouts/UC/CreateCalloutUC.test.js +3 -2
  4. package/dist/cjs/Callouts/UC/CreateCalloutUC.test.js.map +1 -1
  5. package/dist/cjs/Hideable/Entities/Hideable.js +1 -0
  6. package/dist/cjs/Hideable/Entities/Hideable.js.map +1 -1
  7. package/dist/cjs/Hideable/Entities/Hideable.test.js +6 -0
  8. package/dist/cjs/Hideable/Entities/Hideable.test.js.map +1 -1
  9. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js +1 -1
  10. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  11. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.test.js +8 -0
  12. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.test.js.map +1 -1
  13. package/dist/cjs/Landmarks/Factories/setupLandmarks.js +8 -1
  14. package/dist/cjs/Landmarks/Factories/setupLandmarks.js.map +1 -1
  15. package/dist/cjs/Selection/UC/SelectAppObjectUC.js +10 -0
  16. package/dist/cjs/Selection/UC/SelectAppObjectUC.js.map +1 -1
  17. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js +31 -0
  18. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  19. package/dist/esm/Callouts/UC/CreateCalloutUC.js +1 -1
  20. package/dist/esm/Callouts/UC/CreateCalloutUC.js.map +1 -1
  21. package/dist/esm/Callouts/UC/CreateCalloutUC.test.js +3 -2
  22. package/dist/esm/Callouts/UC/CreateCalloutUC.test.js.map +1 -1
  23. package/dist/esm/Hideable/Entities/Hideable.js +1 -0
  24. package/dist/esm/Hideable/Entities/Hideable.js.map +1 -1
  25. package/dist/esm/Hideable/Entities/Hideable.test.js +6 -0
  26. package/dist/esm/Hideable/Entities/Hideable.test.js.map +1 -1
  27. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js +1 -1
  28. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  29. package/dist/esm/Hideable/UCs/SerializeHideableObjects.test.js +8 -0
  30. package/dist/esm/Hideable/UCs/SerializeHideableObjects.test.js.map +1 -1
  31. package/dist/esm/Landmarks/Factories/setupLandmarks.js +9 -2
  32. package/dist/esm/Landmarks/Factories/setupLandmarks.js.map +1 -1
  33. package/dist/esm/Selection/UC/SelectAppObjectUC.js +10 -0
  34. package/dist/esm/Selection/UC/SelectAppObjectUC.js.map +1 -1
  35. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js +31 -0
  36. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  37. package/dist/types/Hideable/Entities/Hideable.d.ts +1 -0
  38. package/dist/types/Hideable/Entities/Hideable.d.ts.map +1 -1
  39. package/dist/types/Hideable/UCs/SerializeHideableObjects.d.ts.map +1 -1
  40. package/dist/types/Landmarks/Factories/setupLandmarks.d.ts.map +1 -1
  41. package/dist/types/Selection/UC/SelectAppObjectUC.d.ts.map +1 -1
  42. package/package.json +1 -1
@@ -45,7 +45,7 @@ class CreateCalloutUCImp extends CreateCalloutUC {
45
45
  callout.labelTransform.worldPosition = core_1.Vector3.Add(labelBump, pickHit);
46
46
  callout.labelTransform.worldRotation = core_1.Quaternion.FromYawPitchRoll(core_1.Angle.FromDegrees(180), core_1.Angle.FromDegrees(0), core_1.Angle.FromDegrees(0));
47
47
  if (this.repoLabel) {
48
- callout.label.default = this.repoLabel.default;
48
+ callout.label.default = this.repoLabel.display;
49
49
  }
50
50
  if (this.calloutGlobals) {
51
51
  callout.size = this.calloutGlobals.lastSize;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":";;;AAqCA,kDAEC;AAvCD,sCAOqB;AACrB,kEAA+D;AAE/D,+DAA4D;AAC5D,yDAAsD;AACtD,mEAAgE;AAEhE,MAAsB,eAAgB,SAAQ,kBAAW;IAAzD;;QAGW,uBAAkB,GAAG,IAAI,CAAC;IAkBrC,CAAC;IAVC,MAAM,CAAC,GAAG,CAAC,MAAiB;QAC1B,OAAO,MAAM,CAAC,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;;AApBH,0CAqBC;AApBiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB;AAsB3C,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,+BAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CACN,OAAgB,EAChB,aAAsB,EACtB,WAAoB,IAAI;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC;QAC9C,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,iBAAU,CAAC,mBAAmB,CAClE,aAAa,CACd,CAAC;QAEF,MAAM,SAAS,GAAG,cAAO,CAAC,iBAAiB,CACzC,aAAa,EACb,IAAI,CAAC,kBAAkB,CACxB,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,iBAAU,CAAC,gBAAgB,CAChE,YAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACtB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACpE,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,6CAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.default;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":";;;AAqCA,kDAEC;AAvCD,sCAOqB;AACrB,kEAA+D;AAE/D,+DAA4D;AAC5D,yDAAsD;AACtD,mEAAgE;AAEhE,MAAsB,eAAgB,SAAQ,kBAAW;IAAzD;;QAGW,uBAAkB,GAAG,IAAI,CAAC;IAkBrC,CAAC;IAVC,MAAM,CAAC,GAAG,CAAC,MAAiB;QAC1B,OAAO,MAAM,CAAC,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;;AApBH,0CAqBC;AApBiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB;AAsB3C,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,+BAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CACN,OAAgB,EAChB,aAAsB,EACtB,WAAoB,IAAI;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC;QAC9C,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,iBAAU,CAAC,mBAAmB,CAClE,aAAa,CACd,CAAC;QAEF,MAAM,SAAS,GAAG,cAAO,CAAC,iBAAiB,CACzC,aAAa,EACb,IAAI,CAAC,kBAAkB,CACxB,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,iBAAU,CAAC,gBAAgB,CAChE,YAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACtB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACpE,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,6CAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.display;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
@@ -60,10 +60,11 @@ describe("Create Callout UC", () => {
60
60
  const expectRot = core_1.Quaternion.FromYawPitchRoll(core_1.Angle.FromDegrees(180), core_1.Angle.FromDegrees(0), core_1.Angle.FromDegrees(0));
61
61
  expect(core_1.Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)).toEqual(true);
62
62
  });
63
- it("Sets the default label the the repo's default label", () => {
63
+ it("Sets the default label the the repo's current label", () => {
64
64
  const { uc, label } = makeTestRig();
65
+ label.custom = "a custom label";
65
66
  const newCallout = uc.fromPick(core_1.Vector3.One(), new core_1.Vector3(1, 2, 3));
66
- expect(newCallout.label.default).toEqual(label.default);
67
+ expect(newCallout.label.default).toEqual(label.custom);
67
68
  });
68
69
  it("Sets the callout to the global size", () => {
69
70
  const { uc, calloutGlobals } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's default label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.default);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's current label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n label.custom = \"a custom label\";\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.custom);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
@@ -27,6 +27,7 @@ class Hideable extends core_1.AppObjectEntity {
27
27
  }
28
28
  constructor(appObject) {
29
29
  super(appObject, Hideable.type);
30
+ this.ignoreSerialization = false;
30
31
  this.memoizedIsHidden = new core_1.MemoizedBoolean(false, this.notifyOnChange);
31
32
  }
32
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AAErB,MAAa,QAAS,SAAQ,sBAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAGD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAT1B,qBAAgB,GAAG,IAAI,sBAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAjCH,4BAkCC;AAjCiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AAErB,MAAa,QAAS,SAAQ,sBAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAX3B,wBAAmB,GAAG,KAAK,CAAC;QAE3B,qBAAgB,GAAG,IAAI,sBAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAnCH,4BAoCC;AAnCiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n public ignoreSerialization = false;\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
@@ -45,5 +45,11 @@ describe("Hideable Entity", () => {
45
45
  Hideable_1.Hideable.addIfMissing(newAO);
46
46
  expect(newAO.hasComponent(Hideable_1.Hideable.type)).toEqual(true);
47
47
  });
48
+ it("Has a property called ignoreSerialization that can be set", () => {
49
+ const { hideable } = makeTestRig();
50
+ expect(hideable.ignoreSerialization).toEqual(false);
51
+ hideable.ignoreSerialization = true;
52
+ expect(hideable.ignoreSerialization).toEqual(true);
53
+ });
48
54
  });
49
55
  //# sourceMappingURL=Hideable.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n\r\n it(\"Has a property called ignoreSerialization that can be set\", () => {\r\n const { hideable } = makeTestRig();\r\n expect(hideable.ignoreSerialization).toEqual(false);\r\n hideable.ignoreSerialization = true;\r\n expect(hideable.ignoreSerialization).toEqual(true);\r\n });\r\n});\r\n"]}
@@ -21,7 +21,7 @@ class SerializeHideableObjectsImp extends SerializeHideableObjects {
21
21
  const hiddenObjects = [];
22
22
  const allHideables = this.appObjects.getAllComponents(Hideable_1.Hideable.type);
23
23
  allHideables.forEach((hideable) => {
24
- if (hideable.isHidden)
24
+ if (hideable.isHidden && !hideable.ignoreSerialization)
25
25
  hiddenObjects.push(hideable.appObject.id);
26
26
  });
27
27
  const state = {
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden) hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
1
+ {"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":";;;AAsBA,oEAIC;AA1BD,mDAAgD;AAChD,uFAGwD;AACxD,sCAAqD;AAErD,MAAsB,wBACpB,SAAQ,kBAAW;IADrB;;QAIE,SAAI,GAAW,kBAAkB,CAAC;IASpC,CAAC;;AAbD,4DAaC;AAViB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B;AAYpD,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAa,2BAA4B,SAAQ,wBAAwB;IASvE,cAAc;QACZ,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CACnD,mBAAQ,CAAC,IAAI,CACd,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,mBAAmB;gBACpD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAgC;YACzC,aAAa;SACd,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CACd,KAAa,EACb,OAAe,EACf,SAAiB;QAEjB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAoC,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAkC,EAAE,SAAiB;QACxE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;QAEhC,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,gBAAgB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CACnD,mBAAQ,CAAC,IAAI,CACd,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAE1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAEzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,mBAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClD,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CACnD,mBAAQ,CAAC,IAAI,CACd,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,MAAiB;QAC3B,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QArF/C,yBAAoB,GAAG,CAAC,CAAC;QAEzB,yBAAoB,GAAe,GAAG,EAAE;YACtC,OAAO,CAAC,IAAI,CACV,kEAAkE,CACnE,CAAC;QACJ,CAAC,CAAC;QAiFA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAC/C,uCAAkB,CAAC,IAAI,CACxB,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAjGD,kEAiGC","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden && !hideable.ignoreSerialization)\r\n hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
@@ -90,5 +90,13 @@ describe("Serialize Dissectable Object", () => {
90
90
  expect(hideable3).toBeDefined();
91
91
  expect(hideable3.isHidden).toEqual(true);
92
92
  });
93
+ it("Does not serialize hidden objects that have ignoreSerialization set to true", () => {
94
+ const { appObjects, serializer, obj1, obj2 } = makeTestRig();
95
+ const hideable1 = Entities_1.Hideable.get(obj1.id, appObjects);
96
+ hideable1.isHidden = true;
97
+ hideable1.ignoreSerialization = true;
98
+ const state = serializer.getSystemState();
99
+ expect(state.hiddenObjects).toHaveLength(0);
100
+ });
93
101
  });
94
102
  //# sourceMappingURL=SerializeHideableObjects.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Does not serialize hidden objects that have ignoreSerialization set to true\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n hideable1!.ignoreSerialization = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n});\r\n"]}
@@ -28,11 +28,18 @@ function setupLandmarks(appObjects) {
28
28
  (0, OverlayColor_1.makeOverlayColorPM)(previewAO);
29
29
  (0, Selection_1.makeSelectableStatePM)(previewAO);
30
30
  (0, Hideable_1.makeIsHiddenPM)(previewAO);
31
+ const previewHidable = Hideable_1.Hideable.get(previewAO.id, appObjects);
32
+ if (previewHidable) {
33
+ previewHidable.ignoreSerialization = true;
34
+ }
35
+ else {
36
+ appObjects.submitError("setupLandmarks", "Unable to find Hideable on preview landmark");
37
+ }
31
38
  globals.previewLandmark = preview;
32
39
  // Setup Tool
33
40
  const toolRepo = Tools_1.ToolRepository.get(appObjects);
34
41
  if (!toolRepo) {
35
- appObjects.submitWarning("setupLandmarks", "Unable to find tool repo");
42
+ appObjects.submitError("setupLandmarks", "Unable to find tool repo");
36
43
  return landmarksAO;
37
44
  }
38
45
  toolRepo.makeToolFromData({
@@ -1 +1 @@
1
- {"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":";;AAgBA,wCA2CC;AA1DD,6CAAgD;AAChD,qDAAwD;AACxD,+CAAwD;AACxD,uCAA6C;AAC7C,mDAAsD;AACtD,8CAAqE;AACrE,0CAAsE;AACtE,0CAKqB;AACrB,+DAAgE;AAEhE,SAAgB,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,6BAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAC;IACtC,IAAA,+BAAoB,EAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAC/B,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,SAAS,CAAC,CAAC;IAE9C,IAAA,iCAAsB,EAAC,SAAS,CAAC,CAAC;IAElC,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,iCAAkB,EAAC,SAAS,CAAC,CAAC;IAC9B,IAAA,iCAAqB,EAAC,SAAS,CAAC,CAAC;IACjC,IAAA,yBAAc,EAAC,SAAS,CAAC,CAAC;IAE1B,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,sBAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,aAAa,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitWarning(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
1
+ {"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":";;AAgBA,wCAqDC;AApED,6CAA0D;AAC1D,qDAAwD;AACxD,+CAAwD;AACxD,uCAA6C;AAC7C,mDAAsD;AACtD,8CAAqE;AACrE,0CAAsE;AACtE,0CAKqB;AACrB,+DAAgE;AAEhE,SAAgB,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,6BAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAC;IACtC,IAAA,+BAAoB,EAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAC/B,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,SAAS,CAAC,CAAC;IAE9C,IAAA,iCAAsB,EAAC,SAAS,CAAC,CAAC;IAElC,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,iCAAkB,EAAC,SAAS,CAAC,CAAC;IAC9B,IAAA,iCAAqB,EAAC,SAAS,CAAC,CAAC;IACjC,IAAA,yBAAc,EAAC,SAAS,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,gBAAgB,EAChB,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,sBAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Hideable, makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n const previewHidable = Hideable.get(previewAO.id, appObjects);\r\n if (previewHidable) {\r\n previewHidable.ignoreSerialization = true;\r\n } else {\r\n appObjects.submitError(\r\n \"setupLandmarks\",\r\n \"Unable to find Hideable on preview landmark\"\r\n );\r\n }\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitError(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
@@ -5,6 +5,7 @@ exports.makeSelectAppObject = makeSelectAppObject;
5
5
  const core_1 = require("@vived/core");
6
6
  const Babylon_1 = require("../../Babylon");
7
7
  const BaseApp_1 = require("../../BaseApp");
8
+ const Tools_1 = require("../../Tools");
8
9
  const Selectable_1 = require("../Entities/Selectable");
9
10
  const Selection_1 = require("../Entities/Selection");
10
11
  class SelectAppObjectUC extends core_1.AppObjectUC {
@@ -24,6 +25,9 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
24
25
  get baseApp() {
25
26
  return this.getCachedSingleton(BaseApp_1.BaseAppState.type);
26
27
  }
28
+ get toolRepo() {
29
+ return this.getCachedSingleton(Tools_1.ToolRepository.type);
30
+ }
27
31
  constructor(appObject) {
28
32
  super(appObject, SelectAppObjectUC.type);
29
33
  this.allowSelect = () => {
@@ -36,6 +40,12 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
36
40
  if (!this.baseApp) {
37
41
  return false;
38
42
  }
43
+ if (this.toolRepo?.activeTool?.toolType === "CALLOUT") {
44
+ return false;
45
+ }
46
+ if (this.toolRepo?.activeTool?.toolType === "LANDMARK") {
47
+ return false;
48
+ }
39
49
  return this.baseApp.isAuthoring;
40
50
  };
41
51
  this.trySelectAppObject = (ray) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":";;;AA4BA,kDAEC;AA9BD,sCAMqB;AACrB,2CAA2D;AAC3D,2CAA6C;AAC7C,uDAAoD;AACpD,qDAAkD;AAElD,MAAsB,iBAAkB,SAAQ,kBAAW;IAQzD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAC1B,iBAAiB,CAAC,IAAI,EACtB,UAAU,CACX,CAAC;IACJ,CAAC;;AAbH,8CAcC;AAbiB,sBAAI,GAAG,mBAAmB,CAAC;AAe7C,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,iBAAiB;IAClD,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,qBAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,sBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAsDD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QArD3C,gBAAW,GAAG,GAAY,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC;QAEF,mBAAc,GAAG,GAAY,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,GAAmB,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAAE,OAAO;YAEnC,MAAM,OAAO,GAA6B,IAAA,sBAAY,EACpD,GAAG,EACH,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CACtD,OAAO,CAAC,WAAW,EACnB,uBAAU,CAAC,IAAI,CAChB,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;QACxD,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,EAAU,EAAE,UAAmB,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO;YAEhC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC;YACvC,CAAC;iBAAM,IAAI,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAClD,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n private get toolRepo() {\r\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"CALLOUT\") {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"LANDMARK\") {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
4
  const Babylon_1 = require("../../Babylon");
5
5
  const BaseApp_1 = require("../../BaseApp");
6
+ const Tools_1 = require("../../Tools");
6
7
  const Selectable_1 = require("../Entities/Selectable");
7
8
  const Selection_1 = require("../Entities/Selection");
8
9
  const SelectAppObjectUC_1 = require("./SelectAppObjectUC");
@@ -19,6 +20,11 @@ function makeTestRig() {
19
20
  mockPickUC.sceneRayPick = mockPick;
20
21
  const baseApp = (0, BaseApp_1.makeBaseAppState)(appObjects.getOrCreate("BaseApp"));
21
22
  baseApp.isAuthoring = true;
23
+ const toolRepo = (0, Tools_1.makeToolRepo)(appObjects.getOrCreate("ToolRepo"));
24
+ toolRepo.makeTool("CALLOUT");
25
+ toolRepo.makeTool("LANDMARK");
26
+ toolRepo.makeTool("OTHER");
27
+ toolRepo.triggerTool("OTHER");
22
28
  const selectSceneObject = (0, SelectAppObjectUC_1.makeSelectAppObject)(baseAppObj);
23
29
  return {
24
30
  appObjects,
@@ -28,6 +34,7 @@ function makeTestRig() {
28
34
  mockPick,
29
35
  registerSpy,
30
36
  baseApp,
37
+ toolRepo,
31
38
  };
32
39
  }
33
40
  describe("Select Scene Object UC", () => {
@@ -96,5 +103,29 @@ describe("Select Scene Object UC", () => {
96
103
  expect(selectSceneObject.allowSelect()).toEqual(false);
97
104
  expect(selectSceneObject.allowTrySelect()).toEqual(false);
98
105
  });
106
+ it("Does not change the selected object ID the callout tool is enabled", () => {
107
+ const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
108
+ const selectabelAppObj = appObjects.getOrCreate("currentObjID");
109
+ const selectable = (0, Selectable_1.makeSelectable)(selectabelAppObj);
110
+ selection.addSelectable(selectable);
111
+ toolRepo.triggerTool("CALLOUT");
112
+ mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
113
+ selection.selectedObjectId = "currentObjID";
114
+ expect(selection.selectedObjectId).toEqual("currentObjID");
115
+ selectSceneObject.trySelectAppObject(core_1.ParametricLine.Forward());
116
+ expect(selection.selectedObjectId).toEqual("currentObjID");
117
+ });
118
+ it("Does not change the selected object ID the landmark tool is enabled", () => {
119
+ const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
120
+ const selectabelAppObj = appObjects.getOrCreate("currentObjID");
121
+ const selectable = (0, Selectable_1.makeSelectable)(selectabelAppObj);
122
+ selection.addSelectable(selectable);
123
+ toolRepo.triggerTool("LANDMARK");
124
+ mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
125
+ selection.selectedObjectId = "currentObjID";
126
+ expect(selection.selectedObjectId).toEqual("currentObjID");
127
+ selectSceneObject.trySelectAppObject(core_1.ParametricLine.Forward());
128
+ expect(selection.selectedObjectId).toEqual("currentObjID");
129
+ });
99
130
  });
100
131
  //# sourceMappingURL=SelectAppObjectUC.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
@@ -40,7 +40,7 @@ class CreateCalloutUCImp extends CreateCalloutUC {
40
40
  callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);
41
41
  callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(Angle.FromDegrees(180), Angle.FromDegrees(0), Angle.FromDegrees(0));
42
42
  if (this.repoLabel) {
43
- callout.label.default = this.repoLabel.default;
43
+ callout.label.default = this.repoLabel.display;
44
44
  }
45
45
  if (this.calloutGlobals) {
46
46
  callout.size = this.calloutGlobals.lastSize;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.default;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.display;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
@@ -58,10 +58,11 @@ describe("Create Callout UC", () => {
58
58
  const expectRot = Quaternion.FromYawPitchRoll(Angle.FromDegrees(180), Angle.FromDegrees(0), Angle.FromDegrees(0));
59
59
  expect(Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)).toEqual(true);
60
60
  });
61
- it("Sets the default label the the repo's default label", () => {
61
+ it("Sets the default label the the repo's current label", () => {
62
62
  const { uc, label } = makeTestRig();
63
+ label.custom = "a custom label";
63
64
  const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));
64
- expect(newCallout.label.default).toEqual(label.default);
65
+ expect(newCallout.label.default).toEqual(label.custom);
65
66
  });
66
67
  it("Sets the callout to the global size", () => {
67
68
  const { uc, calloutGlobals } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's default label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.default);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's current label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n label.custom = \"a custom label\";\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.custom);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
@@ -24,6 +24,7 @@ export class Hideable extends AppObjectEntity {
24
24
  }
25
25
  constructor(appObject) {
26
26
  super(appObject, Hideable.type);
27
+ this.ignoreSerialization = false;
27
28
  this.memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);
28
29
  }
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,QAAS,SAAQ,eAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAGD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAT1B,qBAAgB,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAhCe,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,QAAS,SAAQ,eAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAX3B,wBAAmB,GAAG,KAAK,CAAC;QAE3B,qBAAgB,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAlCe,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n public ignoreSerialization = false;\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
@@ -43,5 +43,11 @@ describe("Hideable Entity", () => {
43
43
  Hideable.addIfMissing(newAO);
44
44
  expect(newAO.hasComponent(Hideable.type)).toEqual(true);
45
45
  });
46
+ it("Has a property called ignoreSerialization that can be set", () => {
47
+ const { hideable } = makeTestRig();
48
+ expect(hideable.ignoreSerialization).toEqual(false);
49
+ hideable.ignoreSerialization = true;
50
+ expect(hideable.ignoreSerialization).toEqual(true);
51
+ });
46
52
  });
47
53
  //# sourceMappingURL=Hideable.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n\r\n it(\"Has a property called ignoreSerialization that can be set\", () => {\r\n const { hideable } = makeTestRig();\r\n expect(hideable.ignoreSerialization).toEqual(false);\r\n hideable.ignoreSerialization = true;\r\n expect(hideable.ignoreSerialization).toEqual(true);\r\n });\r\n});\r\n"]}
@@ -16,7 +16,7 @@ export class SerializeHideableObjectsImp extends SerializeHideableObjects {
16
16
  const hiddenObjects = [];
17
17
  const allHideables = this.appObjects.getAllComponents(Hideable.type);
18
18
  allHideables.forEach((hideable) => {
19
- if (hideable.isHidden)
19
+ if (hideable.isHidden && !hideable.ignoreSerialization)
20
20
  hiddenObjects.push(hideable.appObject.id);
21
21
  });
22
22
  const state = {
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden) hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
1
+ {"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden && !hideable.ignoreSerialization)\r\n hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
@@ -88,5 +88,13 @@ describe("Serialize Dissectable Object", () => {
88
88
  expect(hideable3).toBeDefined();
89
89
  expect(hideable3.isHidden).toEqual(true);
90
90
  });
91
+ it("Does not serialize hidden objects that have ignoreSerialization set to true", () => {
92
+ const { appObjects, serializer, obj1, obj2 } = makeTestRig();
93
+ const hideable1 = Hideable.get(obj1.id, appObjects);
94
+ hideable1.isHidden = true;
95
+ hideable1.ignoreSerialization = true;
96
+ const state = serializer.getSystemState();
97
+ expect(state.hiddenObjects).toHaveLength(0);
98
+ });
91
99
  });
92
100
  //# sourceMappingURL=SerializeHideableObjects.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Does not serialize hidden objects that have ignoreSerialization set to true\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n hideable1!.ignoreSerialization = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n});\r\n"]}
@@ -1,4 +1,4 @@
1
- import { makeIsHiddenPM } from "../../Hideable";
1
+ import { Hideable, makeIsHiddenPM } from "../../Hideable";
2
2
  import { makeOverlayColorPM } from "../../OverlayColor";
3
3
  import { makeSelectableStatePM } from "../../Selection";
4
4
  import { ToolRepository } from "../../Tools";
@@ -25,11 +25,18 @@ export function setupLandmarks(appObjects) {
25
25
  makeOverlayColorPM(previewAO);
26
26
  makeSelectableStatePM(previewAO);
27
27
  makeIsHiddenPM(previewAO);
28
+ const previewHidable = Hideable.get(previewAO.id, appObjects);
29
+ if (previewHidable) {
30
+ previewHidable.ignoreSerialization = true;
31
+ }
32
+ else {
33
+ appObjects.submitError("setupLandmarks", "Unable to find Hideable on preview landmark");
34
+ }
28
35
  globals.previewLandmark = preview;
29
36
  // Setup Tool
30
37
  const toolRepo = ToolRepository.get(appObjects);
31
38
  if (!toolRepo) {
32
- appObjects.submitWarning("setupLandmarks", "Unable to find tool repo");
39
+ appObjects.submitError("setupLandmarks", "Unable to find tool repo");
33
40
  return landmarksAO;
34
41
  }
35
42
  toolRepo.makeToolFromData({
@@ -1 +1 @@
1
- {"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACtC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/B,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE9C,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAElC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE1B,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,aAAa,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitWarning(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
1
+ {"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACtC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/B,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE9C,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAElC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,gBAAgB,EAChB,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Hideable, makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n const previewHidable = Hideable.get(previewAO.id, appObjects);\r\n if (previewHidable) {\r\n previewHidable.ignoreSerialization = true;\r\n } else {\r\n appObjects.submitError(\r\n \"setupLandmarks\",\r\n \"Unable to find Hideable on preview landmark\"\r\n );\r\n }\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitError(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
@@ -1,6 +1,7 @@
1
1
  import { AppObjectUC, getSingletonComponent, } from "@vived/core";
2
2
  import { sceneRayPick } from "../../Babylon";
3
3
  import { BaseAppState } from "../../BaseApp";
4
+ import { ToolRepository } from "../../Tools";
4
5
  import { Selectable } from "../Entities/Selectable";
5
6
  import { Selection } from "../Entities/Selection";
6
7
  export class SelectAppObjectUC extends AppObjectUC {
@@ -19,6 +20,9 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
19
20
  get baseApp() {
20
21
  return this.getCachedSingleton(BaseAppState.type);
21
22
  }
23
+ get toolRepo() {
24
+ return this.getCachedSingleton(ToolRepository.type);
25
+ }
22
26
  constructor(appObject) {
23
27
  super(appObject, SelectAppObjectUC.type);
24
28
  this.allowSelect = () => {
@@ -31,6 +35,12 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
31
35
  if (!this.baseApp) {
32
36
  return false;
33
37
  }
38
+ if (this.toolRepo?.activeTool?.toolType === "CALLOUT") {
39
+ return false;
40
+ }
41
+ if (this.toolRepo?.activeTool?.toolType === "LANDMARK") {
42
+ return false;
43
+ }
34
44
  return this.baseApp.isAuthoring;
35
45
  };
36
46
  this.trySelectAppObject = (ray) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n private get toolRepo() {\r\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"CALLOUT\") {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"LANDMARK\") {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,7 @@
1
1
  import { makeAppObjectRepo, ParametricLine } from "@vived/core";
2
2
  import { makeMockSceneRayPickUC } from "../../Babylon";
3
3
  import { makeBaseAppState } from "../../BaseApp";
4
+ import { makeToolRepo } from "../../Tools";
4
5
  import { makeSelectable } from "../Entities/Selectable";
5
6
  import { makeSelection } from "../Entities/Selection";
6
7
  import { makeSelectAppObject, SelectAppObjectUC } from "./SelectAppObjectUC";
@@ -17,6 +18,11 @@ function makeTestRig() {
17
18
  mockPickUC.sceneRayPick = mockPick;
18
19
  const baseApp = makeBaseAppState(appObjects.getOrCreate("BaseApp"));
19
20
  baseApp.isAuthoring = true;
21
+ const toolRepo = makeToolRepo(appObjects.getOrCreate("ToolRepo"));
22
+ toolRepo.makeTool("CALLOUT");
23
+ toolRepo.makeTool("LANDMARK");
24
+ toolRepo.makeTool("OTHER");
25
+ toolRepo.triggerTool("OTHER");
20
26
  const selectSceneObject = makeSelectAppObject(baseAppObj);
21
27
  return {
22
28
  appObjects,
@@ -26,6 +32,7 @@ function makeTestRig() {
26
32
  mockPick,
27
33
  registerSpy,
28
34
  baseApp,
35
+ toolRepo,
29
36
  };
30
37
  }
31
38
  describe("Select Scene Object UC", () => {
@@ -94,5 +101,29 @@ describe("Select Scene Object UC", () => {
94
101
  expect(selectSceneObject.allowSelect()).toEqual(false);
95
102
  expect(selectSceneObject.allowTrySelect()).toEqual(false);
96
103
  });
104
+ it("Does not change the selected object ID the callout tool is enabled", () => {
105
+ const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
106
+ const selectabelAppObj = appObjects.getOrCreate("currentObjID");
107
+ const selectable = makeSelectable(selectabelAppObj);
108
+ selection.addSelectable(selectable);
109
+ toolRepo.triggerTool("CALLOUT");
110
+ mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
111
+ selection.selectedObjectId = "currentObjID";
112
+ expect(selection.selectedObjectId).toEqual("currentObjID");
113
+ selectSceneObject.trySelectAppObject(ParametricLine.Forward());
114
+ expect(selection.selectedObjectId).toEqual("currentObjID");
115
+ });
116
+ it("Does not change the selected object ID the landmark tool is enabled", () => {
117
+ const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
118
+ const selectabelAppObj = appObjects.getOrCreate("currentObjID");
119
+ const selectable = makeSelectable(selectabelAppObj);
120
+ selection.addSelectable(selectable);
121
+ toolRepo.triggerTool("LANDMARK");
122
+ mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
123
+ selection.selectedObjectId = "currentObjID";
124
+ expect(selection.selectedObjectId).toEqual("currentObjID");
125
+ selectSceneObject.trySelectAppObject(ParametricLine.Forward());
126
+ expect(selection.selectedObjectId).toEqual("currentObjID");
127
+ });
97
128
  });
98
129
  //# sourceMappingURL=SelectAppObjectUC.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACpD,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEnC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAE3B,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE1D,OAAO;QACL,UAAU;QACV,iBAAiB;QACjB,UAAU;QACV,SAAS;QACT,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvD,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvD,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAE/D,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAE7D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvD,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,iBAAiB,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEjE,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,8CAA8C;QAE9G,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEjE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE7B,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAE5D,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,8CAA8C;QAE9G,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEjE,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE9D,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAE5D,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,8CAA8C;QAE9G,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAC1D,WAAW,EAAE,CAAC;QAEhB,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAEnE,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAE5D,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,8CAA8C;QAE9G,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAExD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAE3B,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QAE5B,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,EACJ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,GAAG,WAAW,EAAE,CAAC;QAElB,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACpD,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEpC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEhC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE9D,SAAS,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3D,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,EACJ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,GAAG,WAAW,EAAE,CAAC;QAElB,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACpD,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEpC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEjC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE9D,SAAS,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3D,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
@@ -3,6 +3,7 @@ export declare class Hideable extends AppObjectEntity {
3
3
  static readonly type = "HIDEABLE";
4
4
  static addIfMissing(appObj: AppObject): Hideable;
5
5
  static get(appObjID: string, appObjects: AppObjectRepo): Hideable | undefined;
6
+ ignoreSerialization: boolean;
6
7
  private memoizedIsHidden;
7
8
  get isHidden(): boolean;
8
9
  set isHidden(val: boolean);
@@ -1 +1 @@
1
- {"version":3,"file":"Hideable.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAS,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAElC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ;IAShD,MAAM,CAAC,GAAG,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,GACxB,QAAQ,GAAG,SAAS;IAQvB,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAExB;gBAEW,SAAS,EAAE,SAAS;CAGjC"}
1
+ {"version":3,"file":"Hideable.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAS,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAElC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ;IAShD,MAAM,CAAC,GAAG,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,GACxB,QAAQ,GAAG,SAAS;IAQhB,mBAAmB,UAAS;IAEnC,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAExB;gBAEW,SAAS,EAAE,SAAS;CAGjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeHideableObjects.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,8BAAsB,wBACpB,SAAQ,WACR,YAAW,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAClD,IAAI,EAAE,MAAM,CAAsB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,IAAI,MAAM;IACjC,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,IAAI;IACP,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAC7D;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,GACnB,wBAAwB,CAE1B;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACvE,oBAAoB,SAAK;IAEzB,oBAAoB,EAAE,MAAM,IAAI,CAI9B;IAEF,cAAc,IAAI,MAAM;IAkBxB,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQvB,OAAO,CAAC,YAAY;IAmCpB,iBAAiB,IAAI,IAAI;gBAUb,MAAM,EAAE,SAAS;CAY9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"SerializeHideableObjects.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,8BAAsB,wBACpB,SAAQ,WACR,YAAW,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAClD,IAAI,EAAE,MAAM,CAAsB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,IAAI,MAAM;IACjC,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,IAAI;IACP,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAC7D;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,GACnB,wBAAwB,CAE1B;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACvE,oBAAoB,SAAK;IAEzB,oBAAoB,EAAE,MAAM,IAAI,CAI9B;IAEF,cAAc,IAAI,MAAM;IAmBxB,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQvB,OAAO,CAAC,YAAY;IAmCpB,iBAAiB,IAAI,IAAI;gBAUb,MAAM,EAAE,SAAS;CAY9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupLandmarks.d.ts","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBvD,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CA2CnE"}
1
+ {"version":3,"file":"setupLandmarks.d.ts","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBvD,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAqDnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.d.ts","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EAEX,cAAc,EACf,MAAM,aAAa,CAAC;AAMrB,8BAAsB,iBAAkB,SAAQ,WAAW;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;IAE3C,QAAQ,CAAC,WAAW,IAAI,OAAO;IAC/B,QAAQ,CAAC,cAAc,IAAI,OAAO;IAClC,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAE3D,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB,CAE3E"}
1
+ {"version":3,"file":"SelectAppObjectUC.d.ts","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EAEX,cAAc,EACf,MAAM,aAAa,CAAC;AAOrB,8BAAsB,iBAAkB,SAAQ,WAAW;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;IAE3C,QAAQ,CAAC,WAAW,IAAI,OAAO;IAC/B,QAAQ,CAAC,cAAc,IAAI,OAAO;IAClC,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAE3D,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB,CAE3E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/app",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "Public package of VIVED App Components",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",