@combeenation/3d-viewer 4.2.0 → 4.3.0-alpha1

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 (80) hide show
  1. package/README.md +2 -2
  2. package/dist/lib-cjs/api/classes/dottedPath.js +2 -5
  3. package/dist/lib-cjs/api/classes/dottedPath.js.map +1 -1
  4. package/dist/lib-cjs/api/classes/element.js +89 -66
  5. package/dist/lib-cjs/api/classes/element.js.map +1 -1
  6. package/dist/lib-cjs/api/classes/event.js.map +1 -1
  7. package/dist/lib-cjs/api/classes/eventBroadcaster.js.map +1 -1
  8. package/dist/lib-cjs/api/classes/parameter.js +3 -2
  9. package/dist/lib-cjs/api/classes/parameter.js.map +1 -1
  10. package/dist/lib-cjs/api/classes/parameterObservable.js.map +1 -1
  11. package/dist/lib-cjs/api/classes/parameterizable.js.map +1 -1
  12. package/dist/lib-cjs/api/classes/placementAnimation.js +2 -2
  13. package/dist/lib-cjs/api/classes/placementAnimation.js.map +1 -1
  14. package/dist/lib-cjs/api/classes/variant.js +26 -19
  15. package/dist/lib-cjs/api/classes/variant.js.map +1 -1
  16. package/dist/lib-cjs/api/classes/variantInstance.js +19 -19
  17. package/dist/lib-cjs/api/classes/variantInstance.js.map +1 -1
  18. package/dist/lib-cjs/api/classes/variantParameterizable.js.map +1 -1
  19. package/dist/lib-cjs/api/classes/viewer.d.ts +5 -0
  20. package/dist/lib-cjs/api/classes/viewer.js +32 -17
  21. package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
  22. package/dist/lib-cjs/api/classes/viewerLight.js +24 -24
  23. package/dist/lib-cjs/api/classes/viewerLight.js.map +1 -1
  24. package/dist/lib-cjs/api/internal/debugViewer.js +1 -2
  25. package/dist/lib-cjs/api/internal/debugViewer.js.map +1 -1
  26. package/dist/lib-cjs/api/internal/lensRendering.js.map +1 -1
  27. package/dist/lib-cjs/api/internal/sceneSetup.js +25 -22
  28. package/dist/lib-cjs/api/internal/sceneSetup.js.map +1 -1
  29. package/dist/lib-cjs/api/manager/animationManager.js +24 -15
  30. package/dist/lib-cjs/api/manager/animationManager.js.map +1 -1
  31. package/dist/lib-cjs/api/manager/sceneManager.js +3 -3
  32. package/dist/lib-cjs/api/manager/sceneManager.js.map +1 -1
  33. package/dist/lib-cjs/api/manager/variantInstanceManager.js +10 -7
  34. package/dist/lib-cjs/api/manager/variantInstanceManager.js.map +1 -1
  35. package/dist/lib-cjs/api/store/specStorage.js.map +1 -1
  36. package/dist/lib-cjs/api/util/babylonHelper.d.ts +1 -1
  37. package/dist/lib-cjs/api/util/babylonHelper.js +12 -15
  38. package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
  39. package/dist/lib-cjs/api/util/globalTypes.d.ts +25 -24
  40. package/dist/lib-cjs/api/util/resourceHelper.js +3 -1
  41. package/dist/lib-cjs/api/util/resourceHelper.js.map +1 -1
  42. package/dist/lib-cjs/api/util/stringHelper.d.ts +1 -1
  43. package/dist/lib-cjs/api/util/stringHelper.js +2 -2
  44. package/dist/lib-cjs/api/util/stringHelper.js.map +1 -1
  45. package/dist/lib-cjs/index.js.map +1 -1
  46. package/package.json +7 -3
  47. package/src/api/classes/animationInterface.ts +4 -6
  48. package/src/api/classes/dottedPath.ts +179 -187
  49. package/src/api/classes/element.ts +644 -621
  50. package/src/api/classes/event.ts +310 -313
  51. package/src/api/classes/eventBroadcaster.ts +47 -49
  52. package/src/api/classes/parameter.ts +394 -397
  53. package/src/api/classes/parameterObservable.ts +84 -83
  54. package/src/api/classes/parameterizable.ts +71 -73
  55. package/src/api/classes/placementAnimation.ts +130 -130
  56. package/src/api/classes/variant.ts +806 -778
  57. package/src/api/classes/variantInstance.ts +60 -52
  58. package/src/api/classes/variantParameterizable.ts +72 -67
  59. package/src/api/classes/viewer.ts +531 -489
  60. package/src/api/classes/viewerLight.ts +300 -300
  61. package/src/api/internal/debugViewer.ts +61 -53
  62. package/src/api/internal/lensRendering.ts +2 -3
  63. package/src/api/internal/sceneSetup.ts +144 -137
  64. package/src/api/manager/animationManager.ts +122 -97
  65. package/src/api/manager/sceneManager.ts +83 -86
  66. package/src/api/manager/variantInstanceManager.ts +234 -224
  67. package/src/api/store/specStorage.ts +48 -51
  68. package/src/api/util/babylonHelper.ts +329 -325
  69. package/src/api/util/globalTypes.ts +244 -245
  70. package/src/api/util/resourceHelper.ts +97 -109
  71. package/src/api/util/stringHelper.ts +13 -16
  72. package/src/buildinfo.json +2 -2
  73. package/src/commonjs.tsconfig.json +8 -11
  74. package/src/declaration.tsconfig.json +6 -8
  75. package/src/dev.ts +28 -28
  76. package/src/es6.tsconfig.json +8 -11
  77. package/src/index.ts +39 -39
  78. package/src/tsconfig.json +30 -41
  79. package/src/tsconfig.types.json +8 -9
  80. package/src/types.d.ts +0 -1
