@layoutit/polycss-morph 0.2.9
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.
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +298 -0
- package/dist/index.d.ts +298 -0
- package/dist/index.js +1 -0
- package/dist/prepare.cjs +1 -0
- package/dist/prepare.d.cts +118 -0
- package/dist/prepare.d.ts +118 -0
- package/dist/prepare.js +1 -0
- package/dist/validation-CY2nydbS.d.cts +306 -0
- package/dist/validation-CY2nydbS.d.ts +306 -0
- package/package.json +72 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
declare const POLY_MORPH_MODEL_SCHEMA: "polycss-morph.model@1";
|
|
2
|
+
declare const POLY_MORPH_CATALOG_SCHEMA: "polycss-morph.catalog@1";
|
|
3
|
+
declare const POLY_MORPH_PACKAGE_SCHEMA: "polycss-morph.package@1";
|
|
4
|
+
type PolyMorphProfile = "joint-skin" | "morph-regions" | "prepared-playback" | "static-prepared";
|
|
5
|
+
type PolyMorphCapability = "animation" | "joint-skinning" | "morph-targets" | "prepared-playback" | "retained-render" | "semantic-controls" | "sparse-updates" | "springs";
|
|
6
|
+
type PolyMorphVec3 = readonly [number, number, number];
|
|
7
|
+
type PolyMorphQuat = readonly [number, number, number, number];
|
|
8
|
+
type PolyMorphMat4 = readonly [
|
|
9
|
+
number,
|
|
10
|
+
number,
|
|
11
|
+
number,
|
|
12
|
+
number,
|
|
13
|
+
number,
|
|
14
|
+
number,
|
|
15
|
+
number,
|
|
16
|
+
number,
|
|
17
|
+
number,
|
|
18
|
+
number,
|
|
19
|
+
number,
|
|
20
|
+
number,
|
|
21
|
+
number,
|
|
22
|
+
number,
|
|
23
|
+
number,
|
|
24
|
+
number
|
|
25
|
+
];
|
|
26
|
+
type PolyMorphColor = readonly [number, number, number, number];
|
|
27
|
+
interface PolyMorphModelIdentity {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly revision: string;
|
|
31
|
+
}
|
|
32
|
+
interface PolyMorphPolygon {
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly vertexIndices: readonly number[];
|
|
35
|
+
readonly normalIndices: readonly number[];
|
|
36
|
+
}
|
|
37
|
+
interface PolyMorphTopology {
|
|
38
|
+
readonly vertices: readonly PolyMorphVec3[];
|
|
39
|
+
readonly normals: readonly PolyMorphVec3[];
|
|
40
|
+
readonly polygons: readonly PolyMorphPolygon[];
|
|
41
|
+
}
|
|
42
|
+
interface PolyMorphMaterial {
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly color: PolyMorphColor;
|
|
45
|
+
}
|
|
46
|
+
type PolyMorphRenderStrategy = "atlas-slice" | "direct-image" | "solid-quad" | "solid-triangle";
|
|
47
|
+
interface PolyMorphAtlasSlice {
|
|
48
|
+
readonly resourcePath: string;
|
|
49
|
+
readonly x: number;
|
|
50
|
+
readonly y: number;
|
|
51
|
+
readonly width: number;
|
|
52
|
+
readonly height: number;
|
|
53
|
+
readonly pageWidth: number;
|
|
54
|
+
readonly pageHeight: number;
|
|
55
|
+
}
|
|
56
|
+
interface PolyMorphRenderShape {
|
|
57
|
+
readonly id: string;
|
|
58
|
+
readonly matrix: PolyMorphMat4;
|
|
59
|
+
}
|
|
60
|
+
interface PolyMorphRenderFallback {
|
|
61
|
+
readonly width: number;
|
|
62
|
+
readonly height: number;
|
|
63
|
+
readonly matrixFromLeaf: PolyMorphMat4;
|
|
64
|
+
readonly atlas: PolyMorphAtlasSlice;
|
|
65
|
+
}
|
|
66
|
+
interface PolyMorphRenderLeaf {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly polygonId: string;
|
|
69
|
+
readonly shapeId: string;
|
|
70
|
+
readonly materialId: string;
|
|
71
|
+
readonly strategy: PolyMorphRenderStrategy;
|
|
72
|
+
readonly width: number;
|
|
73
|
+
readonly height: number;
|
|
74
|
+
readonly matrix: PolyMorphMat4;
|
|
75
|
+
readonly atlas: PolyMorphAtlasSlice | null;
|
|
76
|
+
readonly fallback: PolyMorphRenderFallback | null;
|
|
77
|
+
}
|
|
78
|
+
interface PolyMorphRenderPlan {
|
|
79
|
+
readonly modelMatrix: PolyMorphMat4;
|
|
80
|
+
readonly shapes: readonly PolyMorphRenderShape[];
|
|
81
|
+
readonly leaves: readonly PolyMorphRenderLeaf[];
|
|
82
|
+
}
|
|
83
|
+
interface PolyMorphSparseDelta {
|
|
84
|
+
readonly vertexIndex: number;
|
|
85
|
+
readonly position: PolyMorphVec3 | null;
|
|
86
|
+
readonly normal: PolyMorphVec3 | null;
|
|
87
|
+
}
|
|
88
|
+
interface PolyMorphTarget {
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly deltas: readonly PolyMorphSparseDelta[];
|
|
91
|
+
}
|
|
92
|
+
interface PolyMorphNoDeformation {
|
|
93
|
+
readonly kind: "none";
|
|
94
|
+
}
|
|
95
|
+
interface PolyMorphRegionDeformation {
|
|
96
|
+
readonly kind: "morph-regions";
|
|
97
|
+
readonly targets: readonly PolyMorphTarget[];
|
|
98
|
+
}
|
|
99
|
+
interface PolyMorphJoint {
|
|
100
|
+
readonly id: string;
|
|
101
|
+
readonly parentId: string | null;
|
|
102
|
+
readonly restMatrix: PolyMorphMat4;
|
|
103
|
+
readonly inverseBindMatrix: PolyMorphMat4;
|
|
104
|
+
}
|
|
105
|
+
interface PolyMorphJointInfluence {
|
|
106
|
+
readonly jointId: string;
|
|
107
|
+
readonly weight: number;
|
|
108
|
+
}
|
|
109
|
+
interface PolyMorphSkinVertex {
|
|
110
|
+
readonly vertexIndex: number;
|
|
111
|
+
readonly influences: readonly PolyMorphJointInfluence[];
|
|
112
|
+
}
|
|
113
|
+
interface PolyMorphJointDeformation {
|
|
114
|
+
readonly kind: "joint-skin";
|
|
115
|
+
readonly joints: readonly PolyMorphJoint[];
|
|
116
|
+
readonly vertices: readonly PolyMorphSkinVertex[];
|
|
117
|
+
}
|
|
118
|
+
type PolyMorphDeformation = PolyMorphJointDeformation | PolyMorphNoDeformation | PolyMorphRegionDeformation;
|
|
119
|
+
interface PolyMorphControlTarget {
|
|
120
|
+
readonly targetId: string;
|
|
121
|
+
readonly scale: number;
|
|
122
|
+
}
|
|
123
|
+
interface PolyMorphControl {
|
|
124
|
+
readonly id: string;
|
|
125
|
+
readonly anchor: PolyMorphVec3;
|
|
126
|
+
readonly axis: PolyMorphVec3;
|
|
127
|
+
readonly radius: number;
|
|
128
|
+
readonly minimum: number;
|
|
129
|
+
readonly maximum: number;
|
|
130
|
+
readonly initial: number;
|
|
131
|
+
readonly targets: readonly PolyMorphControlTarget[];
|
|
132
|
+
}
|
|
133
|
+
interface PolyMorphSpring {
|
|
134
|
+
readonly id: string;
|
|
135
|
+
readonly controlId: string;
|
|
136
|
+
readonly stiffness: number;
|
|
137
|
+
readonly damping: number;
|
|
138
|
+
}
|
|
139
|
+
type PolyMorphAnimationTarget = "control-value" | "joint-rotation" | "joint-scale" | "joint-translation" | "morph-weight" | "shape-matrix";
|
|
140
|
+
interface PolyMorphAnimationChannel {
|
|
141
|
+
readonly target: PolyMorphAnimationTarget;
|
|
142
|
+
readonly targetId: string;
|
|
143
|
+
readonly interpolation: "linear" | "step";
|
|
144
|
+
readonly timesMs: readonly number[];
|
|
145
|
+
readonly values: readonly (readonly number[])[];
|
|
146
|
+
}
|
|
147
|
+
interface PolyMorphAnimationClip {
|
|
148
|
+
readonly id: string;
|
|
149
|
+
readonly durationMs: number;
|
|
150
|
+
readonly loop: boolean;
|
|
151
|
+
readonly channels: readonly PolyMorphAnimationChannel[];
|
|
152
|
+
}
|
|
153
|
+
interface PolyMorphPlaybackShapeUpdate {
|
|
154
|
+
readonly shapeId: string;
|
|
155
|
+
readonly matrix: PolyMorphMat4;
|
|
156
|
+
}
|
|
157
|
+
interface PolyMorphPlaybackLeafUpdate {
|
|
158
|
+
readonly leafId: string;
|
|
159
|
+
readonly matrix: PolyMorphMat4 | null;
|
|
160
|
+
readonly visible: boolean | null;
|
|
161
|
+
readonly opacity: number | null;
|
|
162
|
+
readonly atlasRow: number | null;
|
|
163
|
+
}
|
|
164
|
+
interface PolyMorphPlaybackFrame {
|
|
165
|
+
readonly timeMs: number;
|
|
166
|
+
readonly modelMatrix: PolyMorphMat4 | null;
|
|
167
|
+
readonly shapes: readonly PolyMorphPlaybackShapeUpdate[];
|
|
168
|
+
readonly leaves: readonly PolyMorphPlaybackLeafUpdate[];
|
|
169
|
+
}
|
|
170
|
+
interface PolyMorphPlayback {
|
|
171
|
+
readonly durationMs: number;
|
|
172
|
+
readonly loop: boolean;
|
|
173
|
+
readonly frames: readonly PolyMorphPlaybackFrame[];
|
|
174
|
+
}
|
|
175
|
+
interface PolyMorphBudgets {
|
|
176
|
+
readonly maxVertices: number;
|
|
177
|
+
readonly maxPolygons: number;
|
|
178
|
+
readonly maxLeaves: number;
|
|
179
|
+
readonly maxFrames: number;
|
|
180
|
+
readonly maxJoints: number;
|
|
181
|
+
readonly maxResources: number;
|
|
182
|
+
readonly maxBytes: number;
|
|
183
|
+
}
|
|
184
|
+
interface PolyMorphProvenanceSource {
|
|
185
|
+
readonly id: string;
|
|
186
|
+
readonly kind: "authored" | "generated" | "open-data";
|
|
187
|
+
readonly uri: string;
|
|
188
|
+
readonly sha256: string | null;
|
|
189
|
+
readonly license: string;
|
|
190
|
+
}
|
|
191
|
+
interface PolyMorphProvenance {
|
|
192
|
+
readonly generator: string;
|
|
193
|
+
readonly generatorVersion: string;
|
|
194
|
+
readonly sources: readonly PolyMorphProvenanceSource[];
|
|
195
|
+
}
|
|
196
|
+
interface PolyMorphModel {
|
|
197
|
+
readonly schema: typeof POLY_MORPH_MODEL_SCHEMA;
|
|
198
|
+
readonly identity: PolyMorphModelIdentity;
|
|
199
|
+
readonly profile: PolyMorphProfile;
|
|
200
|
+
readonly capabilities: readonly PolyMorphCapability[];
|
|
201
|
+
readonly budgets: PolyMorphBudgets;
|
|
202
|
+
readonly topology: PolyMorphTopology;
|
|
203
|
+
readonly materials: readonly PolyMorphMaterial[];
|
|
204
|
+
readonly render: PolyMorphRenderPlan;
|
|
205
|
+
readonly deformation: PolyMorphDeformation;
|
|
206
|
+
readonly controls: readonly PolyMorphControl[];
|
|
207
|
+
readonly springs: readonly PolyMorphSpring[];
|
|
208
|
+
readonly animations: readonly PolyMorphAnimationClip[];
|
|
209
|
+
readonly playback: PolyMorphPlayback | null;
|
|
210
|
+
readonly provenance: PolyMorphProvenance;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
declare class PolyMorphContractError extends TypeError {
|
|
214
|
+
readonly code: string;
|
|
215
|
+
readonly path: string;
|
|
216
|
+
constructor(code: string, path: string, message: string);
|
|
217
|
+
}
|
|
218
|
+
declare function validatePolyMorphModel(value: unknown): PolyMorphModel;
|
|
219
|
+
declare function isPolyMorphId(value: string): boolean;
|
|
220
|
+
declare function isPolyMorphResourcePath(value: string): boolean;
|
|
221
|
+
|
|
222
|
+
declare function stringifyPolyMorphCanonicalJson(value: unknown): string;
|
|
223
|
+
declare function encodePolyMorphCanonicalJson(value: unknown): Uint8Array;
|
|
224
|
+
declare function decodePolyMorphJson(bytes: Uint8Array, path?: string): unknown;
|
|
225
|
+
declare function hashPolyMorphBytes(bytes: Uint8Array): Promise<string>;
|
|
226
|
+
|
|
227
|
+
type PolyMorphResourceRole = "data" | "image" | "model";
|
|
228
|
+
interface PolyMorphResourceDescriptor {
|
|
229
|
+
readonly path: string;
|
|
230
|
+
readonly role: PolyMorphResourceRole;
|
|
231
|
+
readonly mediaType: string;
|
|
232
|
+
readonly bytes: number;
|
|
233
|
+
readonly sha256: string;
|
|
234
|
+
}
|
|
235
|
+
interface PolyMorphPackageManifest {
|
|
236
|
+
readonly schema: typeof POLY_MORPH_PACKAGE_SCHEMA;
|
|
237
|
+
readonly identity: PolyMorphModelIdentity;
|
|
238
|
+
readonly profile: PolyMorphProfile;
|
|
239
|
+
readonly modelPath: string;
|
|
240
|
+
readonly resources: readonly PolyMorphResourceDescriptor[];
|
|
241
|
+
}
|
|
242
|
+
interface PolyMorphCatalogRow {
|
|
243
|
+
readonly id: string;
|
|
244
|
+
readonly name: string;
|
|
245
|
+
readonly revision: string;
|
|
246
|
+
readonly profile: PolyMorphProfile;
|
|
247
|
+
readonly manifestPath: string;
|
|
248
|
+
readonly manifestSha256: string;
|
|
249
|
+
}
|
|
250
|
+
interface PolyMorphCatalog {
|
|
251
|
+
readonly schema: typeof POLY_MORPH_CATALOG_SCHEMA;
|
|
252
|
+
readonly defaultId: string;
|
|
253
|
+
readonly packages: readonly PolyMorphCatalogRow[];
|
|
254
|
+
}
|
|
255
|
+
interface PolyMorphResourceInput {
|
|
256
|
+
readonly path: string;
|
|
257
|
+
readonly role: Exclude<PolyMorphResourceRole, "model">;
|
|
258
|
+
readonly mediaType: string;
|
|
259
|
+
readonly bytes: Uint8Array;
|
|
260
|
+
}
|
|
261
|
+
interface PolyMorphBuiltPackage {
|
|
262
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
263
|
+
readonly manifestBytes: Uint8Array;
|
|
264
|
+
readonly manifestSha256: string;
|
|
265
|
+
readonly files: ReadonlyMap<string, Uint8Array>;
|
|
266
|
+
}
|
|
267
|
+
interface PolyMorphBuiltCatalog {
|
|
268
|
+
readonly catalog: PolyMorphCatalog;
|
|
269
|
+
readonly bytes: Uint8Array;
|
|
270
|
+
readonly sha256: string;
|
|
271
|
+
}
|
|
272
|
+
interface PolyMorphLoadedResource {
|
|
273
|
+
readonly descriptor: PolyMorphResourceDescriptor;
|
|
274
|
+
readonly bytes: Uint8Array;
|
|
275
|
+
}
|
|
276
|
+
interface PolyMorphLoadedPackage {
|
|
277
|
+
readonly catalog: PolyMorphCatalog;
|
|
278
|
+
readonly catalogSha256: string;
|
|
279
|
+
readonly catalogRow: PolyMorphCatalogRow;
|
|
280
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
281
|
+
readonly manifestSha256: string;
|
|
282
|
+
readonly model: PolyMorphModel;
|
|
283
|
+
readonly resources: ReadonlyMap<string, PolyMorphLoadedResource>;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
declare function buildPolyMorphPackage(modelInput: unknown, resourceInputs?: readonly PolyMorphResourceInput[]): Promise<PolyMorphBuiltPackage>;
|
|
287
|
+
declare function buildPolyMorphCatalog(defaultId: string, packages: readonly {
|
|
288
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
289
|
+
readonly manifestPath: string;
|
|
290
|
+
readonly manifestSha256: string;
|
|
291
|
+
}[]): Promise<PolyMorphBuiltCatalog>;
|
|
292
|
+
declare function assertPolyMorphPackageModelBinding(manifest: PolyMorphPackageManifest, model: PolyMorphModel): void;
|
|
293
|
+
|
|
294
|
+
declare class PolyMorphPackageError extends Error {
|
|
295
|
+
readonly code: string;
|
|
296
|
+
readonly path: string;
|
|
297
|
+
readonly cause?: unknown;
|
|
298
|
+
constructor(code: string, path: string, message: string, options?: {
|
|
299
|
+
readonly cause?: unknown;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
declare function validatePolyMorphPackageManifest(value: unknown): PolyMorphPackageManifest;
|
|
304
|
+
declare function validatePolyMorphCatalog(value: unknown): PolyMorphCatalog;
|
|
305
|
+
|
|
306
|
+
export { type PolyMorphTopology as $, type PolyMorphJoint as A, type PolyMorphJointDeformation as B, type PolyMorphJointInfluence as C, type PolyMorphMaterial as D, type PolyMorphModelIdentity as E, type PolyMorphNoDeformation as F, PolyMorphPackageError as G, type PolyMorphPackageManifest as H, type PolyMorphPlayback as I, type PolyMorphPlaybackLeafUpdate as J, type PolyMorphPlaybackShapeUpdate as K, type PolyMorphPolygon as L, type PolyMorphProfile as M, type PolyMorphProvenance as N, type PolyMorphProvenanceSource as O, type PolyMorphCatalog as P, type PolyMorphRegionDeformation as Q, type PolyMorphRenderFallback as R, type PolyMorphRenderPlan as S, type PolyMorphRenderShape as T, type PolyMorphRenderStrategy as U, type PolyMorphResourceDescriptor as V, type PolyMorphResourceInput as W, type PolyMorphResourceRole as X, type PolyMorphSkinVertex as Y, type PolyMorphSparseDelta as Z, type PolyMorphTarget as _, type PolyMorphLoadedPackage as a, assertPolyMorphPackageModelBinding as a0, buildPolyMorphCatalog as a1, buildPolyMorphPackage as a2, decodePolyMorphJson as a3, encodePolyMorphCanonicalJson as a4, hashPolyMorphBytes as a5, isPolyMorphId as a6, isPolyMorphResourcePath as a7, stringifyPolyMorphCanonicalJson as a8, validatePolyMorphCatalog as a9, validatePolyMorphModel as aa, validatePolyMorphPackageManifest as ab, type PolyMorphMat4 as b, type PolyMorphRenderLeaf as c, type PolyMorphLoadedResource as d, type PolyMorphModel as e, type PolyMorphVec3 as f, type PolyMorphQuat as g, type PolyMorphControl as h, type PolyMorphPlaybackFrame as i, type PolyMorphSpring as j, POLY_MORPH_CATALOG_SCHEMA as k, POLY_MORPH_MODEL_SCHEMA as l, POLY_MORPH_PACKAGE_SCHEMA as m, type PolyMorphAnimationChannel as n, type PolyMorphAnimationClip as o, type PolyMorphAnimationTarget as p, type PolyMorphAtlasSlice as q, type PolyMorphBudgets as r, type PolyMorphBuiltCatalog as s, type PolyMorphBuiltPackage as t, type PolyMorphCapability as u, type PolyMorphCatalogRow as v, type PolyMorphColor as w, PolyMorphContractError as x, type PolyMorphControlTarget as y, type PolyMorphDeformation as z };
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
declare const POLY_MORPH_MODEL_SCHEMA: "polycss-morph.model@1";
|
|
2
|
+
declare const POLY_MORPH_CATALOG_SCHEMA: "polycss-morph.catalog@1";
|
|
3
|
+
declare const POLY_MORPH_PACKAGE_SCHEMA: "polycss-morph.package@1";
|
|
4
|
+
type PolyMorphProfile = "joint-skin" | "morph-regions" | "prepared-playback" | "static-prepared";
|
|
5
|
+
type PolyMorphCapability = "animation" | "joint-skinning" | "morph-targets" | "prepared-playback" | "retained-render" | "semantic-controls" | "sparse-updates" | "springs";
|
|
6
|
+
type PolyMorphVec3 = readonly [number, number, number];
|
|
7
|
+
type PolyMorphQuat = readonly [number, number, number, number];
|
|
8
|
+
type PolyMorphMat4 = readonly [
|
|
9
|
+
number,
|
|
10
|
+
number,
|
|
11
|
+
number,
|
|
12
|
+
number,
|
|
13
|
+
number,
|
|
14
|
+
number,
|
|
15
|
+
number,
|
|
16
|
+
number,
|
|
17
|
+
number,
|
|
18
|
+
number,
|
|
19
|
+
number,
|
|
20
|
+
number,
|
|
21
|
+
number,
|
|
22
|
+
number,
|
|
23
|
+
number,
|
|
24
|
+
number
|
|
25
|
+
];
|
|
26
|
+
type PolyMorphColor = readonly [number, number, number, number];
|
|
27
|
+
interface PolyMorphModelIdentity {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly revision: string;
|
|
31
|
+
}
|
|
32
|
+
interface PolyMorphPolygon {
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly vertexIndices: readonly number[];
|
|
35
|
+
readonly normalIndices: readonly number[];
|
|
36
|
+
}
|
|
37
|
+
interface PolyMorphTopology {
|
|
38
|
+
readonly vertices: readonly PolyMorphVec3[];
|
|
39
|
+
readonly normals: readonly PolyMorphVec3[];
|
|
40
|
+
readonly polygons: readonly PolyMorphPolygon[];
|
|
41
|
+
}
|
|
42
|
+
interface PolyMorphMaterial {
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly color: PolyMorphColor;
|
|
45
|
+
}
|
|
46
|
+
type PolyMorphRenderStrategy = "atlas-slice" | "direct-image" | "solid-quad" | "solid-triangle";
|
|
47
|
+
interface PolyMorphAtlasSlice {
|
|
48
|
+
readonly resourcePath: string;
|
|
49
|
+
readonly x: number;
|
|
50
|
+
readonly y: number;
|
|
51
|
+
readonly width: number;
|
|
52
|
+
readonly height: number;
|
|
53
|
+
readonly pageWidth: number;
|
|
54
|
+
readonly pageHeight: number;
|
|
55
|
+
}
|
|
56
|
+
interface PolyMorphRenderShape {
|
|
57
|
+
readonly id: string;
|
|
58
|
+
readonly matrix: PolyMorphMat4;
|
|
59
|
+
}
|
|
60
|
+
interface PolyMorphRenderFallback {
|
|
61
|
+
readonly width: number;
|
|
62
|
+
readonly height: number;
|
|
63
|
+
readonly matrixFromLeaf: PolyMorphMat4;
|
|
64
|
+
readonly atlas: PolyMorphAtlasSlice;
|
|
65
|
+
}
|
|
66
|
+
interface PolyMorphRenderLeaf {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly polygonId: string;
|
|
69
|
+
readonly shapeId: string;
|
|
70
|
+
readonly materialId: string;
|
|
71
|
+
readonly strategy: PolyMorphRenderStrategy;
|
|
72
|
+
readonly width: number;
|
|
73
|
+
readonly height: number;
|
|
74
|
+
readonly matrix: PolyMorphMat4;
|
|
75
|
+
readonly atlas: PolyMorphAtlasSlice | null;
|
|
76
|
+
readonly fallback: PolyMorphRenderFallback | null;
|
|
77
|
+
}
|
|
78
|
+
interface PolyMorphRenderPlan {
|
|
79
|
+
readonly modelMatrix: PolyMorphMat4;
|
|
80
|
+
readonly shapes: readonly PolyMorphRenderShape[];
|
|
81
|
+
readonly leaves: readonly PolyMorphRenderLeaf[];
|
|
82
|
+
}
|
|
83
|
+
interface PolyMorphSparseDelta {
|
|
84
|
+
readonly vertexIndex: number;
|
|
85
|
+
readonly position: PolyMorphVec3 | null;
|
|
86
|
+
readonly normal: PolyMorphVec3 | null;
|
|
87
|
+
}
|
|
88
|
+
interface PolyMorphTarget {
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly deltas: readonly PolyMorphSparseDelta[];
|
|
91
|
+
}
|
|
92
|
+
interface PolyMorphNoDeformation {
|
|
93
|
+
readonly kind: "none";
|
|
94
|
+
}
|
|
95
|
+
interface PolyMorphRegionDeformation {
|
|
96
|
+
readonly kind: "morph-regions";
|
|
97
|
+
readonly targets: readonly PolyMorphTarget[];
|
|
98
|
+
}
|
|
99
|
+
interface PolyMorphJoint {
|
|
100
|
+
readonly id: string;
|
|
101
|
+
readonly parentId: string | null;
|
|
102
|
+
readonly restMatrix: PolyMorphMat4;
|
|
103
|
+
readonly inverseBindMatrix: PolyMorphMat4;
|
|
104
|
+
}
|
|
105
|
+
interface PolyMorphJointInfluence {
|
|
106
|
+
readonly jointId: string;
|
|
107
|
+
readonly weight: number;
|
|
108
|
+
}
|
|
109
|
+
interface PolyMorphSkinVertex {
|
|
110
|
+
readonly vertexIndex: number;
|
|
111
|
+
readonly influences: readonly PolyMorphJointInfluence[];
|
|
112
|
+
}
|
|
113
|
+
interface PolyMorphJointDeformation {
|
|
114
|
+
readonly kind: "joint-skin";
|
|
115
|
+
readonly joints: readonly PolyMorphJoint[];
|
|
116
|
+
readonly vertices: readonly PolyMorphSkinVertex[];
|
|
117
|
+
}
|
|
118
|
+
type PolyMorphDeformation = PolyMorphJointDeformation | PolyMorphNoDeformation | PolyMorphRegionDeformation;
|
|
119
|
+
interface PolyMorphControlTarget {
|
|
120
|
+
readonly targetId: string;
|
|
121
|
+
readonly scale: number;
|
|
122
|
+
}
|
|
123
|
+
interface PolyMorphControl {
|
|
124
|
+
readonly id: string;
|
|
125
|
+
readonly anchor: PolyMorphVec3;
|
|
126
|
+
readonly axis: PolyMorphVec3;
|
|
127
|
+
readonly radius: number;
|
|
128
|
+
readonly minimum: number;
|
|
129
|
+
readonly maximum: number;
|
|
130
|
+
readonly initial: number;
|
|
131
|
+
readonly targets: readonly PolyMorphControlTarget[];
|
|
132
|
+
}
|
|
133
|
+
interface PolyMorphSpring {
|
|
134
|
+
readonly id: string;
|
|
135
|
+
readonly controlId: string;
|
|
136
|
+
readonly stiffness: number;
|
|
137
|
+
readonly damping: number;
|
|
138
|
+
}
|
|
139
|
+
type PolyMorphAnimationTarget = "control-value" | "joint-rotation" | "joint-scale" | "joint-translation" | "morph-weight" | "shape-matrix";
|
|
140
|
+
interface PolyMorphAnimationChannel {
|
|
141
|
+
readonly target: PolyMorphAnimationTarget;
|
|
142
|
+
readonly targetId: string;
|
|
143
|
+
readonly interpolation: "linear" | "step";
|
|
144
|
+
readonly timesMs: readonly number[];
|
|
145
|
+
readonly values: readonly (readonly number[])[];
|
|
146
|
+
}
|
|
147
|
+
interface PolyMorphAnimationClip {
|
|
148
|
+
readonly id: string;
|
|
149
|
+
readonly durationMs: number;
|
|
150
|
+
readonly loop: boolean;
|
|
151
|
+
readonly channels: readonly PolyMorphAnimationChannel[];
|
|
152
|
+
}
|
|
153
|
+
interface PolyMorphPlaybackShapeUpdate {
|
|
154
|
+
readonly shapeId: string;
|
|
155
|
+
readonly matrix: PolyMorphMat4;
|
|
156
|
+
}
|
|
157
|
+
interface PolyMorphPlaybackLeafUpdate {
|
|
158
|
+
readonly leafId: string;
|
|
159
|
+
readonly matrix: PolyMorphMat4 | null;
|
|
160
|
+
readonly visible: boolean | null;
|
|
161
|
+
readonly opacity: number | null;
|
|
162
|
+
readonly atlasRow: number | null;
|
|
163
|
+
}
|
|
164
|
+
interface PolyMorphPlaybackFrame {
|
|
165
|
+
readonly timeMs: number;
|
|
166
|
+
readonly modelMatrix: PolyMorphMat4 | null;
|
|
167
|
+
readonly shapes: readonly PolyMorphPlaybackShapeUpdate[];
|
|
168
|
+
readonly leaves: readonly PolyMorphPlaybackLeafUpdate[];
|
|
169
|
+
}
|
|
170
|
+
interface PolyMorphPlayback {
|
|
171
|
+
readonly durationMs: number;
|
|
172
|
+
readonly loop: boolean;
|
|
173
|
+
readonly frames: readonly PolyMorphPlaybackFrame[];
|
|
174
|
+
}
|
|
175
|
+
interface PolyMorphBudgets {
|
|
176
|
+
readonly maxVertices: number;
|
|
177
|
+
readonly maxPolygons: number;
|
|
178
|
+
readonly maxLeaves: number;
|
|
179
|
+
readonly maxFrames: number;
|
|
180
|
+
readonly maxJoints: number;
|
|
181
|
+
readonly maxResources: number;
|
|
182
|
+
readonly maxBytes: number;
|
|
183
|
+
}
|
|
184
|
+
interface PolyMorphProvenanceSource {
|
|
185
|
+
readonly id: string;
|
|
186
|
+
readonly kind: "authored" | "generated" | "open-data";
|
|
187
|
+
readonly uri: string;
|
|
188
|
+
readonly sha256: string | null;
|
|
189
|
+
readonly license: string;
|
|
190
|
+
}
|
|
191
|
+
interface PolyMorphProvenance {
|
|
192
|
+
readonly generator: string;
|
|
193
|
+
readonly generatorVersion: string;
|
|
194
|
+
readonly sources: readonly PolyMorphProvenanceSource[];
|
|
195
|
+
}
|
|
196
|
+
interface PolyMorphModel {
|
|
197
|
+
readonly schema: typeof POLY_MORPH_MODEL_SCHEMA;
|
|
198
|
+
readonly identity: PolyMorphModelIdentity;
|
|
199
|
+
readonly profile: PolyMorphProfile;
|
|
200
|
+
readonly capabilities: readonly PolyMorphCapability[];
|
|
201
|
+
readonly budgets: PolyMorphBudgets;
|
|
202
|
+
readonly topology: PolyMorphTopology;
|
|
203
|
+
readonly materials: readonly PolyMorphMaterial[];
|
|
204
|
+
readonly render: PolyMorphRenderPlan;
|
|
205
|
+
readonly deformation: PolyMorphDeformation;
|
|
206
|
+
readonly controls: readonly PolyMorphControl[];
|
|
207
|
+
readonly springs: readonly PolyMorphSpring[];
|
|
208
|
+
readonly animations: readonly PolyMorphAnimationClip[];
|
|
209
|
+
readonly playback: PolyMorphPlayback | null;
|
|
210
|
+
readonly provenance: PolyMorphProvenance;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
declare class PolyMorphContractError extends TypeError {
|
|
214
|
+
readonly code: string;
|
|
215
|
+
readonly path: string;
|
|
216
|
+
constructor(code: string, path: string, message: string);
|
|
217
|
+
}
|
|
218
|
+
declare function validatePolyMorphModel(value: unknown): PolyMorphModel;
|
|
219
|
+
declare function isPolyMorphId(value: string): boolean;
|
|
220
|
+
declare function isPolyMorphResourcePath(value: string): boolean;
|
|
221
|
+
|
|
222
|
+
declare function stringifyPolyMorphCanonicalJson(value: unknown): string;
|
|
223
|
+
declare function encodePolyMorphCanonicalJson(value: unknown): Uint8Array;
|
|
224
|
+
declare function decodePolyMorphJson(bytes: Uint8Array, path?: string): unknown;
|
|
225
|
+
declare function hashPolyMorphBytes(bytes: Uint8Array): Promise<string>;
|
|
226
|
+
|
|
227
|
+
type PolyMorphResourceRole = "data" | "image" | "model";
|
|
228
|
+
interface PolyMorphResourceDescriptor {
|
|
229
|
+
readonly path: string;
|
|
230
|
+
readonly role: PolyMorphResourceRole;
|
|
231
|
+
readonly mediaType: string;
|
|
232
|
+
readonly bytes: number;
|
|
233
|
+
readonly sha256: string;
|
|
234
|
+
}
|
|
235
|
+
interface PolyMorphPackageManifest {
|
|
236
|
+
readonly schema: typeof POLY_MORPH_PACKAGE_SCHEMA;
|
|
237
|
+
readonly identity: PolyMorphModelIdentity;
|
|
238
|
+
readonly profile: PolyMorphProfile;
|
|
239
|
+
readonly modelPath: string;
|
|
240
|
+
readonly resources: readonly PolyMorphResourceDescriptor[];
|
|
241
|
+
}
|
|
242
|
+
interface PolyMorphCatalogRow {
|
|
243
|
+
readonly id: string;
|
|
244
|
+
readonly name: string;
|
|
245
|
+
readonly revision: string;
|
|
246
|
+
readonly profile: PolyMorphProfile;
|
|
247
|
+
readonly manifestPath: string;
|
|
248
|
+
readonly manifestSha256: string;
|
|
249
|
+
}
|
|
250
|
+
interface PolyMorphCatalog {
|
|
251
|
+
readonly schema: typeof POLY_MORPH_CATALOG_SCHEMA;
|
|
252
|
+
readonly defaultId: string;
|
|
253
|
+
readonly packages: readonly PolyMorphCatalogRow[];
|
|
254
|
+
}
|
|
255
|
+
interface PolyMorphResourceInput {
|
|
256
|
+
readonly path: string;
|
|
257
|
+
readonly role: Exclude<PolyMorphResourceRole, "model">;
|
|
258
|
+
readonly mediaType: string;
|
|
259
|
+
readonly bytes: Uint8Array;
|
|
260
|
+
}
|
|
261
|
+
interface PolyMorphBuiltPackage {
|
|
262
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
263
|
+
readonly manifestBytes: Uint8Array;
|
|
264
|
+
readonly manifestSha256: string;
|
|
265
|
+
readonly files: ReadonlyMap<string, Uint8Array>;
|
|
266
|
+
}
|
|
267
|
+
interface PolyMorphBuiltCatalog {
|
|
268
|
+
readonly catalog: PolyMorphCatalog;
|
|
269
|
+
readonly bytes: Uint8Array;
|
|
270
|
+
readonly sha256: string;
|
|
271
|
+
}
|
|
272
|
+
interface PolyMorphLoadedResource {
|
|
273
|
+
readonly descriptor: PolyMorphResourceDescriptor;
|
|
274
|
+
readonly bytes: Uint8Array;
|
|
275
|
+
}
|
|
276
|
+
interface PolyMorphLoadedPackage {
|
|
277
|
+
readonly catalog: PolyMorphCatalog;
|
|
278
|
+
readonly catalogSha256: string;
|
|
279
|
+
readonly catalogRow: PolyMorphCatalogRow;
|
|
280
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
281
|
+
readonly manifestSha256: string;
|
|
282
|
+
readonly model: PolyMorphModel;
|
|
283
|
+
readonly resources: ReadonlyMap<string, PolyMorphLoadedResource>;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
declare function buildPolyMorphPackage(modelInput: unknown, resourceInputs?: readonly PolyMorphResourceInput[]): Promise<PolyMorphBuiltPackage>;
|
|
287
|
+
declare function buildPolyMorphCatalog(defaultId: string, packages: readonly {
|
|
288
|
+
readonly manifest: PolyMorphPackageManifest;
|
|
289
|
+
readonly manifestPath: string;
|
|
290
|
+
readonly manifestSha256: string;
|
|
291
|
+
}[]): Promise<PolyMorphBuiltCatalog>;
|
|
292
|
+
declare function assertPolyMorphPackageModelBinding(manifest: PolyMorphPackageManifest, model: PolyMorphModel): void;
|
|
293
|
+
|
|
294
|
+
declare class PolyMorphPackageError extends Error {
|
|
295
|
+
readonly code: string;
|
|
296
|
+
readonly path: string;
|
|
297
|
+
readonly cause?: unknown;
|
|
298
|
+
constructor(code: string, path: string, message: string, options?: {
|
|
299
|
+
readonly cause?: unknown;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
declare function validatePolyMorphPackageManifest(value: unknown): PolyMorphPackageManifest;
|
|
304
|
+
declare function validatePolyMorphCatalog(value: unknown): PolyMorphCatalog;
|
|
305
|
+
|
|
306
|
+
export { type PolyMorphTopology as $, type PolyMorphJoint as A, type PolyMorphJointDeformation as B, type PolyMorphJointInfluence as C, type PolyMorphMaterial as D, type PolyMorphModelIdentity as E, type PolyMorphNoDeformation as F, PolyMorphPackageError as G, type PolyMorphPackageManifest as H, type PolyMorphPlayback as I, type PolyMorphPlaybackLeafUpdate as J, type PolyMorphPlaybackShapeUpdate as K, type PolyMorphPolygon as L, type PolyMorphProfile as M, type PolyMorphProvenance as N, type PolyMorphProvenanceSource as O, type PolyMorphCatalog as P, type PolyMorphRegionDeformation as Q, type PolyMorphRenderFallback as R, type PolyMorphRenderPlan as S, type PolyMorphRenderShape as T, type PolyMorphRenderStrategy as U, type PolyMorphResourceDescriptor as V, type PolyMorphResourceInput as W, type PolyMorphResourceRole as X, type PolyMorphSkinVertex as Y, type PolyMorphSparseDelta as Z, type PolyMorphTarget as _, type PolyMorphLoadedPackage as a, assertPolyMorphPackageModelBinding as a0, buildPolyMorphCatalog as a1, buildPolyMorphPackage as a2, decodePolyMorphJson as a3, encodePolyMorphCanonicalJson as a4, hashPolyMorphBytes as a5, isPolyMorphId as a6, isPolyMorphResourcePath as a7, stringifyPolyMorphCanonicalJson as a8, validatePolyMorphCatalog as a9, validatePolyMorphModel as aa, validatePolyMorphPackageManifest as ab, type PolyMorphMat4 as b, type PolyMorphRenderLeaf as c, type PolyMorphLoadedResource as d, type PolyMorphModel as e, type PolyMorphVec3 as f, type PolyMorphQuat as g, type PolyMorphControl as h, type PolyMorphPlaybackFrame as i, type PolyMorphSpring as j, POLY_MORPH_CATALOG_SCHEMA as k, POLY_MORPH_MODEL_SCHEMA as l, POLY_MORPH_PACKAGE_SCHEMA as m, type PolyMorphAnimationChannel as n, type PolyMorphAnimationClip as o, type PolyMorphAnimationTarget as p, type PolyMorphAtlasSlice as q, type PolyMorphBudgets as r, type PolyMorphBuiltCatalog as s, type PolyMorphBuiltPackage as t, type PolyMorphCapability as u, type PolyMorphCatalogRow as v, type PolyMorphColor as w, PolyMorphContractError as x, type PolyMorphControlTarget as y, type PolyMorphDeformation as z };
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@layoutit/polycss-morph",
|
|
3
|
+
"version": "0.2.9",
|
|
4
|
+
"description": "Prepared retained-model deformation and playback for PolyCSS.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"polycss",
|
|
11
|
+
"morph",
|
|
12
|
+
"animation",
|
|
13
|
+
"skinning",
|
|
14
|
+
"3d",
|
|
15
|
+
"css",
|
|
16
|
+
"matrix3d",
|
|
17
|
+
"dom"
|
|
18
|
+
],
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/LayoutitStudio/polycss.git",
|
|
23
|
+
"directory": "packages/morph"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/LayoutitStudio/polycss/issues"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/LayoutitStudio/polycss#readme",
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"import": "./dist/index.js",
|
|
36
|
+
"require": "./dist/index.cjs"
|
|
37
|
+
},
|
|
38
|
+
"./prepare": {
|
|
39
|
+
"types": "./dist/prepare.d.ts",
|
|
40
|
+
"import": "./dist/prepare.js",
|
|
41
|
+
"require": "./dist/prepare.cjs"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"typesVersions": {
|
|
45
|
+
"*": {
|
|
46
|
+
"prepare": [
|
|
47
|
+
"dist/prepare.d.ts"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@layoutit/polycss": "^0.2.9"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@types/node": "^25.0.0",
|
|
59
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
60
|
+
"happy-dom": "^20.7.0",
|
|
61
|
+
"tsup": "^8.0.1",
|
|
62
|
+
"typescript": "^5.3.3",
|
|
63
|
+
"vitest": "^3.1.1"
|
|
64
|
+
},
|
|
65
|
+
"scripts": {
|
|
66
|
+
"build": "tsup",
|
|
67
|
+
"test": "vitest run",
|
|
68
|
+
"test:package": "node scripts/certify-package.mjs",
|
|
69
|
+
"test:package:registry": "node scripts/certify-package.mjs --registry-dependencies",
|
|
70
|
+
"test:coverage": "vitest run --coverage"
|
|
71
|
+
}
|
|
72
|
+
}
|