@variantic/player 0.0.20 → 0.0.22

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.
@@ -0,0 +1,3 @@
1
+ export * from './lib/engine';
2
+ export * from './lib/publication';
3
+ export * from './lib/documentation';
@@ -0,0 +1,9 @@
1
+ export type TDocumentation = {
2
+ id: string;
3
+ parameters: {
4
+ name: string;
5
+ type: 'TEXT' | 'PROJECTION' | 'BOOL' | 'SOURCE_DATA';
6
+ uuid: string;
7
+ value: string;
8
+ }[];
9
+ };
@@ -0,0 +1,180 @@
1
+ import type { TObjectConfiguration, TInteractionMode, TVasFile } from '@variantic/schemas/file-types/vas';
2
+ import type { TPublication } from './publication';
3
+ import type { TDocumentation } from './documentation';
4
+ type TValue = string | number | boolean;
5
+ export { TInteractionMode };
6
+ export type TSettings = TVasFile['set']['configuration']['settings'] & {
7
+ sceneSettings?: TVasFile['set']['configuration']['sceneSettings'] & {
8
+ backgroundColor?: string | null;
9
+ studioId?: number | null;
10
+ envMap?: string | null;
11
+ };
12
+ cameraSettings?: TVasFile['set']['configuration']['cameraSettings'];
13
+ flowsSettings?: TVasFile['set']['configuration']['flowsSettings'];
14
+ };
15
+ export type TRootObjectData = {
16
+ id: string;
17
+ fileId: string;
18
+ transform: number[];
19
+ showInProductsList?: boolean;
20
+ singleObjectSelected?: boolean;
21
+ };
22
+ export type TRootObjectConfiguration = {
23
+ id: string;
24
+ fileId: string;
25
+ name?: string;
26
+ transform: number[];
27
+ interaction?: TInteractionMode;
28
+ configuration?: Record<string, TObjectConfiguration>;
29
+ };
30
+ export type TRootData = Partial<{
31
+ publication: TPublication;
32
+ documentation: TDocumentation;
33
+ }>;
34
+ export type TRenderDataObjectTag = `subcomponent:${string}`;
35
+ export type TRenderDataObject = Partial<{
36
+ controlledVisibility: boolean;
37
+ inAvailableSpace: boolean;
38
+ count: number;
39
+ positioning: number[];
40
+ transform: number[];
41
+ propagation: number[];
42
+ geometry: [string, Record<string, TValue>];
43
+ dimensionGeometry: [string, Record<string, TValue>];
44
+ importedGeometry: [string, Record<string, TValue>];
45
+ isGroup: boolean;
46
+ isImport: boolean;
47
+ interaction: TInteractionMode;
48
+ movementPlane: number[];
49
+ keyPoint: {
50
+ tags: string[];
51
+ snappedGridPlaneId?: string;
52
+ };
53
+ gridPlane: {
54
+ mode: 'static' | 'sticky';
55
+ priority: TValue;
56
+ tags: string[];
57
+ snaps: TSnap[];
58
+ };
59
+ boxCollider: {
60
+ tags: string[];
61
+ collision: boolean;
62
+ interact: boolean;
63
+ occluder: boolean;
64
+ };
65
+ dynamicConfiguration: Record<string, number>;
66
+ layers: number[];
67
+ dimensioning: Record<string, never>;
68
+ material: Record<string, {
69
+ blobUrl: string;
70
+ overrides?: Record<string, unknown>;
71
+ }>;
72
+ modifier: 'subtract' | 'intersect';
73
+ textureFit: {
74
+ offset: {
75
+ x: number | 'random';
76
+ y: number | 'random';
77
+ };
78
+ rotation: number | 'random';
79
+ scale: number;
80
+ flip: {
81
+ x: boolean;
82
+ y: boolean;
83
+ };
84
+ };
85
+ rendering: {
86
+ shadow: [boolean, boolean];
87
+ order: number;
88
+ };
89
+ tags: TRenderDataObjectTag[];
90
+ }>;
91
+ type TUniqueRenderDataObject = {
92
+ id: string;
93
+ ref: string;
94
+ } & TRenderDataObject;
95
+ export type TRenderData = {
96
+ entryObjects: number[];
97
+ tree: Record<string, number[]>;
98
+ objects: TUniqueRenderDataObject[];
99
+ activeDrag?: number;
100
+ };
101
+ export type TPricingSection = {
102
+ name: string;
103
+ table: string[][];
104
+ price: number;
105
+ priceColumnIndex: number;
106
+ };
107
+ export type TPricingData = {
108
+ sections: TPricingSection[];
109
+ finalPrice: number;
110
+ };
111
+ export type TTreeObjectOverrides = Partial<{
112
+ transform: number[];
113
+ movementPlane: number[];
114
+ interaction: TInteractionMode;
115
+ }>;
116
+ export type TSnapType = 'point' | 'grid';
117
+ type TSnapTypeMaker<T extends TSnapType, U extends Record<string, unknown>> = {
118
+ id: string;
119
+ type: T;
120
+ data: U;
121
+ snappedKeyPointIds: string[];
122
+ };
123
+ type TSnapPoint = TSnapTypeMaker<'point', {
124
+ x: TValue;
125
+ y: TValue;
126
+ }>;
127
+ type TSnapGrid = TSnapTypeMaker<'grid', {
128
+ cols: TValue;
129
+ rows: TValue;
130
+ }>;
131
+ export type TSnap = TSnapPoint | TSnapGrid;
132
+ /**
133
+ * Snaps because of different types
134
+ * have to be identified in different ways based
135
+ * on the type which snap point belongs to
136
+ *
137
+ * Example
138
+ * { type: 'grid', snapId: 0, data: { row: 0, col: 1 } } }
139
+ *
140
+ * Which means that we are referring to the grid (snaps array index 0) snap point
141
+ * on row 0 and column 1
142
+ */
143
+ type TSnapIdentifierMaker<T extends TSnapType, U extends Record<string, unknown>> = {
144
+ id: string;
145
+ type: T;
146
+ data: U;
147
+ };
148
+ type TSnapPointIdentifier = TSnapIdentifierMaker<'point', {
149
+ x: number;
150
+ y: number;
151
+ }>;
152
+ type TSnapGridIdentifier = TSnapIdentifierMaker<'grid', {
153
+ col: number;
154
+ row: number;
155
+ }>;
156
+ export type TSnapIdentifier = TSnapPointIdentifier | TSnapGridIdentifier;
157
+ type TCommonMaterialGroupProperties = {
158
+ hash: string;
159
+ selected: string;
160
+ alias: string;
161
+ };
162
+ export type TMaterialGroup = ({
163
+ type: 'list';
164
+ materials: string[];
165
+ } | {
166
+ type: 'query';
167
+ query: Record<string, any>;
168
+ }) & TCommonMaterialGroupProperties;
169
+ type TCommonSubcomponentGroupProperties = {
170
+ hash: string;
171
+ selected: string;
172
+ alias: string;
173
+ };
174
+ export type TSubcomponentGroup = ({
175
+ type: 'list';
176
+ assets: string[];
177
+ } | {
178
+ type: 'query';
179
+ query: Record<string, any>;
180
+ }) & TCommonSubcomponentGroupProperties;
@@ -0,0 +1,73 @@
1
+ export type TPublication = {
2
+ containers: TPublicationContainer[];
3
+ };
4
+ export type TPublicationContainer = {
5
+ id: string;
6
+ panels: TPublicationPanel[];
7
+ };
8
+ export type TPublicationPanel = {
9
+ id: string;
10
+ label: string;
11
+ events: TEvents;
12
+ blocks: TPublicationBlock[];
13
+ };
14
+ export type TPublicationBlock = {
15
+ id: string;
16
+ label: string;
17
+ events: TEvents;
18
+ kind: TBlockNumberRange | TBlockNumberPredefined | TBlockText | TBlockList;
19
+ };
20
+ export type TBlockNumberRange = {
21
+ type: 'number-range';
22
+ value: number;
23
+ range: {
24
+ min: number;
25
+ max: number;
26
+ };
27
+ preferred: number[];
28
+ };
29
+ export type TBlockNumberPredefined = {
30
+ type: 'number-predefined';
31
+ value: number;
32
+ options: number[];
33
+ preferred: number[];
34
+ };
35
+ export type TBlockText = {
36
+ type: 'text';
37
+ value: string;
38
+ };
39
+ export type TBlockList = {
40
+ type: 'list';
41
+ style: TBlockListDropdownStyle | TBlockListButtonsStyle | TBlockListDropdownImageStyle | TBlockListButtonsImageStyle;
42
+ selected: string;
43
+ options: Array<{
44
+ value: string;
45
+ label: string;
46
+ imageId?: string;
47
+ }>;
48
+ };
49
+ export type TBlockListDropdownStyle = {
50
+ type: 'dropdown';
51
+ };
52
+ export type TBlockListButtonsStyle = {
53
+ type: 'buttons';
54
+ align: 'content' | 'responsive';
55
+ };
56
+ export type TBlockListDropdownImageStyle = {
57
+ type: 'dropdownImage';
58
+ size: 'sm' | 'md' | 'lg';
59
+ };
60
+ export type TBlockListButtonsImageStyle = {
61
+ type: 'buttonsImage';
62
+ size: 'sm' | 'md' | 'lg';
63
+ shape: 'square' | 'portrait' | 'landscape';
64
+ };
65
+ export type TEvents = {
66
+ hover?: Array<{
67
+ type: 'layer';
68
+ layers: number[];
69
+ } | {
70
+ type: 'dimension';
71
+ ids: string[];
72
+ }>;
73
+ } | undefined;
@@ -0,0 +1,3 @@
1
+ export * from './lib/vas';
2
+ export * from './lib/object-configuration';
3
+ export * from './lib/interaction';
@@ -0,0 +1,3 @@
1
+ import { type Static } from '@sinclair/typebox';
2
+ export declare const interactionModeSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>;
3
+ export type TInteractionMode = Static<typeof interactionModeSchema>;
@@ -0,0 +1,25 @@
1
+ import { type Static } from '@sinclair/typebox';
2
+ export declare const objectConfigurationSchema: import("@sinclair/typebox").TObject<{
3
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
4
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
5
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
6
+ }>>;
7
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
8
+ selected: import("@sinclair/typebox").TString;
9
+ }>>>;
10
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
11
+ selected: import("@sinclair/typebox").TString;
12
+ }>>>;
13
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
14
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
15
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
16
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
17
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
18
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
19
+ }>>;
20
+ }>>;
21
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
22
+ snappedObject: import("@sinclair/typebox").TString;
23
+ }>>;
24
+ }>;
25
+ export type TObjectConfiguration = Static<typeof objectConfigurationSchema>;
@@ -0,0 +1,515 @@
1
+ import { type Static } from '@sinclair/typebox';
2
+ declare const presetSchema: import("@sinclair/typebox").TObject<{
3
+ id: import("@sinclair/typebox").TString;
4
+ name: import("@sinclair/typebox").TString;
5
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
+ configuration: import("@sinclair/typebox").TAny;
7
+ ignore: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
8
+ icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
9
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
10
+ }>;
11
+ declare const assemblyPresetRootSchema: import("@sinclair/typebox").TObject<{
12
+ id: import("@sinclair/typebox").TString;
13
+ fileId: import("@sinclair/typebox").TString;
14
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
+ transform: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
16
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
17
+ configuration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
18
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
19
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
20
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
21
+ }>>;
22
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
23
+ selected: import("@sinclair/typebox").TString;
24
+ }>>>;
25
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
26
+ selected: import("@sinclair/typebox").TString;
27
+ }>>>;
28
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
29
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
30
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
31
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
32
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
33
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
34
+ }>>;
35
+ }>>;
36
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
37
+ snappedObject: import("@sinclair/typebox").TString;
38
+ }>>;
39
+ }>>>;
40
+ structureConfiguration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
41
+ cameraAutoFitOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
42
+ showInProductsList: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
43
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
44
+ }>>;
45
+ }>;
46
+ declare const assemblyPresetConfigurationSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNull, import("@sinclair/typebox").TObject<{
47
+ roots: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
48
+ id: import("@sinclair/typebox").TString;
49
+ fileId: import("@sinclair/typebox").TString;
50
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ transform: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
52
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
53
+ configuration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
54
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
55
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
56
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
57
+ }>>;
58
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
59
+ selected: import("@sinclair/typebox").TString;
60
+ }>>>;
61
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
62
+ selected: import("@sinclair/typebox").TString;
63
+ }>>>;
64
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
65
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
66
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
67
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
68
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
69
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
70
+ }>>;
71
+ }>>;
72
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
73
+ snappedObject: import("@sinclair/typebox").TString;
74
+ }>>;
75
+ }>>>;
76
+ structureConfiguration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
77
+ cameraAutoFitOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
78
+ showInProductsList: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
79
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
80
+ }>>;
81
+ }>>;
82
+ singleObjectRootId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
83
+ }>]>;
84
+ declare const assemblyPresetSchema: import("@sinclair/typebox").TObject<{
85
+ id: import("@sinclair/typebox").TString;
86
+ name: import("@sinclair/typebox").TString;
87
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
88
+ configuration: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNull, import("@sinclair/typebox").TObject<{
89
+ roots: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
90
+ id: import("@sinclair/typebox").TString;
91
+ fileId: import("@sinclair/typebox").TString;
92
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
93
+ transform: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
94
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
95
+ configuration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
96
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
97
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
98
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
99
+ }>>;
100
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
101
+ selected: import("@sinclair/typebox").TString;
102
+ }>>>;
103
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
104
+ selected: import("@sinclair/typebox").TString;
105
+ }>>>;
106
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
107
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
108
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
109
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
110
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
111
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
112
+ }>>;
113
+ }>>;
114
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
115
+ snappedObject: import("@sinclair/typebox").TString;
116
+ }>>;
117
+ }>>>;
118
+ structureConfiguration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
119
+ cameraAutoFitOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
120
+ showInProductsList: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
121
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
122
+ }>>;
123
+ }>>;
124
+ singleObjectRootId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
125
+ }>]>;
126
+ ignore: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
127
+ icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
128
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
129
+ }>;
130
+ export declare const vasFileSchema: import("@sinclair/typebox").TObject<{
131
+ id: import("@sinclair/typebox").TString;
132
+ set: import("@sinclair/typebox").TObject<{
133
+ configuration: import("@sinclair/typebox").TObject<{
134
+ settings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
135
+ general: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
136
+ assemblyMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"multi-object">, import("@sinclair/typebox").TLiteral<"single-object">]>>;
137
+ }>>;
138
+ assetsPalette: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
139
+ nodes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
140
+ id: import("@sinclair/typebox").TNumber;
141
+ name: import("@sinclair/typebox").TString;
142
+ tags: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
143
+ icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
144
+ }>>>;
145
+ roots: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
146
+ tree: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>>;
147
+ linkedProperties: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
148
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
149
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
150
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
151
+ }>>;
152
+ styleSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
153
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
154
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sm">, import("@sinclair/typebox").TLiteral<"md">, import("@sinclair/typebox").TLiteral<"lg">]>;
155
+ orientation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"square">, import("@sinclair/typebox").TLiteral<"portrait">, import("@sinclair/typebox").TLiteral<"landscape">]>;
156
+ }>>;
157
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
158
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
159
+ }>>;
160
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
161
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
162
+ }>>;
163
+ }>>;
164
+ defaultNodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
165
+ patternType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"hierarchical">, import("@sinclair/typebox").TLiteral<"breadcrumbs">]>>;
166
+ addingAssetsMethod: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"dragAndDrop">, import("@sinclair/typebox").TLiteral<"clickToAdd">]>>;
167
+ sortingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
168
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"property">]>;
169
+ order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
170
+ }>>;
171
+ }>>;
172
+ outline: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
173
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
174
+ edgeStrength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
175
+ edgeGlow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
176
+ edgeThickness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
177
+ pulsePeriod: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
178
+ visibleEdgeColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
179
+ hiddenEdgeColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
180
+ }>>;
181
+ highlight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
182
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
183
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
184
+ blinkDurationMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
185
+ pulseCount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
186
+ lineOpacityStart: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
187
+ lineOpacityEnd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
188
+ boxOpacityStart: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
189
+ boxOpacityEnd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
190
+ }>>;
191
+ dimensions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
192
+ offsetX: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
193
+ offsetY: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
194
+ offsetZ: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
195
+ }>>;
196
+ autoSnap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
197
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
198
+ delay: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
199
+ distance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
200
+ distanceTolerance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
201
+ lookupRadiusPx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
202
+ rotationPreviewRadiusPx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
203
+ }>>;
204
+ drag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
205
+ minimumDropDistance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
206
+ showGridHelper: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
207
+ interactionStrategy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"directDrag">, import("@sinclair/typebox").TLiteral<"pressMoveThreshold">, import("@sinclair/typebox").TLiteral<"holdToDrag">]>>;
208
+ desktopHoldDelayMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
209
+ touchHoldDelayMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
210
+ dragStartThresholdPx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
211
+ clickTolerancePx: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
212
+ selectDraggedObjectOnDrop: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
213
+ }>>;
214
+ postprocessing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
215
+ gtao: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
216
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
217
+ blendIntensity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
218
+ radius: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
219
+ samples: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
220
+ distanceFallOff: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
221
+ screenSpaceRadius: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
222
+ denoiseRadius: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
223
+ denoiseSamples: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
224
+ }>>;
225
+ outlineEffect: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
226
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
227
+ thickness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
228
+ color: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
229
+ alpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
230
+ }>>;
231
+ }>>;
232
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
233
+ linkedProperties: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
234
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
235
+ thumbnail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
236
+ }>>;
237
+ styleSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
238
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
239
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sm">, import("@sinclair/typebox").TLiteral<"md">, import("@sinclair/typebox").TLiteral<"lg">]>;
240
+ orientation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"square">, import("@sinclair/typebox").TLiteral<"portrait">, import("@sinclair/typebox").TLiteral<"landscape">]>;
241
+ }>>;
242
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
243
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
244
+ }>>;
245
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
246
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
247
+ }>>;
248
+ }>>;
249
+ materialsSortingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
250
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"property">]>;
251
+ order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
252
+ }>>;
253
+ materialGroupsSortingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
254
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"property">]>;
255
+ order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
256
+ }>>;
257
+ behavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
258
+ onInsert: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"last">]>>;
259
+ }>>;
260
+ }>>;
261
+ subcomponents: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
262
+ linkedProperties: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
263
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
264
+ thumbnail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
265
+ }>>;
266
+ styleSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
267
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
268
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sm">, import("@sinclair/typebox").TLiteral<"md">, import("@sinclair/typebox").TLiteral<"lg">]>;
269
+ orientation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"square">, import("@sinclair/typebox").TLiteral<"portrait">, import("@sinclair/typebox").TLiteral<"landscape">]>;
270
+ }>>;
271
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
272
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
273
+ }>>;
274
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
275
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
276
+ }>>;
277
+ }>>;
278
+ subcomponentsSortingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
279
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"property">]>;
280
+ order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
281
+ }>>;
282
+ subcomponentGroupsSortingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
283
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"property">]>;
284
+ order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
285
+ }>>;
286
+ behavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
287
+ onInsert: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"last">]>>;
288
+ }>>;
289
+ }>>;
290
+ }>>;
291
+ sceneSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
292
+ backgroundColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
293
+ envMap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
294
+ floor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
295
+ activeFloor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
296
+ activeFloorShadow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
297
+ useFloorInAR: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
298
+ floorSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
299
+ x: import("@sinclair/typebox").TNumber;
300
+ y: import("@sinclair/typebox").TNumber;
301
+ }>>;
302
+ floorSizeType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"infinity">, import("@sinclair/typebox").TLiteral<"likeObject">, import("@sinclair/typebox").TLiteral<"custom">]>>;
303
+ selectedMaterialGroup: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
304
+ selectedDefaultMaterial: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
305
+ }>>;
306
+ layout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
307
+ colors: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
308
+ primaryColor: import("@sinclair/typebox").TString;
309
+ secondaryColor: import("@sinclair/typebox").TString;
310
+ }>>;
311
+ defaultLayoutMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"configuration">, import("@sinclair/typebox").TLiteral<"materials">]>>;
312
+ }>>;
313
+ }>>;
314
+ pricingSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
315
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
316
+ configId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
317
+ }>>;
318
+ unitsSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
319
+ price: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
320
+ roundType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"round">, import("@sinclair/typebox").TLiteral<"ceil">, import("@sinclair/typebox").TLiteral<"floor">]>>;
321
+ precision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
322
+ step: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
323
+ }>>;
324
+ }>>;
325
+ documentation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
326
+ fileUuid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
327
+ parameters: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
328
+ name: import("@sinclair/typebox").TString;
329
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"TEXT">, import("@sinclair/typebox").TLiteral<"PROJECTION">, import("@sinclair/typebox").TLiteral<"BOOL">, import("@sinclair/typebox").TLiteral<"SOURCE_DATA">]>;
330
+ uuid: import("@sinclair/typebox").TString;
331
+ value: import("@sinclair/typebox").TString;
332
+ }>>>;
333
+ }>>;
334
+ presetsSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
335
+ presets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
336
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
337
+ items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
338
+ id: import("@sinclair/typebox").TString;
339
+ name: import("@sinclair/typebox").TString;
340
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
341
+ configuration: import("@sinclair/typebox").TAny;
342
+ ignore: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
343
+ icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
344
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
345
+ }>>>;
346
+ selectedId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
347
+ styleSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
348
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
349
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sm">, import("@sinclair/typebox").TLiteral<"md">, import("@sinclair/typebox").TLiteral<"lg">]>;
350
+ orientation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"square">, import("@sinclair/typebox").TLiteral<"portrait">, import("@sinclair/typebox").TLiteral<"landscape">]>;
351
+ }>>;
352
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
353
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
354
+ }>>;
355
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
356
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
357
+ }>>;
358
+ }>>;
359
+ }>>;
360
+ assemblyPresets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
361
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
362
+ items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
363
+ id: import("@sinclair/typebox").TString;
364
+ name: import("@sinclair/typebox").TString;
365
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
366
+ configuration: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNull, import("@sinclair/typebox").TObject<{
367
+ roots: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
368
+ id: import("@sinclair/typebox").TString;
369
+ fileId: import("@sinclair/typebox").TString;
370
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
371
+ transform: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
372
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
373
+ configuration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
374
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
375
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
376
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
377
+ }>>;
378
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
379
+ selected: import("@sinclair/typebox").TString;
380
+ }>>>;
381
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
382
+ selected: import("@sinclair/typebox").TString;
383
+ }>>>;
384
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
385
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
386
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
387
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
388
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
389
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
390
+ }>>;
391
+ }>>;
392
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
393
+ snappedObject: import("@sinclair/typebox").TString;
394
+ }>>;
395
+ }>>>;
396
+ structureConfiguration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
397
+ cameraAutoFitOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
398
+ showInProductsList: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
399
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
400
+ }>>;
401
+ }>>;
402
+ singleObjectRootId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
403
+ }>]>;
404
+ ignore: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
405
+ icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
406
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
407
+ }>>>;
408
+ selectedId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
409
+ styleSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
410
+ image: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
411
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sm">, import("@sinclair/typebox").TLiteral<"md">, import("@sinclair/typebox").TLiteral<"lg">]>;
412
+ orientation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"square">, import("@sinclair/typebox").TLiteral<"portrait">, import("@sinclair/typebox").TLiteral<"landscape">]>;
413
+ }>>;
414
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
415
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
416
+ }>>;
417
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
418
+ visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
419
+ }>>;
420
+ }>>;
421
+ }>>;
422
+ }>>;
423
+ cameraSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
424
+ cameraType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"perspective">, import("@sinclair/typebox").TLiteral<"orthographic">]>>;
425
+ enabledLayers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>>;
426
+ enablePan: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
427
+ enableRotate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
428
+ blockRotationAxes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
429
+ x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
430
+ y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
431
+ z: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
432
+ }>>;
433
+ infinityRotationAxes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
434
+ x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
435
+ y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
436
+ }>>;
437
+ blockMoveUnderFloor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
438
+ zoomBoundaries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
439
+ min: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
440
+ max: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
441
+ }>>;
442
+ rotateBoundaries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
443
+ x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
444
+ min: import("@sinclair/typebox").TNumber;
445
+ max: import("@sinclair/typebox").TNumber;
446
+ }>>;
447
+ y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
448
+ min: import("@sinclair/typebox").TNumber;
449
+ max: import("@sinclair/typebox").TNumber;
450
+ }>>;
451
+ }>>;
452
+ enableAutoRotate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
453
+ autoRotateActivationTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
454
+ autoRotateSpeed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
455
+ cameraProperties: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
456
+ near: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
457
+ far: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
458
+ }>>;
459
+ }>>;
460
+ flowsSettings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
461
+ selectedFlowIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
462
+ }>>;
463
+ }>;
464
+ structure: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
465
+ type: import("@sinclair/typebox").TLiteral<"set-item">;
466
+ uuid: import("@sinclair/typebox").TString;
467
+ name: import("@sinclair/typebox").TString;
468
+ model: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
469
+ type: import("@sinclair/typebox").TLiteral<"cabinet">;
470
+ fileId: import("@sinclair/typebox").TString;
471
+ configuration: import("@sinclair/typebox").TObject<{
472
+ cameraAutoFitOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
473
+ showInProductsList: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
474
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
475
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
476
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
477
+ }>;
478
+ objectsConfiguration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
479
+ transform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
480
+ publication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
481
+ blocks: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
482
+ }>>;
483
+ materials: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
484
+ selected: import("@sinclair/typebox").TString;
485
+ }>>>;
486
+ subcomponent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
487
+ selected: import("@sinclair/typebox").TString;
488
+ }>>>;
489
+ interaction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"select-only">, import("@sinclair/typebox").TLiteral<"select-and-drag">]>>;
490
+ draggable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
491
+ movementPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
492
+ gridPlane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
493
+ snaps: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
494
+ snappedObjects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
495
+ }>>;
496
+ }>>;
497
+ keyPoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
498
+ snappedObject: import("@sinclair/typebox").TString;
499
+ }>>;
500
+ }>>>;
501
+ }>, import("@sinclair/typebox").TObject<{
502
+ type: import("@sinclair/typebox").TLiteral<"scene">;
503
+ fileId: import("@sinclair/typebox").TString;
504
+ }>, import("@sinclair/typebox").TObject<{
505
+ type: import("@sinclair/typebox").TLiteral<"space-root">;
506
+ }>]>;
507
+ }>>;
508
+ }>;
509
+ }>;
510
+ export type TVasFile = Static<typeof vasFileSchema>;
511
+ export type TPreset = Static<typeof presetSchema>;
512
+ export type TAssemblyPreset = Static<typeof assemblyPresetSchema>;
513
+ export type TAssemblyPresetRoot = Static<typeof assemblyPresetRootSchema>;
514
+ export type TAssemblyPresetConfiguration = Static<typeof assemblyPresetConfigurationSchema>;
515
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type Emittery from 'emittery';
2
2
  import type { TWebComponentEvents } from '@variantic/schemas/web-component-apis/player/events';
