@variantic/player 0.0.23 → 0.0.24

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.
@@ -1,3 +1,4 @@
1
1
  export * from './lib/engine';
2
2
  export * from './lib/publication';
3
3
  export * from './lib/documentation';
4
+ export * from './lib/studio';
@@ -1,13 +1,22 @@
1
1
  import type { TObjectConfiguration, TInteractionMode, TVasFile } from '@variantic/schemas/file-types/vas';
2
2
  import type { TPublication } from './publication';
3
3
  import type { TDocumentation } from './documentation';
4
- type TValue = string | number | boolean;
4
+ import type { TStudioShadowMapType, TVsmShadowQuality } from './studio';
5
+ export type TValue = string | number | boolean;
5
6
  export { TInteractionMode };
6
7
  export type TSettings = TVasFile['set']['configuration']['settings'] & {
7
8
  sceneSettings?: TVasFile['set']['configuration']['sceneSettings'] & {
8
9
  backgroundColor?: string | null;
9
10
  studioId?: number | null;
10
11
  envMap?: string | null;
12
+ toneMapping?: {
13
+ mode?: 'None' | 'Linear' | 'Reinhard' | 'Cineon' | 'ACESFilmic' | 'AgX' | 'Neutral';
14
+ exposure?: number;
15
+ };
16
+ shadowMap?: {
17
+ type?: TStudioShadowMapType;
18
+ vsmQuality?: TVsmShadowQuality;
19
+ };
11
20
  };
12
21
  cameraSettings?: TVasFile['set']['configuration']['cameraSettings'];
13
22
  flowsSettings?: TVasFile['set']['configuration']['flowsSettings'];
@@ -114,7 +123,7 @@ export type TRenderDataObject = Partial<{
114
123
  animation: TAnimationRenderData;
115
124
  tags: TRenderDataObjectTag[];
116
125
  }>;
117
- type TUniqueRenderDataObject = {
126
+ export type TUniqueRenderDataObject = {
118
127
  id: string;
119
128
  ref: string;
120
129
  } & TRenderDataObject;
@@ -140,17 +149,17 @@ export type TTreeObjectOverrides = Partial<{
140
149
  interaction: TInteractionMode;
141
150
  }>;
142
151
  export type TSnapType = 'point' | 'grid';
143
- type TSnapTypeMaker<T extends TSnapType, U extends Record<string, unknown>> = {
152
+ export type TSnapTypeMaker<T extends TSnapType, U extends Record<string, unknown>> = {
144
153
  id: string;
145
154
  type: T;
146
155
  data: U;
147
156
  snappedKeyPointIds: string[];
148
157
  };
149
- type TSnapPoint = TSnapTypeMaker<'point', {
158
+ export type TSnapPoint = TSnapTypeMaker<'point', {
150
159
  x: TValue;
151
160
  y: TValue;
152
161
  }>;
153
- type TSnapGrid = TSnapTypeMaker<'grid', {
162
+ export type TSnapGrid = TSnapTypeMaker<'grid', {
154
163
  cols: TValue;
155
164
  rows: TValue;
156
165
  }>;
@@ -166,21 +175,21 @@ export type TSnap = TSnapPoint | TSnapGrid;
166
175
  * Which means that we are referring to the grid (snaps array index 0) snap point
167
176
  * on row 0 and column 1
168
177
  */
169
- type TSnapIdentifierMaker<T extends TSnapType, U extends Record<string, unknown>> = {
178
+ export type TSnapIdentifierMaker<T extends TSnapType, U extends Record<string, unknown>> = {
170
179
  id: string;
171
180
  type: T;
172
181
  data: U;
173
182
  };
174
- type TSnapPointIdentifier = TSnapIdentifierMaker<'point', {
183
+ export type TSnapPointIdentifier = TSnapIdentifierMaker<'point', {
175
184
  x: number;
176
185
  y: number;
177
186
  }>;
178
- type TSnapGridIdentifier = TSnapIdentifierMaker<'grid', {
187
+ export type TSnapGridIdentifier = TSnapIdentifierMaker<'grid', {
179
188
  col: number;
180
189
  row: number;
181
190
  }>;
182
191
  export type TSnapIdentifier = TSnapPointIdentifier | TSnapGridIdentifier;
183
- type TCommonMaterialGroupProperties = {
192
+ export type TCommonMaterialGroupProperties = {
184
193
  hash: string;
185
194
  selected: string;
186
195
  alias: string;
@@ -192,7 +201,7 @@ export type TMaterialGroup = ({
192
201
  type: 'query';
193
202
  query: Record<string, any>;
194
203
  }) & TCommonMaterialGroupProperties;
195
- type TCommonSubcomponentGroupProperties = {
204
+ export type TCommonSubcomponentGroupProperties = {
196
205
  hash: string;
197
206
  selected: string;
198
207
  alias: string;
@@ -30,7 +30,6 @@ export type TBlockNumberPredefined = {
30
30
  type: 'number-predefined';
31
31
  value: number;
32
32
  options: number[];
33
- preferred: number[];
34
33
  };
35
34
  export type TBlockText = {
36
35
  type: 'text';
@@ -0,0 +1,81 @@
1
+ export type TStudioId = 0 | 1 | 2;
2
+ export type TStudioToneMappingMode = 'None' | 'Linear' | 'Reinhard' | 'Cineon' | 'ACESFilmic' | 'AgX' | 'Neutral';
3
+ export type TStudioShadowMapType = 'Basic' | 'PCF' | 'VSM';
4
+ export type TVsmShadowQuality = 'Performance' | 'Balanced' | 'Quality';
5
+ export type TStudioShadowMapConfig = {
6
+ type: TStudioShadowMapType;
7
+ vsmQuality: TVsmShadowQuality;
8
+ };
9
+ export type TStudioSceneConfig = {
10
+ backgroundColor: string | null;
11
+ envMap: string | null;
12
+ backgroundMode: 'color' | 'environment';
13
+ backgroundBlurriness: number;
14
+ backgroundIntensity: number;
15
+ environmentIntensity: number;
16
+ environmentRotationY: number;
17
+ shadowMap: TStudioShadowMapConfig;
18
+ toneMapping: {
19
+ mode: TStudioToneMappingMode;
20
+ exposure: number;
21
+ };
22
+ };
23
+ export type TStudioFloorConfig = {
24
+ activeFloor: boolean;
25
+ activeFloorShadow: boolean;
26
+ useFloorInAR: boolean;
27
+ reflection: {
28
+ enabled: boolean;
29
+ opacity: number;
30
+ fadeDistance: number;
31
+ };
32
+ floorSize: {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ floorSizeType: 'infinity' | 'likeObject' | 'custom';
37
+ selectedMaterialGroup: number | null;
38
+ selectedDefaultMaterial: number | null;
39
+ };
40
+ /**
41
+ * Settings a studio explicitly owns. Definitions only declare editable
42
+ * paths; the runtime fills in the remaining paths from compatibility defaults.
43
+ */
44
+ export type TStudioSceneSettings = Partial<Omit<TStudioSceneConfig, 'toneMapping' | 'shadowMap'>> & {
45
+ toneMapping?: Partial<TStudioSceneConfig['toneMapping']>;
46
+ shadowMap?: Partial<TStudioSceneConfig['shadowMap']>;
47
+ };
48
+ export type TStudioFloorSettings = Partial<Omit<TStudioFloorConfig, 'reflection' | 'floorSize'>> & {
49
+ reflection?: Partial<TStudioFloorConfig['reflection']>;
50
+ floorSize?: Partial<TStudioFloorConfig['floorSize']>;
51
+ };
52
+ export type TStudioSettings = {
53
+ scene?: TStudioSceneSettings;
54
+ floor?: TStudioFloorSettings;
55
+ };
56
+ /** Complete scene/floor settings after defaults and persisted overrides. */
57
+ export type TStudioResolvedSettings = {
58
+ scene: TStudioSceneConfig;
59
+ floor: TStudioFloorConfig;
60
+ };
61
+ /**
62
+ * Generic definition type keeps the schema package independent of Three.js.
63
+ * Viewer code supplies its builder context and light-group result types.
64
+ */
65
+ export type TStudioDefinition<TBuilderContext = unknown, TLightGroup = unknown> = {
66
+ id: TStudioId;
67
+ name: string;
68
+ settings: TStudioSettings;
69
+ configuration: {
70
+ createLights: (context: TBuilderContext) => TLightGroup;
71
+ };
72
+ };
73
+ /** Legacy persisted light override data is retained but never edited. */
74
+ export type TStudioLightsSettings = {
75
+ preset: 'directional' | 'area' | 'environment';
76
+ };
77
+ export type TStudioOverrides = {
78
+ scene?: TStudioSceneSettings;
79
+ lights?: Partial<TStudioLightsSettings>;
80
+ floor?: TStudioFloorSettings;
81
+ };
@@ -172,6 +172,32 @@ export declare const vasFileSchema: import("@sinclair/typebox").TObject<{
172
172
  }>>;
173
173
  outline: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
174
174
  enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
175
+ selected: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
176
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
177
+ thicknessPx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
178
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
179
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
180
+ alpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
181
+ }>>;
182
+ hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
183
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
184
+ alpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
185
+ }>>;
186
+ }>>;
187
+ hover: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
188
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
189
+ thicknessPx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
190
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
191
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
192
+ alpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
193
+ fillAlpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
194
+ }>>;
195
+ hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
196
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
197
+ alpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
198
+ fillAlpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
199
+ }>>;
200
+ }>>;
175
201
  edgeStrength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
176
202
  edgeGlow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
177
203
  edgeThickness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
@@ -262,6 +288,7 @@ export declare const vasFileSchema: import("@sinclair/typebox").TObject<{
262
288
  }>>;
263
289
  behavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
264
290
  onInsert: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"last">]>>;
291
+ applicationStrategy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"selected">, import("@sinclair/typebox").TLiteral<"all">]>>;
265
292
  }>>;
266
293
  }>>;
267
294
  subcomponents: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
@@ -291,16 +318,75 @@ export declare const vasFileSchema: import("@sinclair/typebox").TObject<{
291
318
  }>>;
292
319
  behavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
293
320
  onInsert: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"last">]>>;
321
+ applicationStrategy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"selected">, import("@sinclair/typebox").TLiteral<"all">]>>;
294
322
  }>>;
295
323
  }>>;
