@babylonjs/core 7.48.3 → 7.50.0
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/Animations/animatable.core.d.ts +1 -0
- package/Animations/animatable.core.js +3 -1
- package/Animations/animatable.core.js.map +1 -1
- package/Behaviors/Cameras/framingBehavior.js +3 -0
- package/Behaviors/Cameras/framingBehavior.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +10 -9
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Buffers/bufferUtils.d.ts +9 -10
- package/Buffers/bufferUtils.js +16 -0
- package/Buffers/bufferUtils.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.js +2 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +23 -22
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +12 -3
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.d.ts +43 -0
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js +83 -0
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.d.ts +35 -0
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js +40 -0
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js.map +1 -0
- package/FrameGraph/frameGraph.d.ts +4 -0
- package/FrameGraph/frameGraph.js +6 -0
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +2 -2
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Inputs/scene.inputManager.js +4 -4
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Layers/thinEffectLayer.js +3 -1
- package/Layers/thinEffectLayer.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +3 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +9 -20
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +8 -19
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.d.ts +8 -0
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js +36 -0
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +6 -3
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +8 -0
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +48 -0
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -0
- package/Materials/Node/nodeMaterial.js +14 -0
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.js +2 -0
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/materialHelper.functions.d.ts +2 -1
- package/Materials/materialHelper.functions.js +17 -1
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/shaderMaterial.js +3 -1
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/standardMaterial.d.ts +2 -0
- package/Materials/standardMaterial.js +2 -0
- package/Materials/standardMaterial.js.map +1 -1
- package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +4 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +11 -2
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +4 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +11 -2
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.d.ts +4 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +11 -2
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/pointListBlock.d.ts +35 -0
- package/Meshes/Node/Blocks/Sources/pointListBlock.js +76 -0
- package/Meshes/Node/Blocks/Sources/pointListBlock.js.map +1 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.js +3 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
- package/Meshes/Node/index.d.ts +1 -0
- package/Meshes/Node/index.js +1 -0
- package/Meshes/Node/index.js.map +1 -1
- package/Meshes/abstractMesh.hotSpot.d.ts +4 -4
- package/Meshes/abstractMesh.hotSpot.js +7 -10
- package/Meshes/abstractMesh.hotSpot.js.map +1 -1
- package/Meshes/abstractMesh.js +6 -0
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg2.js +15 -2
- package/Meshes/csg2.js.map +1 -1
- package/Meshes/mesh.d.ts +52 -1
- package/Meshes/mesh.js +60 -21
- package/Meshes/mesh.js.map +1 -1
- package/Misc/screenshotTools.js +3 -0
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +3 -1
- package/Misc/snapshotRenderingHelper.js +27 -5
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Morph/morphTarget.d.ts +12 -0
- package/Morph/morphTarget.js +35 -1
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +13 -0
- package/Morph/morphTargetManager.js +30 -1
- package/Morph/morphTargetManager.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +3 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.js +2 -2
- package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
- package/Rendering/depthRenderer.js +3 -1
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +3 -1
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +3 -1
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/utilityLayerRenderer.d.ts +3 -1
- package/Rendering/utilityLayerRenderer.js +16 -7
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js +9 -0
- package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -0
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/vertexColorMixing.js +2 -2
- package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
- package/Shaders/background.vertex.js +1 -1
- package/Shaders/background.vertex.js.map +1 -1
- package/Shaders/color.vertex.js +3 -0
- package/Shaders/color.vertex.js.map +1 -1
- package/Shaders/default.vertex.js +3 -0
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/greasedLine.vertex.js +1 -2
- package/Shaders/greasedLine.vertex.js.map +1 -1
- package/Shaders/pbr.vertex.js +3 -0
- package/Shaders/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +6 -0
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/ShadersWGSL/boundingInfo.compute.js +3 -0
- package/ShadersWGSL/boundingInfo.compute.js.map +1 -1
- package/ShadersWGSL/color.vertex.js +3 -0
- package/ShadersWGSL/color.vertex.js.map +1 -1
- package/ShadersWGSL/default.vertex.js +3 -0
- package/ShadersWGSL/default.vertex.js.map +1 -1
- package/ShadersWGSL/greasedLine.vertex.js +2 -3
- package/ShadersWGSL/greasedLine.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.vertex.js +3 -0
- package/ShadersWGSL/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/screenSpaceReflection2.fragment.js +1 -0
- package/ShadersWGSL/screenSpaceReflection2.fragment.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +1 -0
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +2 -0
- package/scene.js +13 -9
- package/scene.js.map +1 -1
- package/types.d.ts +22 -0
- package/types.js.map +1 -1
package/types.d.ts
CHANGED
|
@@ -171,4 +171,26 @@ export type Constructor<C extends new (...args: any[]) => any, I extends Instanc
|
|
|
171
171
|
* Alias type for image sources
|
|
172
172
|
*/
|
|
173
173
|
export type ImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;
|
|
174
|
+
/**
|
|
175
|
+
* Type for typed array like objects
|
|
176
|
+
*/
|
|
177
|
+
export interface TypedArrayLike extends ArrayBufferView {
|
|
178
|
+
/**
|
|
179
|
+
* The size in bytes of the array.
|
|
180
|
+
*/
|
|
181
|
+
readonly length: number;
|
|
182
|
+
[n: number]: number;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Interface for a constructor of a TypedArray.
|
|
186
|
+
*/
|
|
187
|
+
export interface TypedArrayConstructor<T extends TypedArray = TypedArray> {
|
|
188
|
+
new (length: number): T;
|
|
189
|
+
new (elements: Iterable<number>): T;
|
|
190
|
+
new (buffer: ArrayBufferLike, byteOffset?: number, length?: number): T;
|
|
191
|
+
/**
|
|
192
|
+
* The size in bytes of each element in the array.
|
|
193
|
+
*/
|
|
194
|
+
readonly BYTES_PER_ELEMENT: number;
|
|
195
|
+
}
|
|
174
196
|
export {};
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../dev/core/src/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/** Alias type for value that can be null */\r\nexport type Nullable<T> = T | null;\r\n/**\r\n * Alias type for number that are floats\r\n * @ignorenaming\r\n */\r\nexport type float = number;\r\n/**\r\n * Alias type for number that are doubles.\r\n * @ignorenaming\r\n */\r\nexport type double = number;\r\n/**\r\n * Alias type for number that are integer\r\n * @ignorenaming\r\n */\r\nexport type int = number;\r\n\r\n// Tuple manipulation\r\n/**\r\n * Empty\r\n */\r\nexport type Empty = [];\r\n\r\n/**\r\n * Removes the first element of T and shifts\r\n */\r\nexport type Shift<T> = T extends unknown[] ? (((...x: T) => void) extends (h: any, ...t: infer I) => void ? I : []) : unknown;\r\n\r\n/**\r\n * Gets the first element of T\r\n */\r\nexport type First<T> = T extends unknown[] ? (((...x: T) => void) extends (h: infer I, ...t: any) => void ? I : []) : never;\r\n\r\n/**\r\n * Inserts A into T at the start of T\r\n */\r\nexport type Unshift<T, A> = T extends unknown[] ? (((h: A, ...t: T) => void) extends (...i: infer I) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Removes the last element of T\r\n */\r\nexport type Pop<T> = T extends unknown[] ? (((...x: T) => void) extends (...i: [...infer I, any]) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Gets the last element of T\r\n */\r\nexport type Last<T> = T extends unknown[] ? (((...x: T) => void) extends (...i: [...infer H, infer I]) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Appends A to T\r\n */\r\nexport type Push<T, A> = T extends unknown[] ? (((...a: [...T, A]) => void) extends (...i: infer I) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Concats A and B\r\n */\r\nexport type Concat<A, B> = { 0: A; 1: Concat<Unshift<A, 0>, Shift<B>> }[Empty extends B ? 0 : 1];\r\n\r\n/**\r\n * Extracts from A what is not B\r\n *\r\n * @remarks\r\n * It does not remove duplicates (so Remove\\<[0, 0, 0], [0, 0]\\> yields [0]). This is intended and necessary behavior.\r\n */\r\nexport type Remove<A, B> = { 0: A; 1: Remove<Shift<A>, Shift<B>> }[Empty extends B ? 0 : 1];\r\n\r\n/**\r\n * The length of T\r\n */\r\nexport type Length<T> = T extends { length: number } ? T[\"length\"] : never;\r\n\r\ntype _FromLength<N extends number, R = Empty> = { 0: R; 1: _FromLength<N, Unshift<R, 0>> }[Length<R> extends N ? 0 : 1];\r\n\r\n/**\r\n * Creates a tuple of length N\r\n */\r\nexport type FromLength<N extends number> = _FromLength<N>;\r\n\r\n// compile-time math\r\n\r\n/**\r\n * Increments N\r\n */\r\nexport type Increment<N extends number> = Length<Unshift<_FromLength<N>, 0>>;\r\n\r\n/**\r\n * Decrements N\r\n */\r\nexport type Decrement<N extends number> = Length<Shift<_FromLength<N>>>;\r\n\r\n/**\r\n * Gets the sum of A and B\r\n */\r\nexport type Add<A extends number, B extends number> = Length<Concat<_FromLength<A>, _FromLength<B>>>;\r\n\r\n/**\r\n * Subtracts B from A\r\n */\r\nexport type Subtract<A extends number, B extends number> = Length<Remove<_FromLength<A>, _FromLength<B>>>;\r\n\r\n/**\r\n * Gets the type of an array's members\r\n */\r\nexport type Member<T, D = null> = D extends 0 ? T : T extends (infer U)[] ? Member<U, D extends number ? Decrement<D> : null> : T;\r\n\r\n/**\r\n * Flattens an array\r\n */\r\nexport type FlattenArray<A extends unknown[], D = null> = A extends (infer U)[] ? Member<Exclude<U, A>, D>[] : A extends unknown[] ? { [K in keyof A]: Member<A[K], D> } : A;\r\n\r\n/**\r\n * Whether T is a tuple\r\n */\r\nexport type IsTuple<T> = T extends [] ? false : T extends [infer Head, ...infer Rest] ? true : false;\r\n\r\n/**\r\n * Flattens a tuple\r\n */\r\nexport type FlattenTuple<A extends unknown[]> = A extends [infer U, ...infer Rest] ? (U extends unknown[] ? [...U, ...FlattenTuple<Rest>] : [U, ...FlattenTuple<Rest>]) : [];\r\n\r\n/**\r\n * Flattens an array or tuple\r\n */\r\nexport type Flatten<A extends unknown[]> = IsTuple<A> extends true ? FlattenTuple<A> : FlattenArray<A>;\r\n\r\ntype _Tuple<T, N extends number, R extends unknown[] = Empty> = R[\"length\"] extends N ? R : _Tuple<T, N, [T, ...R]>;\r\n\r\n/**\r\n * Creates a tuple of T with length N\r\n */\r\nexport type Tuple<T, N extends number> = _Tuple<T, N>;\r\n\r\n/** Alias type for number array or Float32Array */\r\nexport type FloatArray = number[] | Float32Array;\r\n/** Alias type for number array or Float32Array or Int32Array or Uint32Array or Uint16Array */\r\nexport type IndicesArray = number[] | Int32Array | Uint32Array | Uint16Array;\r\n\r\n/**\r\n * Alias type for all TypedArrays\r\n */\r\nexport type TypedArray =\r\n | Int8Array\r\n | Uint8Array\r\n | Uint8ClampedArray\r\n | Int16Array\r\n | Uint16Array\r\n | Int32Array\r\n | Uint32Array\r\n | Float32Array\r\n | Float64Array\r\n | BigInt64Array\r\n | BigUint64Array;\r\n\r\n/**\r\n * Alias for types that can be used by a Buffer or VertexBuffer.\r\n */\r\nexport type DataArray = number[] | ArrayBuffer | ArrayBufferView;\r\n\r\n/**\r\n * Alias type for primitive types\r\n * @ignorenaming\r\n */\r\ntype Primitive = undefined | null | boolean | string | number | Function | Element;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Readonly\r\n */\r\nexport type Immutable<T> = T extends Primitive\r\n ? T\r\n : T extends Array<infer U>\r\n ? ReadonlyArray<U>\r\n : /* T extends Map<infer K, infer V> ? ReadonlyMap<K, V> : // es2015+ only */\r\n DeepImmutable<T>;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Readonly recursively\r\n */\r\nexport type DeepImmutable<T> = T extends Primitive\r\n ? T\r\n : T extends Array<infer U>\r\n ? DeepImmutableArray<U>\r\n : /* T extends Map<infer K, infer V> ? DeepImmutableMap<K, V> : // es2015+ only */\r\n DeepImmutableObject<T>;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object NonNullable\r\n */\r\nexport type NonNullableFields<T> = { [P in keyof T]: NonNullable<T[P]> };\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Writable (remove \"readonly\")\r\n */\r\nexport type WritableObject<T> = { -readonly [P in keyof T]: T[P] };\r\n\r\n/**\r\n * Type modifier to make object properties readonly.\r\n */\r\nexport type DeepImmutableObject<T> = { readonly [K in keyof T]: DeepImmutable<T[K]> };\r\n\r\n/** @internal */\r\ninterface DeepImmutableArray<T> extends ReadonlyArray<DeepImmutable<T>> {}\r\n/** @internal */\r\n/* interface DeepImmutableMap<K, V> extends ReadonlyMap<DeepImmutable<K>, DeepImmutable<V>> {} // es2015+ only */\r\n\r\nexport type Constructor<C extends new (...args: any[]) => any, I extends InstanceType<C> = InstanceType<C>> = {\r\n new (...args: ConstructorParameters<C>): I;\r\n};\r\n\r\n/**\r\n * Alias type for image sources\r\n */\r\nexport type ImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;\r\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../dev/core/src/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/** Alias type for value that can be null */\r\nexport type Nullable<T> = T | null;\r\n/**\r\n * Alias type for number that are floats\r\n * @ignorenaming\r\n */\r\nexport type float = number;\r\n/**\r\n * Alias type for number that are doubles.\r\n * @ignorenaming\r\n */\r\nexport type double = number;\r\n/**\r\n * Alias type for number that are integer\r\n * @ignorenaming\r\n */\r\nexport type int = number;\r\n\r\n// Tuple manipulation\r\n/**\r\n * Empty\r\n */\r\nexport type Empty = [];\r\n\r\n/**\r\n * Removes the first element of T and shifts\r\n */\r\nexport type Shift<T> = T extends unknown[] ? (((...x: T) => void) extends (h: any, ...t: infer I) => void ? I : []) : unknown;\r\n\r\n/**\r\n * Gets the first element of T\r\n */\r\nexport type First<T> = T extends unknown[] ? (((...x: T) => void) extends (h: infer I, ...t: any) => void ? I : []) : never;\r\n\r\n/**\r\n * Inserts A into T at the start of T\r\n */\r\nexport type Unshift<T, A> = T extends unknown[] ? (((h: A, ...t: T) => void) extends (...i: infer I) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Removes the last element of T\r\n */\r\nexport type Pop<T> = T extends unknown[] ? (((...x: T) => void) extends (...i: [...infer I, any]) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Gets the last element of T\r\n */\r\nexport type Last<T> = T extends unknown[] ? (((...x: T) => void) extends (...i: [...infer H, infer I]) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Appends A to T\r\n */\r\nexport type Push<T, A> = T extends unknown[] ? (((...a: [...T, A]) => void) extends (...i: infer I) => void ? I : unknown) : never;\r\n\r\n/**\r\n * Concats A and B\r\n */\r\nexport type Concat<A, B> = { 0: A; 1: Concat<Unshift<A, 0>, Shift<B>> }[Empty extends B ? 0 : 1];\r\n\r\n/**\r\n * Extracts from A what is not B\r\n *\r\n * @remarks\r\n * It does not remove duplicates (so Remove\\<[0, 0, 0], [0, 0]\\> yields [0]). This is intended and necessary behavior.\r\n */\r\nexport type Remove<A, B> = { 0: A; 1: Remove<Shift<A>, Shift<B>> }[Empty extends B ? 0 : 1];\r\n\r\n/**\r\n * The length of T\r\n */\r\nexport type Length<T> = T extends { length: number } ? T[\"length\"] : never;\r\n\r\ntype _FromLength<N extends number, R = Empty> = { 0: R; 1: _FromLength<N, Unshift<R, 0>> }[Length<R> extends N ? 0 : 1];\r\n\r\n/**\r\n * Creates a tuple of length N\r\n */\r\nexport type FromLength<N extends number> = _FromLength<N>;\r\n\r\n// compile-time math\r\n\r\n/**\r\n * Increments N\r\n */\r\nexport type Increment<N extends number> = Length<Unshift<_FromLength<N>, 0>>;\r\n\r\n/**\r\n * Decrements N\r\n */\r\nexport type Decrement<N extends number> = Length<Shift<_FromLength<N>>>;\r\n\r\n/**\r\n * Gets the sum of A and B\r\n */\r\nexport type Add<A extends number, B extends number> = Length<Concat<_FromLength<A>, _FromLength<B>>>;\r\n\r\n/**\r\n * Subtracts B from A\r\n */\r\nexport type Subtract<A extends number, B extends number> = Length<Remove<_FromLength<A>, _FromLength<B>>>;\r\n\r\n/**\r\n * Gets the type of an array's members\r\n */\r\nexport type Member<T, D = null> = D extends 0 ? T : T extends (infer U)[] ? Member<U, D extends number ? Decrement<D> : null> : T;\r\n\r\n/**\r\n * Flattens an array\r\n */\r\nexport type FlattenArray<A extends unknown[], D = null> = A extends (infer U)[] ? Member<Exclude<U, A>, D>[] : A extends unknown[] ? { [K in keyof A]: Member<A[K], D> } : A;\r\n\r\n/**\r\n * Whether T is a tuple\r\n */\r\nexport type IsTuple<T> = T extends [] ? false : T extends [infer Head, ...infer Rest] ? true : false;\r\n\r\n/**\r\n * Flattens a tuple\r\n */\r\nexport type FlattenTuple<A extends unknown[]> = A extends [infer U, ...infer Rest] ? (U extends unknown[] ? [...U, ...FlattenTuple<Rest>] : [U, ...FlattenTuple<Rest>]) : [];\r\n\r\n/**\r\n * Flattens an array or tuple\r\n */\r\nexport type Flatten<A extends unknown[]> = IsTuple<A> extends true ? FlattenTuple<A> : FlattenArray<A>;\r\n\r\ntype _Tuple<T, N extends number, R extends unknown[] = Empty> = R[\"length\"] extends N ? R : _Tuple<T, N, [T, ...R]>;\r\n\r\n/**\r\n * Creates a tuple of T with length N\r\n */\r\nexport type Tuple<T, N extends number> = _Tuple<T, N>;\r\n\r\n/** Alias type for number array or Float32Array */\r\nexport type FloatArray = number[] | Float32Array;\r\n/** Alias type for number array or Float32Array or Int32Array or Uint32Array or Uint16Array */\r\nexport type IndicesArray = number[] | Int32Array | Uint32Array | Uint16Array;\r\n\r\n/**\r\n * Alias type for all TypedArrays\r\n */\r\nexport type TypedArray =\r\n | Int8Array\r\n | Uint8Array\r\n | Uint8ClampedArray\r\n | Int16Array\r\n | Uint16Array\r\n | Int32Array\r\n | Uint32Array\r\n | Float32Array\r\n | Float64Array\r\n | BigInt64Array\r\n | BigUint64Array;\r\n\r\n/**\r\n * Alias for types that can be used by a Buffer or VertexBuffer.\r\n */\r\nexport type DataArray = number[] | ArrayBuffer | ArrayBufferView;\r\n\r\n/**\r\n * Alias type for primitive types\r\n * @ignorenaming\r\n */\r\ntype Primitive = undefined | null | boolean | string | number | Function | Element;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Readonly\r\n */\r\nexport type Immutable<T> = T extends Primitive\r\n ? T\r\n : T extends Array<infer U>\r\n ? ReadonlyArray<U>\r\n : /* T extends Map<infer K, infer V> ? ReadonlyMap<K, V> : // es2015+ only */\r\n DeepImmutable<T>;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Readonly recursively\r\n */\r\nexport type DeepImmutable<T> = T extends Primitive\r\n ? T\r\n : T extends Array<infer U>\r\n ? DeepImmutableArray<U>\r\n : /* T extends Map<infer K, infer V> ? DeepImmutableMap<K, V> : // es2015+ only */\r\n DeepImmutableObject<T>;\r\n\r\n/**\r\n * Type modifier to make all the properties of an object NonNullable\r\n */\r\nexport type NonNullableFields<T> = { [P in keyof T]: NonNullable<T[P]> };\r\n\r\n/**\r\n * Type modifier to make all the properties of an object Writable (remove \"readonly\")\r\n */\r\nexport type WritableObject<T> = { -readonly [P in keyof T]: T[P] };\r\n\r\n/**\r\n * Type modifier to make object properties readonly.\r\n */\r\nexport type DeepImmutableObject<T> = { readonly [K in keyof T]: DeepImmutable<T[K]> };\r\n\r\n/** @internal */\r\ninterface DeepImmutableArray<T> extends ReadonlyArray<DeepImmutable<T>> {}\r\n/** @internal */\r\n/* interface DeepImmutableMap<K, V> extends ReadonlyMap<DeepImmutable<K>, DeepImmutable<V>> {} // es2015+ only */\r\n\r\nexport type Constructor<C extends new (...args: any[]) => any, I extends InstanceType<C> = InstanceType<C>> = {\r\n new (...args: ConstructorParameters<C>): I;\r\n};\r\n\r\n/**\r\n * Alias type for image sources\r\n */\r\nexport type ImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;\r\n\r\n/**\r\n * Type for typed array like objects\r\n */\r\nexport interface TypedArrayLike extends ArrayBufferView {\r\n /**\r\n * The size in bytes of the array.\r\n */\r\n readonly length: number;\r\n [n: number]: number;\r\n}\r\n\r\n/**\r\n * Interface for a constructor of a TypedArray.\r\n */\r\nexport interface TypedArrayConstructor<T extends TypedArray = TypedArray> {\r\n new (length: number): T;\r\n new (elements: Iterable<number>): T;\r\n new (buffer: ArrayBufferLike, byteOffset?: number, length?: number): T;\r\n /**\r\n * The size in bytes of each element in the array.\r\n */\r\n readonly BYTES_PER_ELEMENT: number;\r\n}\r\n"]}
|