@combeenation/3d-viewer 4.2.0 → 5.0.0-ar1

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 (89) 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 +96 -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.d.ts +1 -0
  13. package/dist/lib-cjs/api/classes/placementAnimation.js +2 -2
  14. package/dist/lib-cjs/api/classes/placementAnimation.js.map +1 -1
  15. package/dist/lib-cjs/api/classes/variant.js +26 -19
  16. package/dist/lib-cjs/api/classes/variant.js.map +1 -1
  17. package/dist/lib-cjs/api/classes/variantInstance.js +19 -19
  18. package/dist/lib-cjs/api/classes/variantInstance.js.map +1 -1
  19. package/dist/lib-cjs/api/classes/variantParameterizable.js.map +1 -1
  20. package/dist/lib-cjs/api/classes/viewer.d.ts +30 -0
  21. package/dist/lib-cjs/api/classes/viewer.js +117 -41
  22. package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
  23. package/dist/lib-cjs/api/classes/viewerLight.js +25 -25
  24. package/dist/lib-cjs/api/classes/viewerLight.js.map +1 -1
  25. package/dist/lib-cjs/api/internal/debugViewer.js +1 -2
  26. package/dist/lib-cjs/api/internal/debugViewer.js.map +1 -1
  27. package/dist/lib-cjs/api/internal/lensRendering.js.map +1 -1
  28. package/dist/lib-cjs/api/internal/sceneSetup.js +25 -22
  29. package/dist/lib-cjs/api/internal/sceneSetup.js.map +1 -1
  30. package/dist/lib-cjs/api/manager/animationManager.js +24 -15
  31. package/dist/lib-cjs/api/manager/animationManager.js.map +1 -1
  32. package/dist/lib-cjs/api/manager/gltfExportManager.js +1 -1
  33. package/dist/lib-cjs/api/manager/gltfExportManager.js.map +1 -1
  34. package/dist/lib-cjs/api/manager/sceneManager.js +3 -3
  35. package/dist/lib-cjs/api/manager/sceneManager.js.map +1 -1
  36. package/dist/lib-cjs/api/manager/variantInstanceManager.js +10 -7
  37. package/dist/lib-cjs/api/manager/variantInstanceManager.js.map +1 -1
  38. package/dist/lib-cjs/api/store/specStorage.js.map +1 -1
  39. package/dist/lib-cjs/api/util/babylonHelper.d.ts +1 -1
  40. package/dist/lib-cjs/api/util/babylonHelper.js +12 -15
  41. package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
  42. package/dist/lib-cjs/api/util/globalTypes.d.ts +32 -25
  43. package/dist/lib-cjs/api/util/resourceHelper.js +3 -1
  44. package/dist/lib-cjs/api/util/resourceHelper.js.map +1 -1
  45. package/dist/lib-cjs/api/util/stringHelper.d.ts +1 -1
  46. package/dist/lib-cjs/api/util/stringHelper.js +2 -2
  47. package/dist/lib-cjs/api/util/stringHelper.js.map +1 -1
  48. package/dist/lib-cjs/index.js +1 -0
  49. package/dist/lib-cjs/index.js.map +1 -1
  50. package/package.json +11 -7
  51. package/src/api/classes/animationInterface.ts +4 -6
  52. package/src/api/classes/dottedPath.ts +179 -187
  53. package/src/api/classes/element.ts +653 -621
  54. package/src/api/classes/event.ts +310 -313
  55. package/src/api/classes/eventBroadcaster.ts +47 -49
  56. package/src/api/classes/parameter.ts +394 -397
  57. package/src/api/classes/parameterObservable.ts +84 -83
  58. package/src/api/classes/parameterizable.ts +71 -73
  59. package/src/api/classes/placementAnimation.ts +130 -130
  60. package/src/api/classes/variant.ts +806 -778
  61. package/src/api/classes/variantInstance.ts +60 -52
  62. package/src/api/classes/variantParameterizable.ts +72 -67
  63. package/src/api/classes/viewer.ts +566 -490
  64. package/src/api/classes/viewerLight.ts +301 -301
  65. package/src/api/internal/debugViewer.ts +61 -53
  66. package/src/api/internal/lensRendering.ts +2 -3
  67. package/src/api/internal/sceneSetup.ts +144 -137
  68. package/src/api/manager/animationManager.ts +122 -97
  69. package/src/api/manager/gltfExportManager.ts +71 -0
  70. package/src/api/manager/sceneManager.ts +83 -86
  71. package/src/api/manager/variantInstanceManager.ts +234 -224
  72. package/src/api/store/specStorage.ts +48 -51
  73. package/src/api/util/babylonHelper.ts +329 -325
  74. package/src/api/util/globalTypes.ts +251 -246
  75. package/src/api/util/resourceHelper.ts +97 -109
  76. package/src/api/util/stringHelper.ts +13 -16
  77. package/src/buildinfo.json +2 -2
  78. package/src/commonjs.tsconfig.json +8 -11
  79. package/src/declaration.tsconfig.json +6 -8
  80. package/src/dev.ts +28 -29
  81. package/src/es6.tsconfig.json +8 -11
  82. package/src/index.ts +40 -39
  83. package/src/pagesconfig.json +4 -0
  84. package/src/tsconfig.json +30 -41
  85. package/src/tsconfig.types.json +8 -9
  86. package/src/types.d.ts +0 -1
  87. package/dist/lib-cjs/api/classes/elementParameterizable.d.ts +0 -14
  88. package/dist/lib-cjs/api/classes/elementParameterizable.js +0 -135
  89. package/dist/lib-cjs/api/classes/elementParameterizable.js.map +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
  }