296
324
  }>>;
297
325
  sceneSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
326
+ studioId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
327
+ studios: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
328
+ scene: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
329
+ backgroundColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
330
+ envMap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
331
+ backgroundMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"color">, import("@sinclair/typebox").TLiteral<"environment">]>>;
332
+ backgroundBlurriness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
333
+ backgroundIntensity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
334
+ environmentIntensity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
335
+ environmentRotationY: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
336
+ shadowMap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
337
+ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"Basic">, import("@sinclair/typebox").TLiteral<"PCF">, import("@sinclair/typebox").TLiteral<"VSM">]>>;
338
+ vsmQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"Performance">, import("@sinclair/typebox").TLiteral<"Balanced">, import("@sinclair/typebox").TLiteral<"Quality">]>>;
339
+ }>>;
340
+ toneMapping: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
341
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"None">, import("@sinclair/typebox").TLiteral<"Linear">, import("@sinclair/typebox").TLiteral<"Reinhard">, import("@sinclair/typebox").TLiteral<"Cineon">, import("@sinclair/typebox").TLiteral<"ACESFilmic">, import("@sinclair/typebox").TLiteral<"AgX">, import("@sinclair/typebox").TLiteral<"Neutral">]>>;
342
+ exposure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
343
+ }>>;
344
+ }>>;
345
+ lights: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
346
+ preset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"directional">, import("@sinclair/typebox").TLiteral<"area">, import("@sinclair/typebox").TLiteral<"environment">]>>;
347
+ }>>;
348
+ floor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
349
+ activeFloor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
350
+ activeFloorShadow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
351
+ useFloorInAR: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
352
+ reflection: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
353
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
354
+ opacity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
355
+ fadeDistance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
356
+ }>>;
357
+ floorSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
358
+ x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
359
+ y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
360
+ }>>;
361
+ floorSizeType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"infinity">, import("@sinclair/typebox").TLiteral<"likeObject">, import("@sinclair/typebox").TLiteral<"custom">]>>;
362
+ selectedMaterialGroup: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
363
+ selectedDefaultMaterial: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
364
+ }>>;
365
+ }>>>;
298
366
  backgroundColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