3
+ import type { TLayoutSettings } from '@variantic/schemas/web-component-apis/player/viewer';
3
4
  /**
4
5
  * @category Addons API
5
6
  */
@@ -9,5 +10,9 @@ export type TLayoutApi = {
9
10
  * Enables or disables fullscreen mode based on the given state.
10
11
  */
11
12
  toggleFullscreen: (state: boolean) => void;
13
+ /**
14
+ * Applies a subset of layout settings without remounting the addon.
15
+ */
16
+ applyLayoutSettings: (settingsPatch: Partial<TLayoutSettings>) => void;
12
17
  };
13
18
  export type TLayoutApiEvents = TWebComponentEvents;
@@ -1,4 +1,5 @@
1
1
  import type Emittery from 'emittery';
2
+ import type { TSettings } from '@variantic/schemas/engine';
2
3
  import type { TTimestampEventPayload, TWebComponentEvents, TMouseClickedPayload, TMouseMovedPayload } from '@variantic/schemas/web-component-apis/player/events';
3
4
  /**
4
5
  * @category Addons API
@@ -82,6 +83,10 @@ export type TViewerApi = {
82
83
  * Applies the specified camera settings.
83
84
  */
84
85
  setCameraSettings(settings: TCameraSettings): void;
86
+ /**
87
+ * Applies a subset of viewer settings without reloading the whole player.
88
+ */
89
+ applySettings(settings: Partial<TSettings>): Promise<void>;
85
90
  /**
86
91
  * Moves the camera based on the provided parameters.
87
92
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@variantic/player",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"