@@ -9,19 +9,22 @@ import { Variant } from './variant';
9
9
  * Class VariantInstance.
10
10
  */
11
11
  export class VariantInstance extends EventBroadcaster {
12
+ /**
13
+ * Constructor
14
+ */
15
+ public constructor(public variant: Variant, public name: string) {
16
+ super();
17
+ }
12
18
 
13
- /**
14
- * Constructor
15
- */
16
- public constructor( public variant: Variant, public name: string ) {
17
- super();
18
- }
19
-
20
- /**
21
- * WORK IN PROGRESS
22
- */
23
- public translate( joint: DottedPathArgument, variantInstance: VariantInstance, variantInstanceJoint: DottedPathArgument ): VariantInstance {
24
- /*
19
+ /**
20
+ * WORK IN PROGRESS
21
+ */
22
+ public translate(
23
+ joint: DottedPathArgument,
24
+ variantInstance: VariantInstance,
25
+ variantInstanceJoint: DottedPathArgument
26
+ ): VariantInstance {
27
+ /*
25
28
  joint = DottedPath.create( joint );
26
29
  variantInstanceJoint = DottedPath.create( variantInstanceJoint );
27
30
  const jointNode = variantInstance.variant.getNode( joint.path );
@@ -41,49 +44,54 @@ export class VariantInstance extends EventBroadcaster {
41
44
  // node.rotate(Axis.Z, differenceVectorRotation.z, Space.WORLD );
42
45
  } );
43
46
  */
44
- return this;
45
- }
46
-
47
- /**
48
- * A proxy for {@link Variant.getElement}.
49
- */
50
- public async getElement( dottedPath: DottedPathArgument ): Promise<Element> {
51
- return this.variant.getElement( dottedPath );
52
- }
47
+ return this;
48
+ }
53
49
 
54
- /**
55
- * A proxy for {@link Variant.getViewerLight}.
56
- */
57
- public async getViewerLight( dottedPath: DottedPathArgument ): Promise<ViewerLight> {
58
- return this.variant.getViewerLight( dottedPath );
59
- }
50
+ /**
51
+ * A proxy for {@link Variant.getElement}.
52
+ */
53
+ public async getElement(dottedPath: DottedPathArgument): Promise<Element> {
54
+ return this.variant.getElement(dottedPath);
55
+ }
60
56
 
61
- /**
62
- * A proxy for {@link Variant.getNode}.
63
- */
64
- public async getNode( elementDottedPath: DottedPathArgument, nodeDottedPath: DottedPathArgument ): Promise<TransformNode> {
65
- return this.variant.getNode( elementDottedPath, nodeDottedPath );
66
- }
57
+ /**
58
+ * A proxy for {@link Variant.getViewerLight}.
59
+ */
60
+ public async getViewerLight(dottedPath: DottedPathArgument): Promise<ViewerLight> {
61
+ return this.variant.getViewerLight(dottedPath);
62
+ }
67
63
 
68
- /**
69
- * A proxy for {@link Variant.getMesh}.
70
- */
71
- public async getMesh( elementDottedPath: DottedPathArgument, meshDottedPath: DottedPathArgument ): Promise<Mesh|null> {
72
- return this.variant.getMesh( elementDottedPath, meshDottedPath );
73
- }
64
+ /**
65
+ * A proxy for {@link Variant.getNode}.
66
+ */
67
+ public async getNode(
68
+ elementDottedPath: DottedPathArgument,
69
+ nodeDottedPath: DottedPathArgument
70
+ ): Promise<TransformNode> {
71
+ return this.variant.getNode(elementDottedPath, nodeDottedPath);
72
+ }
74
73
 
75
- /**
76
- * A proxy for {@link Variant.commitParameters}.
77
- */
78
- public async commitParameters( parameters?: ParameterBag ): Promise<Variant> {
79
- return this.variant.commitParameters( parameters );
80
- }
74
+ /**
75
+ * A proxy for {@link Variant.getMesh}.
76
+ */
77
+ public async getMesh(
78
+ elementDottedPath: DottedPathArgument,
79
+ meshDottedPath: DottedPathArgument
80
+ ): Promise<Mesh | null> {
81
+ return this.variant.getMesh(elementDottedPath, meshDottedPath);
82
+ }
81
83
 
82
- /**
83
- * A proxy for {@link ParameterObservable.commitParameter}.
84
- */
85
- public async commitParameter( parameter: string, value: ParameterValue ): Promise<ParameterObservable> {
86
- return this.variant.commitParameter( parameter, value );
87
- }
84
+ /**
85
+ * A proxy for {@link Variant.commitParameters}.
86
+ */
87
+ public async commitParameters(parameters?: ParameterBag): Promise<Variant> {
88
+ return this.variant.commitParameters(parameters);
89
+ }
88
90
 
89
- }
91
+ /**
92
+ * A proxy for {@link ParameterObservable.commitParameter}.
93
+ */
94
+ public async commitParameter(parameter: string, value: ParameterValue): Promise<ParameterObservable> {
95
+ return this.variant.commitParameter(parameter, value);
96
+ }
97
+ }
@@ -7,74 +7,79 @@ import { mergeMaps } from './../util/resourceHelper';
7
7
  import { camelToSnakeCase } from './../util/stringHelper';