299
367
  envMap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
368
+ backgroundMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"color">, import("@sinclair/typebox").TLiteral<"environment">]>>;
369
+ backgroundBlurriness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
370
+ backgroundIntensity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
371
+ environmentIntensity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
372
+ environmentRotationY: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
373
+ shadowMap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
374
+ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"Basic">, import("@sinclair/typebox").TLiteral<"PCF">, import("@sinclair/typebox").TLiteral<"VSM">]>>;
375
+ vsmQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"Performance">, import("@sinclair/typebox").TLiteral<"Balanced">, import("@sinclair/typebox").TLiteral<"Quality">]>>;
376
+ }>>;
377
+ toneMapping: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
378
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"None">, import("@sinclair/typebox").TLiteral<"Linear">, import("@sinclair/typebox").TLiteral<"Reinhard">, import("@sinclair/typebox").TLiteral<"Cineon">, import("@sinclair/typebox").TLiteral<"ACESFilmic">, import("@sinclair/typebox").TLiteral<"AgX">, import("@sinclair/typebox").TLiteral<"Neutral">]>>;
379
+ exposure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
380
+ }>>;
300
381
  floor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
301
382
  activeFloor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
302
383
  activeFloorShadow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
303
384
  useFloorInAR: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
385
+ reflection: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
386
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
387
+ opacity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
388
+ fadeDistance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
389
+ }>>;
304
390
  floorSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
305
391
  x: import("@sinclair/typebox").TNumber;
306
392
  y: import("@sinclair/typebox").TNumber;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@variantic/player",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"