8
8
 
9
9
  export abstract class VariantParameterizable extends Parameterizable {
10
+ protected readonly _parameterObservers: Map<string, ParameterObserver[]> = new Map();
10
11
 
11
- protected readonly _parameterObservers: Map<string, ParameterObserver[]> = new Map();
12
+ protected constructor(public readonly variant: Variant, public readonly name: string) {
13
+ super();
14
+ }
12
15
 
13
- protected constructor( public readonly variant: Variant,
14
- public readonly name: string ) {
15
- super();
16
- }
17
-
18
- /**
19
- * Gets the inherited parameters from the {@link Variant} with cleaned {@link Parameterizable} prefix.
20
- */
21
- get inheritedParameters(): ParameterBag {
22
- const parameterBag: ParameterBag = {};
23
- for( const parameter in this.variant.inheritedParameters ) {
24
- const dpp = DottedPath.create( parameter );
25
- if( dpp.parts.length !== 1 ) {
26
- continue;
27
- }
28
- parameterBag[parameter] = this.variant.inheritedParameters[parameter];
29
- }
30
- for( const parameter in this.variant.inheritedParameters ) {
31
- const dpp = DottedPath.create( parameter );
32
- if( dpp.firstPart !== this.name ) {
33
- continue;
34
- }
35
- dpp.shiftPart();
36
- parameterBag[dpp.path] = this.variant.inheritedParameters[parameter];
37
- }
38
- return parameterBag;
39
- }
40
-
41
- /**
42
- * Places the given {@link ParameterBag} in the {@link VariantParameterizable}'s parameters, replaces all patterns in the
43
- * {@link StructureJson} and broadcasts all {@link ParameterObserver}s.
44
- */
45
- public async commitParameters( parameters?: ParameterBag ): Promise<VariantParameterizable> {
46
- if( !parameters ) {
47
- parameters = {};
48
- }
49
- const oldParameters = cloneDeep( this.parameters );
50
- merge( this.parameters, parameters );
51
- // handle parameter observers
52
- let observerPromises: Promise<void | ParameterObserver>[] = [];
53
- for( const parameter in this.parameters ) {
54
- const oldParameterValue = oldParameters[parameter];
55
- const newParameterValue = this.parameters[parameter];
56
- this.variant.assertParameter( this.variant.inheritedParameterDeclaration, parameter, newParameterValue );
57
- if( oldParameterValue === newParameterValue ) {
58
- continue;
59
- }
60
- // parameter changed
61
- const parameterObservers = mergeMaps( this._parameterObservers, this.parameterObservers );
62
- if( parameterObservers.has( parameter ) ) {
63
- const observers = parameterObservers.get( parameter )!;
64
- observerPromises = concat( observerPromises, observers.map( observer => {
65
- const observerResult = observer( this, oldParameterValue, newParameterValue );
66
- const observerPromise = Promise.resolve( observerResult );
67
- observerPromise.then( () => {
68
- const clsName = camelToSnakeCase( this.constructor.name ).toUpperCase();
69
- this.broadcastEvent( get( Event, clsName + '_PARAMETER_COMMITTED' ),
70
- this, parameter, oldParameterValue, newParameterValue );
71
- } );
72
- return observerPromise;
73
- } ) );
74
- }
75
- }
76
- await Promise.all( observerPromises );
77
- return this;
78
- }
16
+ /**
17
+ * Gets the inherited parameters from the {@link Variant} with cleaned {@link Parameterizable} prefix.
18
+ */
19
+ get inheritedParameters(): ParameterBag {
20
+ const parameterBag: ParameterBag = {};
21
+ for (const parameter in this.variant.inheritedParameters) {
22
+ const dpp = DottedPath.create(parameter);
23
+ if (dpp.parts.length !== 1) {
24
+ continue;
25
+ }
26
+ parameterBag[parameter] = this.variant.inheritedParameters[parameter];
27
+ }
28
+ for (const parameter in this.variant.inheritedParameters) {
29
+ const dpp = DottedPath.create(parameter);
30
+ if (dpp.firstPart !== this.name) {
31
+ continue;
32
+ }
33
+ dpp.shiftPart();
34
+ parameterBag[dpp.path] = this.variant.inheritedParameters[parameter];
35
+ }
36
+ return parameterBag;
37
+ }
79
38
 
39
+ /**
40
+ * Places the given {@link ParameterBag} in the {@link VariantParameterizable}'s parameters, replaces all patterns in the
41
+ * {@link StructureJson} and broadcasts all {@link ParameterObserver}s.
42
+ */
43
+ public async commitParameters(parameters?: ParameterBag): Promise<VariantParameterizable> {
44
+ if (!parameters) {
45
+ parameters = {};
46
+ }
47
+ const oldParameters = cloneDeep(this.parameters);
48
+ merge(this.parameters, parameters);
49
+ // handle parameter observers
50
+ let observerPromises: Promise<void | ParameterObserver>[] = [];
51
+ for (const parameter in this.parameters) {
52
+ const oldParameterValue = oldParameters[parameter];
53
+ const newParameterValue = this.parameters[parameter];
54
+ this.variant.assertParameter(this.variant.inheritedParameterDeclaration, parameter, newParameterValue);
55
+ if (oldParameterValue === newParameterValue) {
56
+ continue;
57
+ }
58
+ // parameter changed
59
+ const parameterObservers = mergeMaps(this._parameterObservers, this.parameterObservers);
60
+ if (parameterObservers.has(parameter)) {
61
+ const observers = parameterObservers.get(parameter)!;
62
+ observerPromises = concat(
63
+ observerPromises,
64
+ observers.map(observer => {
65
+ const observerResult = observer(this, oldParameterValue, newParameterValue);
66
+ const observerPromise = Promise.resolve(observerResult);
67
+ observerPromise.then(() => {
68
+ const clsName = camelToSnakeCase(this.constructor.name).toUpperCase();
69
+ this.broadcastEvent(
70
+ get(Event, clsName + '_PARAMETER_COMMITTED'),
71
+ this,
72
+ parameter,
73
+ oldParameterValue,
74
+ newParameterValue
75
+ );
76
+ });
77
+ return observerPromise;
78
+ })
79
+ );
80
+ }
81
+ }
82
+ await Promise.all(observerPromises);
83
+ return this;
84
+ }
80
85
  }