@mapcomponents/three 1.7.2 → 1.7.4
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/dist/README.md +54 -0
- package/dist/assets/3D/godzilla_simple.glb +0 -0
- package/dist/assets/splats/output.splat +0 -0
- package/dist/components/MlThreeGizmo.d.ts +12 -0
- package/dist/components/MlThreeGizmo.d.ts.map +1 -0
- package/dist/components/MlThreeModelLayer/MlThreeModelLayer.cy.d.ts +2 -0
- package/dist/components/MlThreeModelLayer/MlThreeModelLayer.cy.d.ts.map +1 -0
- package/dist/components/MlThreeModelLayer/MlThreeModelLayer.d.ts +12 -0
- package/dist/components/MlThreeModelLayer/MlThreeModelLayer.d.ts.map +1 -0
- package/dist/components/MlThreeObjectControls.d.ts +41 -0
- package/dist/components/MlThreeObjectControls.d.ts.map +1 -0
- package/dist/components/MlThreeSplatLayer/MlThreeSplatLayer.cy.d.ts +2 -0
- package/dist/components/MlThreeSplatLayer/MlThreeSplatLayer.cy.d.ts.map +1 -0
- package/dist/components/MlThreeSplatLayer/MlThreeSplatLayer.d.ts +12 -0
- package/dist/components/MlThreeSplatLayer/MlThreeSplatLayer.d.ts.map +1 -0
- package/dist/contexts/ThreeContext.d.ts +15 -0
- package/dist/contexts/ThreeContext.d.ts.map +1 -0
- package/dist/contexts/ThreeProvider.d.ts +18 -0
- package/dist/contexts/ThreeProvider.d.ts.map +1 -0
- package/dist/cypress/support/commands.d.ts +1 -0
- package/dist/cypress/support/commands.d.ts.map +1 -0
- package/dist/cypress/support/component.d.ts +9 -0
- package/dist/cypress/support/component.d.ts.map +1 -0
- package/dist/decorators/ThreejsContextDecorator.d.ts +3 -0
- package/dist/decorators/ThreejsContextDecorator.d.ts.map +1 -0
- package/dist/hooks/useThreeModel.d.ts +34 -0
- package/dist/hooks/useThreeModel.d.ts.map +1 -0
- package/dist/html2canvas.esm-CUkZERmf.js +22 -0
- package/dist/html2canvas.esm-Dmi1NfiH.mjs +4871 -0
- package/dist/index-CnnmRv4J.mjs +90875 -0
- package/dist/index-DbqgNSpy.js +5442 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es-BPSzkkDP.mjs +6674 -0
- package/dist/index.es-ajYPKLNS.js +18 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +10 -0
- package/dist/lib/ThreejsSceneHelper.d.ts +16 -0
- package/dist/lib/ThreejsSceneHelper.d.ts.map +1 -0
- package/dist/lib/ThreejsSceneRenderer.d.ts +18 -0
- package/dist/lib/ThreejsSceneRenderer.d.ts.map +1 -0
- package/dist/lib/ThreejsUtils.d.ts +14 -0
- package/dist/lib/ThreejsUtils.d.ts.map +1 -0
- package/dist/lib/splats/GaussianSplattingMesh.d.ts +104 -0
- package/dist/lib/splats/GaussianSplattingMesh.d.ts.map +1 -0
- package/dist/lib/splats/GaussianSplattingShaders.d.ts +10 -0
- package/dist/lib/splats/GaussianSplattingShaders.d.ts.map +1 -0
- package/dist/lib/splats/loaders/PlySplatLoader.d.ts +81 -0
- package/dist/lib/splats/loaders/PlySplatLoader.d.ts.map +1 -0
- package/dist/lib/splats/loaders/SplatLoader.d.ts +10 -0
- package/dist/lib/splats/loaders/SplatLoader.d.ts.map +1 -0
- package/dist/lib/utils/coroutine.d.ts +17 -0
- package/dist/lib/utils/coroutine.d.ts.map +1 -0
- package/dist/package.json +30 -0
- package/dist/purify.es-D1I7B1hP.js +2 -0
- package/dist/purify.es-DHbHSKL1.mjs +528 -0
- package/package.json +13 -7
- package/src/components/{MlTransformControls.tsx → MlThreeGizmo.tsx} +4 -4
- package/src/components/MlThreeModelLayer/MlThreeModelLayer.cy.tsx +2 -3
- package/src/components/MlThreeModelLayer/MlThreeModelLayer.stories.tsx +14 -55
- package/src/components/MlThreeModelLayer/MlThreeModelLayer.tsx +30 -133
- package/src/components/MlThreeObjectControls.tsx +289 -0
- package/src/components/MlThreeSplatLayer/MlThreeSplatLayer.cy.tsx +2 -3
- package/src/components/MlThreeSplatLayer/MlThreeSplatLayer.stories.tsx +14 -58
- package/src/components/MlThreeSplatLayer/MlThreeSplatLayer.tsx +26 -138
- package/src/decorators/ThreejsContextDecorator.tsx +1 -1
- package/src/hooks/useThreeModel.tsx +179 -0
- package/src/index.ts +4 -2
- package/vite.config.ts +2 -2
- package/src/components/ThreeObjectControls.tsx +0 -197
- /package/src/{components → contexts}/ThreeContext.tsx +0 -0
- /package/src/{components → contexts}/ThreeProvider.tsx +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Box3, BufferGeometry, Camera, DataTexture, Group, InstancedBufferGeometry, Material, Mesh, Scene, ShaderMaterial, Sphere, WebGLRenderer } from 'three';
|
|
2
|
+
export type Nullable<T> = T | null;
|
|
3
|
+
/**
|
|
4
|
+
* Geometry for Gaussian Splatting
|
|
5
|
+
*/
|
|
6
|
+
export declare class GaussianSplattingGeometry {
|
|
7
|
+
static build(maxSplatCount?: number): InstancedBufferGeometry;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Radix sort-based depth sorter for Gaussian Splatting
|
|
11
|
+
*/
|
|
12
|
+
export declare class GaussianSplattingSorter {
|
|
13
|
+
private static readonly BATCH_SIZE;
|
|
14
|
+
private static workCount;
|
|
15
|
+
vertexCount: number;
|
|
16
|
+
positions: Float32Array | null;
|
|
17
|
+
hasInit: boolean;
|
|
18
|
+
splatIndex: Uint32Array | null;
|
|
19
|
+
depthValues: Int32Array | null;
|
|
20
|
+
tempDepths: Int32Array | null;
|
|
21
|
+
tempIndices: Uint32Array | null;
|
|
22
|
+
abortController: AbortController | null;
|
|
23
|
+
onmessage: ((splatIndex: Uint32Array) => void) | null;
|
|
24
|
+
terminate(): void;
|
|
25
|
+
private initSortData;
|
|
26
|
+
private sortData;
|
|
27
|
+
init(positions: Float32Array, vertexCount: number): void;
|
|
28
|
+
sortDataAsync(viewProj: number[]): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Material for Gaussian Splatting
|
|
32
|
+
*/
|
|
33
|
+
export declare class GaussianSplattingMaterial {
|
|
34
|
+
static build(shDegree?: number): ShaderMaterial;
|
|
35
|
+
static updateUniforms(renderer: WebGLRenderer, camera: Camera, mesh: GaussianSplattingMesh): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gaussian Splatting mesh renderer
|
|
39
|
+
*/
|
|
40
|
+
export declare class GaussianSplattingMesh extends Mesh {
|
|
41
|
+
private static readonly ROW_OUTPUT_LENGTH;
|
|
42
|
+
private static readonly SPLAT_BATCH_SIZE;
|
|
43
|
+
private vertexCount;
|
|
44
|
+
private worker;
|
|
45
|
+
private frameIdLastUpdate;
|
|
46
|
+
private frameIdThisUpdate;
|
|
47
|
+
private cameraMatrix;
|
|
48
|
+
private internalModelViewMatrix;
|
|
49
|
+
private canPostToWorker;
|
|
50
|
+
private covariancesATextureInternal;
|
|
51
|
+
private covariancesBTextureInternal;
|
|
52
|
+
private centersTextureInternal;
|
|
53
|
+
private colorsTextureInternal;
|
|
54
|
+
private splatPositions;
|
|
55
|
+
private splatPositions2;
|
|
56
|
+
private splatIndex;
|
|
57
|
+
private shTexturesInternal;
|
|
58
|
+
private splatsDataInternal;
|
|
59
|
+
private readonly keepInRam;
|
|
60
|
+
private oldDirection;
|
|
61
|
+
private useRGBACovariants;
|
|
62
|
+
private tmpCovariances;
|
|
63
|
+
private sortIsDirty;
|
|
64
|
+
private lastSortTime;
|
|
65
|
+
private sortThrottleMs;
|
|
66
|
+
private shDegreeValue;
|
|
67
|
+
private tempQuaternion;
|
|
68
|
+
private tempPosition;
|
|
69
|
+
private tempScale;
|
|
70
|
+
private tempColor;
|
|
71
|
+
private tempMatrix;
|
|
72
|
+
boundingBox: Box3 | null;
|
|
73
|
+
boundingSphere: Sphere | null;
|
|
74
|
+
readonly isGaussianSplattingMesh: true;
|
|
75
|
+
readyToDisplay: boolean;
|
|
76
|
+
readonly type: "GaussianSplattingMesh";
|
|
77
|
+
get shDegree(): number;
|
|
78
|
+
get splatsData(): Nullable<ArrayBuffer>;
|
|
79
|
+
get covariancesATexture(): Nullable<DataTexture>;
|
|
80
|
+
get covariancesBTexture(): Nullable<DataTexture>;
|
|
81
|
+
get centersTexture(): Nullable<DataTexture>;
|
|
82
|
+
get colorsTexture(): Nullable<DataTexture>;
|
|
83
|
+
get shTextures(): Nullable<DataTexture[]>;
|
|
84
|
+
constructor();
|
|
85
|
+
setEnabled(enabled: boolean): void;
|
|
86
|
+
postToWorker(forced?: boolean): Promise<void> | undefined;
|
|
87
|
+
onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material, group: Group): void;
|
|
88
|
+
loadDataAsync(data: ArrayBuffer): Promise<void>;
|
|
89
|
+
dispose(): void;
|
|
90
|
+
private copyTextures;
|
|
91
|
+
clone(): GaussianSplattingMesh;
|
|
92
|
+
private makeSplatFromComponents;
|
|
93
|
+
private makeSplatFromBuffer;
|
|
94
|
+
private updateTextures;
|
|
95
|
+
private updateBoundingInfo;
|
|
96
|
+
private updateDataCoroutine;
|
|
97
|
+
updateDataAsync(data: ArrayBuffer, sh?: Uint8Array[]): Promise<void>;
|
|
98
|
+
updateData(data: ArrayBuffer, sh?: Uint8Array[]): void;
|
|
99
|
+
sortDataAsync(camera: Camera, forced?: boolean): Promise<void>;
|
|
100
|
+
private updateSplatIndexBuffer;
|
|
101
|
+
private instantiateWorker;
|
|
102
|
+
private getTextureSize;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=GaussianSplattingMesh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GaussianSplattingMesh.d.ts","sourceRoot":"","sources":["../../../src/lib/splats/GaussianSplattingMesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of mapbox-3d-tiles.
|
|
3
|
+
* Copyright (c) 2024 Jianshun Yang
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* Source: https://github.com/yangjs6/mapbox-3d-tiles
|
|
6
|
+
*/
|
|
7
|
+
declare const vertexShaderSource = "\nprecision highp float;\n#include <common>\n\nattribute float splatIndex;\n\nuniform vec2 invViewport;\nuniform vec2 dataTextureSize;\nuniform vec2 focal;\nuniform sampler2D covariancesATexture;\nuniform sampler2D covariancesBTexture;\nuniform sampler2D centersTexture;\nuniform sampler2D colorsTexture;\n\n#if SH_DEGREE > 0\nuniform highp usampler2D shTexture0;\n#endif\n#if SH_DEGREE > 1\nuniform highp usampler2D shTexture1;\n#endif\n#if SH_DEGREE > 2\nuniform highp usampler2D shTexture2;\n#endif\n\nvarying vec4 vColor;\nvarying vec2 vPosition;\n\nvec2 getDataUV(float index, vec2 textureSize) {\n float y = floor(index / textureSize.x);\n float x = index - y * textureSize.x;\n return vec2((x + 0.5) / textureSize.x, (y + 0.5) / textureSize.y);\n}\n\n#if SH_DEGREE > 0\nivec2 getDataUVint(float index, vec2 textureSize) {\n float y = floor(index / textureSize.x);\n float x = index - y * textureSize.x;\n return ivec2(uint(x + 0.5), uint(y + 0.5));\n}\n#endif\n\nstruct Splat {\n vec4 center;\n vec4 color;\n vec4 covA;\n vec4 covB;\n#if SH_DEGREE > 0\n uvec4 sh0;\n#endif\n#if SH_DEGREE > 1\n uvec4 sh1;\n#endif\n#if SH_DEGREE > 2\n uvec4 sh2;\n#endif\n};\n\nSplat readSplat(float splatIndex) {\n Splat splat;\n vec2 splatUV = getDataUV(splatIndex, dataTextureSize);\n splat.center = texture2D(centersTexture, splatUV);\n splat.color = texture2D(colorsTexture, splatUV);\n splat.covA = texture2D(covariancesATexture, splatUV) * splat.center.w;\n splat.covB = texture2D(covariancesBTexture, splatUV) * splat.center.w;\n#if SH_DEGREE > 0\n ivec2 splatUVint = getDataUVint(splatIndex, dataTextureSize);\n splat.sh0 = texelFetch(shTexture0, splatUVint, 0);\n#endif\n#if SH_DEGREE > 1\n splat.sh1 = texelFetch(shTexture1, splatUVint, 0);\n#endif\n#if SH_DEGREE > 2\n splat.sh2 = texelFetch(shTexture2, splatUVint, 0);\n#endif\n return splat;\n}\n\nvec3 computeColorFromSHDegree(vec3 dir, const vec3 sh[16]) {\n const float SH_C0 = 0.28209479;\n const float SH_C1 = 0.48860251;\n float SH_C2[5];\n SH_C2[0] = 1.092548430;\n SH_C2[1] = -1.09254843;\n SH_C2[2] = 0.315391565;\n SH_C2[3] = -1.09254843;\n SH_C2[4] = 0.546274215;\n \n float SH_C3[7];\n SH_C3[0] = -0.59004358;\n SH_C3[1] = 2.890611442;\n SH_C3[2] = -0.45704579;\n SH_C3[3] = 0.373176332;\n SH_C3[4] = -0.45704579;\n SH_C3[5] = 1.445305721;\n SH_C3[6] = -0.59004358;\n\n vec3 result = sh[0];\n\n#if SH_DEGREE > 0\n float x = dir.x;\n float y = dir.y;\n float z = dir.z;\n result += -SH_C1 * y * sh[1] + SH_C1 * z * sh[2] - SH_C1 * x * sh[3];\n\n#if SH_DEGREE > 1\n float xx = x * x, yy = y * y, zz = z * z;\n float xy = x * y, yz = y * z, xz = x * z;\n result += \n SH_C2[0] * xy * sh[4] +\n SH_C2[1] * yz * sh[5] +\n SH_C2[2] * (2.0f * zz - xx - yy) * sh[6] +\n SH_C2[3] * xz * sh[7] +\n SH_C2[4] * (xx - yy) * sh[8];\n\n#if SH_DEGREE > 2\n result += \n SH_C3[0] * y * (3.0f * xx - yy) * sh[9] +\n SH_C3[1] * xy * z * sh[10] +\n SH_C3[2] * y * (4.0f * zz - xx - yy) * sh[11] +\n SH_C3[3] * z * (2.0f * zz - 3.0f * xx - 3.0f * yy) * sh[12] +\n SH_C3[4] * x * (4.0f * zz - xx - yy) * sh[13] +\n SH_C3[5] * z * (xx - yy) * sh[14] +\n SH_C3[6] * x * (xx - 3.0f * yy) * sh[15];\n#endif\n#endif\n#endif\n\n return result;\n}\n\nvec4 decompose(uint value) {\n vec4 components = vec4(\n float((value) & 255u),\n float((value >> uint(8)) & 255u),\n float((value >> uint(16)) & 255u),\n float((value >> uint(24)) & 255u)\n );\n return components * vec4(2./255.) - vec4(1.);\n}\n\nvec3 computeSH(Splat splat, vec3 color, vec3 dir) {\n vec3 sh[16];\n sh[0] = color;\n\n#if SH_DEGREE > 0\n vec4 sh00 = decompose(splat.sh0.x);\n vec4 sh01 = decompose(splat.sh0.y);\n vec4 sh02 = decompose(splat.sh0.z);\n sh[1] = vec3(sh00.x, sh00.y, sh00.z);\n sh[2] = vec3(sh00.w, sh01.x, sh01.y);\n sh[3] = vec3(sh01.z, sh01.w, sh02.x);\n#endif\n#if SH_DEGREE > 1\n vec4 sh03 = decompose(splat.sh0.w);\n vec4 sh04 = decompose(splat.sh1.x);\n vec4 sh05 = decompose(splat.sh1.y);\n sh[4] = vec3(sh02.y, sh02.z, sh02.w);\n sh[5] = vec3(sh03.x, sh03.y, sh03.z);\n sh[6] = vec3(sh03.w, sh04.x, sh04.y);\n sh[7] = vec3(sh04.z, sh04.w, sh05.x);\n sh[8] = vec3(sh05.y, sh05.z, sh05.w);\n#endif\n#if SH_DEGREE > 2\n vec4 sh06 = decompose(splat.sh1.z);\n vec4 sh07 = decompose(splat.sh1.w);\n vec4 sh08 = decompose(splat.sh2.x);\n vec4 sh09 = decompose(splat.sh2.y);\n vec4 sh10 = decompose(splat.sh2.z);\n vec4 sh11 = decompose(splat.sh2.w);\n sh[9] = vec3(sh06.x, sh06.y, sh06.z);\n sh[10] = vec3(sh06.w, sh07.x, sh07.y);\n sh[11] = vec3(sh07.z, sh07.w, sh08.x);\n sh[12] = vec3(sh08.y, sh08.z, sh08.w);\n sh[13] = vec3(sh09.x, sh09.y, sh09.z);\n sh[14] = vec3(sh09.w, sh10.x, sh10.y);\n sh[15] = vec3(sh10.z, sh10.w, sh11.x);\n#endif\n\n return computeColorFromSHDegree(dir, sh);\n}\n\nvec4 gaussianSplatting(vec2 meshPos, vec3 worldPos, vec2 scale, vec3 covA, vec3 covB, mat4 worldMatrix, mat4 viewMatrix, mat4 projectionMatrix) {\n mat4 modelView = viewMatrix * worldMatrix;\n vec4 camspace = viewMatrix * vec4(worldPos, 1.0);\n vec4 pos2d = projectionMatrix * camspace;\n\n float bounds = 1.2 * pos2d.w;\n if (pos2d.z < -pos2d.w || pos2d.x < -bounds || pos2d.x > bounds || pos2d.y < -bounds || pos2d.y > bounds) {\n return vec4(0.0, 0.0, 2.0, 1.0);\n }\n\n mat3 Vrk = mat3(\n covA.x, covA.y, covA.z,\n covA.y, covB.x, covB.y,\n covA.z, covB.y, covB.z\n );\n\n mat3 J = mat3(\n focal.x / camspace.z, 0., -(focal.x * camspace.x) / (camspace.z * camspace.z),\n 0., focal.y / camspace.z, -(focal.y * camspace.y) / (camspace.z * camspace.z),\n 0., 0., 0.\n );\n\n mat3 T = transpose(mat3(modelView)) * J;\n mat3 cov2d = transpose(T) * Vrk * T;\n\n float mid = (cov2d[0][0] + cov2d[1][1]) / 2.0;\n float radius = length(vec2((cov2d[0][0] - cov2d[1][1]) / 2.0, cov2d[0][1]));\n float lambda1 = mid + radius, lambda2 = mid - radius;\n\n if (lambda2 < 0.0) {\n return vec4(0.0, 0.0, 2.0, 1.0);\n }\n\n vec2 diagonalVector = normalize(vec2(cov2d[0][1], lambda1 - cov2d[0][0]));\n vec2 majorAxis = min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector;\n vec2 minorAxis = min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x);\n\n vec2 vCenter = vec2(pos2d);\n return vec4(\n vCenter + ((meshPos.x * majorAxis + meshPos.y * minorAxis) * invViewport * pos2d.w) * scale,\n pos2d.zw\n );\n}\n\nvoid main() {\n Splat splat = readSplat(splatIndex);\n vec3 covA = splat.covA.xyz;\n vec3 covB = vec3(splat.covA.w, splat.covB.xy);\n\n vec4 worldPos = modelMatrix * vec4(splat.center.xyz, 1.0);\n\n vColor = splat.color;\n vPosition = position.xy;\n\n gl_Position = gaussianSplatting(vPosition, worldPos.xyz, vec2(1.0, 1.0), covA, covB, modelMatrix, viewMatrix, projectionMatrix);\n}\n";
|
|
8
|
+
declare const fragmentShaderSource = "\nprecision highp float;\n#include <common>\n\nvarying vec4 vColor;\nvarying vec2 vPosition;\n\nvec4 gaussianColor(vec4 inColor) {\n float A = -dot(vPosition, vPosition);\n if (A < -4.0) discard;\n float B = exp(A) * inColor.a;\n return vec4(inColor.rgb, B);\n}\n\nvoid main() {\n gl_FragColor = gaussianColor(vColor);\n}\n";
|
|
9
|
+
export { vertexShaderSource, fragmentShaderSource };
|
|
10
|
+
//# sourceMappingURL=GaussianSplattingShaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GaussianSplattingShaders.d.ts","sourceRoot":"","sources":["../../../src/lib/splats/GaussianSplattingShaders.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,QAAA,MAAM,kBAAkB,0+NA6OvB,CAAC;AAEF,QAAA,MAAM,oBAAoB,uVAiBzB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Loader } from 'three';
|
|
2
|
+
import { GaussianSplattingMesh } from '../GaussianSplattingMesh';
|
|
3
|
+
declare const enum PLYType {
|
|
4
|
+
FLOAT = 0,
|
|
5
|
+
INT = 1,
|
|
6
|
+
UINT = 2,
|
|
7
|
+
DOUBLE = 3,
|
|
8
|
+
UCHAR = 4,
|
|
9
|
+
UNDEFINED = 5
|
|
10
|
+
}
|
|
11
|
+
declare const enum PLYValue {
|
|
12
|
+
MIN_X = 0,
|
|
13
|
+
MIN_Y = 1,
|
|
14
|
+
MIN_Z = 2,
|
|
15
|
+
MAX_X = 3,
|
|
16
|
+
MAX_Y = 4,
|
|
17
|
+
MAX_Z = 5,
|
|
18
|
+
MIN_SCALE_X = 6,
|
|
19
|
+
MIN_SCALE_Y = 7,
|
|
20
|
+
MIN_SCALE_Z = 8,
|
|
21
|
+
MAX_SCALE_X = 9,
|
|
22
|
+
MAX_SCALE_Y = 10,
|
|
23
|
+
MAX_SCALE_Z = 11,
|
|
24
|
+
PACKED_POSITION = 12,
|
|
25
|
+
PACKED_ROTATION = 13,
|
|
26
|
+
PACKED_SCALE = 14,
|
|
27
|
+
PACKED_COLOR = 15,
|
|
28
|
+
X = 16,
|
|
29
|
+
Y = 17,
|
|
30
|
+
Z = 18,
|
|
31
|
+
SCALE_0 = 19,
|
|
32
|
+
SCALE_1 = 20,
|
|
33
|
+
SCALE_2 = 21,
|
|
34
|
+
DIFFUSE_RED = 22,
|
|
35
|
+
DIFFUSE_GREEN = 23,
|
|
36
|
+
DIFFUSE_BLUE = 24,
|
|
37
|
+
OPACITY = 25,
|
|
38
|
+
F_DC_0 = 26,
|
|
39
|
+
F_DC_1 = 27,
|
|
40
|
+
F_DC_2 = 28,
|
|
41
|
+
F_DC_3 = 29,
|
|
42
|
+
ROT_0 = 30,
|
|
43
|
+
ROT_1 = 31,
|
|
44
|
+
ROT_2 = 32,
|
|
45
|
+
ROT_3 = 33,
|
|
46
|
+
UNDEFINED = 34
|
|
47
|
+
}
|
|
48
|
+
export interface PlyProperty {
|
|
49
|
+
value: PLYValue;
|
|
50
|
+
type: PLYType;
|
|
51
|
+
offset: number;
|
|
52
|
+
}
|
|
53
|
+
export interface PLYHeader {
|
|
54
|
+
vertexCount: number;
|
|
55
|
+
chunkCount: number;
|
|
56
|
+
rowVertexLength: number;
|
|
57
|
+
rowChunkLength: number;
|
|
58
|
+
vertexProperties: PlyProperty[];
|
|
59
|
+
chunkProperties: PlyProperty[];
|
|
60
|
+
dataView: DataView;
|
|
61
|
+
buffer: ArrayBuffer;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loader for .ply Gaussian Splatting files
|
|
65
|
+
*/
|
|
66
|
+
export declare class PlySplatLoader extends Loader {
|
|
67
|
+
private static readonly ROW_OUTPUT_LENGTH;
|
|
68
|
+
private static readonly SH_C0;
|
|
69
|
+
private static readonly PLY_CONVERSION_BATCH_SIZE;
|
|
70
|
+
load(url: string, onLoad: (mesh: GaussianSplattingMesh) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: unknown) => void): void;
|
|
71
|
+
parse(plyBuffer: ArrayBuffer, onLoad: (mesh: GaussianSplattingMesh) => void, onError?: (error: unknown) => void): void;
|
|
72
|
+
static ConvertPLYToSplatAsync(data: ArrayBuffer): Promise<ArrayBuffer>;
|
|
73
|
+
static ConvertPLYToSplat(data: ArrayBuffer, useCoroutine?: boolean): Generator<void, ArrayBuffer, void>;
|
|
74
|
+
private static getCompressedChunks;
|
|
75
|
+
private static getSplat;
|
|
76
|
+
private static typeNameToEnum;
|
|
77
|
+
private static valueNameToEnum;
|
|
78
|
+
static ParseHeader(data: ArrayBuffer): PLYHeader | null;
|
|
79
|
+
}
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=PlySplatLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlySplatLoader.d.ts","sourceRoot":"","sources":["../../../../src/lib/splats/loaders/PlySplatLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAuB,MAAM,EAAyB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAmDjE,mBAAW,OAAO;IACjB,KAAK,IAAA;IACL,GAAG,IAAA;IACH,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,KAAK,IAAA;IACL,SAAS,IAAA;CACT;AAED,mBAAW,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,WAAW,IAAA;IACX,WAAW,IAAA;IACX,WAAW,IAAA;IACX,WAAW,IAAA;IACX,WAAW,KAAA;IACX,WAAW,KAAA;IACX,eAAe,KAAA;IACf,eAAe,KAAA;IACf,YAAY,KAAA;IACZ,YAAY,KAAA;IACZ,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,OAAO,KAAA;IACP,OAAO,KAAA;IACP,OAAO,KAAA;IACP,WAAW,KAAA;IACX,aAAa,KAAA;IACb,YAAY,KAAA;IACZ,OAAO,KAAA;IACP,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,KAAK,KAAA;IACL,KAAK,KAAA;IACL,KAAK,KAAA;IACL,KAAK,KAAA;IACL,SAAS,KAAA;CACT;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,MAAM;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAuB;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IAEjD,IAAI,CACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,EAC7C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,IAAI;IAeP,KAAK,CACJ,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,IAAI;WAeM,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAO5E,MAAM,CAAE,iBAAiB,CACxB,IAAI,EAAE,WAAW,EACjB,YAAY,UAAQ,GAClB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;IAiBrC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoElC,OAAO,CAAC,MAAM,CAAC,QAAQ;IA6IvB,OAAO,CAAC,MAAM,CAAC,cAAc;IAiB7B,OAAO,CAAC,MAAM,CAAC,eAAe;IA2C9B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;CAsEvD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Loader } from 'three';
|
|
2
|
+
import { GaussianSplattingMesh } from '../GaussianSplattingMesh';
|
|
3
|
+
/**
|
|
4
|
+
* Loader for .splat Gaussian Splatting files
|
|
5
|
+
*/
|
|
6
|
+
export declare class SplatLoader extends Loader {
|
|
7
|
+
load(url: string, onLoad: (mesh: GaussianSplattingMesh) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: unknown) => void): void;
|
|
8
|
+
parse(buffer: ArrayBuffer, onLoad: (mesh: GaussianSplattingMesh) => void, onError?: (error: unknown) => void): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=SplatLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplatLoader.d.ts","sourceRoot":"","sources":["../../../../src/lib/splats/loaders/SplatLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,MAAM,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IAC7B,IAAI,CACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,EAC7C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,IAAI;IAeP,KAAK,CACJ,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,IAAI;CAaP"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived from mapbox-3d-tiles by Jianshun Yang (MIT License)
|
|
3
|
+
* https://github.com/yangjs6/mapbox-3d-tiles
|
|
4
|
+
*
|
|
5
|
+
* Coroutine utilities for non-blocking async operations using generators.
|
|
6
|
+
* Allows long-running tasks to yield control periodically to prevent UI freezing.
|
|
7
|
+
*/
|
|
8
|
+
export type Coroutine<T> = Iterator<void, T, void> & IterableIterator<void>;
|
|
9
|
+
export type AsyncCoroutine<T> = Iterator<void | Promise<void>, T, void> & IterableIterator<void | Promise<void>>;
|
|
10
|
+
export type CoroutineStep<T> = IteratorResult<void, T>;
|
|
11
|
+
export type CoroutineScheduler<T> = (coroutine: AsyncCoroutine<T>, onStep: (result: CoroutineStep<T>) => void, onError: (error: any) => void) => void;
|
|
12
|
+
export declare function inlineScheduler<T>(coroutine: AsyncCoroutine<T>, onStep: (result: CoroutineStep<T>) => void, onError: (error: any) => void): void;
|
|
13
|
+
export declare function createYieldingScheduler<T>(yieldAfterMs?: number): CoroutineScheduler<T>;
|
|
14
|
+
export declare function runCoroutine<T>(coroutine: AsyncCoroutine<T>, scheduler: CoroutineScheduler<T>, onSuccess: (result: T) => void, onError: (error: any) => void, abortSignal?: AbortSignal): void;
|
|
15
|
+
export declare function runCoroutineSync<T>(coroutine: Coroutine<T>, abortSignal?: AbortSignal): T;
|
|
16
|
+
export declare function runCoroutineAsync<T>(coroutine: AsyncCoroutine<T>, scheduler: CoroutineScheduler<T>, abortSignal?: AbortSignal): Promise<T>;
|
|
17
|
+
//# sourceMappingURL=coroutine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coroutine.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/coroutine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5E,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GACtE,gBAAgB,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CACnC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,KACzB,IAAI,CAAC;AAEV,wBAAgB,eAAe,CAAC,CAAC,EAChC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC3B,IAAI,CAeN;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,YAAY,SAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAanF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC7B,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAC5B,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAChC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,EAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC7B,WAAW,CAAC,EAAE,WAAW,GACvB,IAAI,CA+BN;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC,CAiBzF;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAC5B,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAChC,WAAW,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,CAAC,CAAC,CAIZ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mapcomponents/three",
|
|
3
|
+
"version": "1.7.4",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"main": "dist/index.cjs.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "dist/index.mjs",
|
|
11
|
+
"require": "dist/index.cjs.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"peerDependencies": {
|
|
18
|
+
"@mapcomponents/react-maplibre": "workspace:*",
|
|
19
|
+
"react": ">=18.0.0",
|
|
20
|
+
"react-dom": ">=18.0.0"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@mui/material": "^7.3.2",
|
|
24
|
+
"maplibre-gl": "^5.7.0",
|
|
25
|
+
"three": "^0.182.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/three": "^0.182.0"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */const{entries:Tt,setPrototypeOf:rt,isFrozen:Bt,getPrototypeOf:Yt,getOwnPropertyDescriptor:Xt}=Object;let{freeze:S,seal:y,create:_t}=Object,{apply:we,construct:xe}=typeof Reflect<"u"&&Reflect;S||(S=function(o){return o});y||(y=function(o){return o});we||(we=function(o,l,s){return o.apply(l,s)});xe||(xe=function(o,l){return new o(...l)});const le=R(Array.prototype.forEach),jt=R(Array.prototype.lastIndexOf),st=R(Array.prototype.pop),$=R(Array.prototype.push),Vt=R(Array.prototype.splice),fe=R(String.prototype.toLowerCase),De=R(String.prototype.toString),lt=R(String.prototype.match),q=R(String.prototype.replace),$t=R(String.prototype.indexOf),qt=R(String.prototype.trim),L=R(Object.prototype.hasOwnProperty),A=R(RegExp.prototype.test),K=Kt(TypeError);function R(r){return function(o){o instanceof RegExp&&(o.lastIndex=0);for(var l=arguments.length,s=new Array(l>1?l-1:0),T=1;T<l;T++)s[T-1]=arguments[T];return we(r,o,s)}}function Kt(r){return function(){for(var o=arguments.length,l=new Array(o),s=0;s<o;s++)l[s]=arguments[s];return xe(r,l)}}function a(r,o){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:fe;rt&&rt(r,null);let s=o.length;for(;s--;){let T=o[s];if(typeof T=="string"){const D=l(T);D!==T&&(Bt(o)||(o[s]=D),T=D)}r[T]=!0}return r}function Zt(r){for(let o=0;o<r.length;o++)L(r,o)||(r[o]=null);return r}function C(r){const o=_t(null);for(const[l,s]of Tt(r))L(r,l)&&(Array.isArray(s)?o[l]=Zt(s):s&&typeof s=="object"&&s.constructor===Object?o[l]=C(s):o[l]=s);return o}function Z(r,o){for(;r!==null;){const s=Xt(r,o);if(s){if(s.get)return R(s.get);if(typeof s.value=="function")return R(s.value)}r=Yt(r)}function l(){return null}return l}const ct=S(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Ne=S(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ie=S(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Jt=S(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Me=S(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Qt=S(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ft=S(["#text"]),ut=S(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ce=S(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),mt=S(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),ce=S(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),en=y(/\{\{[\w\W]*|[\w\W]*\}\}/gm),tn=y(/<%[\w\W]*|[\w\W]*%>/gm),nn=y(/\$\{[\w\W]*/gm),on=y(/^data-[\-\w.\u00B7-\uFFFF]+$/),an=y(/^aria-[\-\w]+$/),Et=y(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),rn=y(/^(?:\w+script|data):/i),sn=y(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),gt=y(/^html$/i),ln=y(/^[a-z][.\w]*(-[.\w]+)+$/i);var pt=Object.freeze({__proto__:null,ARIA_ATTR:an,ATTR_WHITESPACE:sn,CUSTOM_ELEMENT:ln,DATA_ATTR:on,DOCTYPE_NAME:gt,ERB_EXPR:tn,IS_ALLOWED_URI:Et,IS_SCRIPT_OR_DATA:rn,MUSTACHE_EXPR:en,TMPLIT_EXPR:nn});const J={element:1,text:3,progressingInstruction:7,comment:8,document:9},cn=function(){return typeof window>"u"?null:window},fn=function(o,l){if(typeof o!="object"||typeof o.createPolicy!="function")return null;let s=null;const T="data-tt-policy-suffix";l&&l.hasAttribute(T)&&(s=l.getAttribute(T));const D="dompurify"+(s?"#"+s:"");try{return o.createPolicy(D,{createHTML(x){return x},createScriptURL(x){return x}})}catch{return console.warn("TrustedTypes policy "+D+" could not be created."),null}},dt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function ht(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:cn();const o=i=>ht(i);if(o.version="3.2.6",o.removed=[],!r||!r.document||r.document.nodeType!==J.document||!r.Element)return o.isSupported=!1,o;let{document:l}=r;const s=l,T=s.currentScript,{DocumentFragment:D,HTMLTemplateElement:x,Node:ue,Element:Pe,NodeFilter:G,NamedNodeMap:At=r.NamedNodeMap||r.MozNamedAttrMap,HTMLFormElement:St,DOMParser:Rt,trustedTypes:Q}=r,W=Pe.prototype,Ot=Z(W,"cloneNode"),yt=Z(W,"remove"),Lt=Z(W,"nextSibling"),bt=Z(W,"childNodes"),ee=Z(W,"parentNode");if(typeof x=="function"){const i=l.createElement("template");i.content&&i.content.ownerDocument&&(l=i.content.ownerDocument)}let g,B="";const{implementation:me,createNodeIterator:Dt,createDocumentFragment:Nt,getElementsByTagName:It}=l,{importNode:Mt}=s;let h=dt();o.isSupported=typeof Tt=="function"&&typeof ee=="function"&&me&&me.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:pe,ERB_EXPR:de,TMPLIT_EXPR:Te,DATA_ATTR:Ct,ARIA_ATTR:wt,IS_SCRIPT_OR_DATA:xt,ATTR_WHITESPACE:ve,CUSTOM_ELEMENT:Pt}=pt;let{IS_ALLOWED_URI:ke}=pt,m=null;const Ue=a({},[...ct,...Ne,...Ie,...Me,...ft]);let d=null;const Fe=a({},[...ut,...Ce,...mt,...ce]);let f=Object.seal(_t(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Y=null,_e=null,He=!0,Ee=!0,ze=!1,Ge=!0,P=!1,te=!0,w=!1,ge=!1,he=!1,v=!1,ne=!1,oe=!1,We=!0,Be=!1;const vt="user-content-";let Ae=!0,X=!1,k={},U=null;const Ye=a({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Xe=null;const je=a({},["audio","video","img","source","image","track"]);let Se=null;const Ve=a({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ie="http://www.w3.org/1998/Math/MathML",ae="http://www.w3.org/2000/svg",N="http://www.w3.org/1999/xhtml";let F=N,Re=!1,Oe=null;const kt=a({},[ie,ae,N],De);let re=a({},["mi","mo","mn","ms","mtext"]),se=a({},["annotation-xml"]);const Ut=a({},["title","style","font","a","script"]);let j=null;const Ft=["application/xhtml+xml","text/html"],Ht="text/html";let p=null,H=null;const zt=l.createElement("form"),$e=function(e){return e instanceof RegExp||e instanceof Function},ye=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(H&&H===e)){if((!e||typeof e!="object")&&(e={}),e=C(e),j=Ft.indexOf(e.PARSER_MEDIA_TYPE)===-1?Ht:e.PARSER_MEDIA_TYPE,p=j==="application/xhtml+xml"?De:fe,m=L(e,"ALLOWED_TAGS")?a({},e.ALLOWED_TAGS,p):Ue,d=L(e,"ALLOWED_ATTR")?a({},e.ALLOWED_ATTR,p):Fe,Oe=L(e,"ALLOWED_NAMESPACES")?a({},e.ALLOWED_NAMESPACES,De):kt,Se=L(e,"ADD_URI_SAFE_ATTR")?a(C(Ve),e.ADD_URI_SAFE_ATTR,p):Ve,Xe=L(e,"ADD_DATA_URI_TAGS")?a(C(je),e.ADD_DATA_URI_TAGS,p):je,U=L(e,"FORBID_CONTENTS")?a({},e.FORBID_CONTENTS,p):Ye,Y=L(e,"FORBID_TAGS")?a({},e.FORBID_TAGS,p):C({}),_e=L(e,"FORBID_ATTR")?a({},e.FORBID_ATTR,p):C({}),k=L(e,"USE_PROFILES")?e.USE_PROFILES:!1,He=e.ALLOW_ARIA_ATTR!==!1,Ee=e.ALLOW_DATA_ATTR!==!1,ze=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ge=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,P=e.SAFE_FOR_TEMPLATES||!1,te=e.SAFE_FOR_XML!==!1,w=e.WHOLE_DOCUMENT||!1,v=e.RETURN_DOM||!1,ne=e.RETURN_DOM_FRAGMENT||!1,oe=e.RETURN_TRUSTED_TYPE||!1,he=e.FORCE_BODY||!1,We=e.SANITIZE_DOM!==!1,Be=e.SANITIZE_NAMED_PROPS||!1,Ae=e.KEEP_CONTENT!==!1,X=e.IN_PLACE||!1,ke=e.ALLOWED_URI_REGEXP||Et,F=e.NAMESPACE||N,re=e.MATHML_TEXT_INTEGRATION_POINTS||re,se=e.HTML_INTEGRATION_POINTS||se,f=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&$e(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(f.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&$e(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(f.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(f.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),P&&(Ee=!1),ne&&(v=!0),k&&(m=a({},ft),d=[],k.html===!0&&(a(m,ct),a(d,ut)),k.svg===!0&&(a(m,Ne),a(d,Ce),a(d,ce)),k.svgFilters===!0&&(a(m,Ie),a(d,Ce),a(d,ce)),k.mathMl===!0&&(a(m,Me),a(d,mt),a(d,ce))),e.ADD_TAGS&&(m===Ue&&(m=C(m)),a(m,e.ADD_TAGS,p)),e.ADD_ATTR&&(d===Fe&&(d=C(d)),a(d,e.ADD_ATTR,p)),e.ADD_URI_SAFE_ATTR&&a(Se,e.ADD_URI_SAFE_ATTR,p),e.FORBID_CONTENTS&&(U===Ye&&(U=C(U)),a(U,e.FORBID_CONTENTS,p)),Ae&&(m["#text"]=!0),w&&a(m,["html","head","body"]),m.table&&(a(m,["tbody"]),delete Y.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw K('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw K('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');g=e.TRUSTED_TYPES_POLICY,B=g.createHTML("")}else g===void 0&&(g=fn(Q,T)),g!==null&&typeof B=="string"&&(B=g.createHTML(""));S&&S(e),H=e}},qe=a({},[...Ne,...Ie,...Jt]),Ke=a({},[...Me,...Qt]),Gt=function(e){let t=ee(e);(!t||!t.tagName)&&(t={namespaceURI:F,tagName:"template"});const n=fe(e.tagName),c=fe(t.tagName);return Oe[e.namespaceURI]?e.namespaceURI===ae?t.namespaceURI===N?n==="svg":t.namespaceURI===ie?n==="svg"&&(c==="annotation-xml"||re[c]):!!qe[n]:e.namespaceURI===ie?t.namespaceURI===N?n==="math":t.namespaceURI===ae?n==="math"&&se[c]:!!Ke[n]:e.namespaceURI===N?t.namespaceURI===ae&&!se[c]||t.namespaceURI===ie&&!re[c]?!1:!Ke[n]&&(Ut[n]||!qe[n]):!!(j==="application/xhtml+xml"&&Oe[e.namespaceURI]):!1},b=function(e){$(o.removed,{element:e});try{ee(e).removeChild(e)}catch{yt(e)}},z=function(e,t){try{$(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch{$(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is")if(v||ne)try{b(t)}catch{}else try{t.setAttribute(e,"")}catch{}},Ze=function(e){let t=null,n=null;if(he)e="<remove></remove>"+e;else{const u=lt(e,/^[\r\n\t ]+/);n=u&&u[0]}j==="application/xhtml+xml"&&F===N&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const c=g?g.createHTML(e):e;if(F===N)try{t=new Rt().parseFromString(c,j)}catch{}if(!t||!t.documentElement){t=me.createDocument(F,"template",null);try{t.documentElement.innerHTML=Re?B:c}catch{}}const _=t.body||t.documentElement;return e&&n&&_.insertBefore(l.createTextNode(n),_.childNodes[0]||null),F===N?It.call(t,w?"html":"body")[0]:w?t.documentElement:_},Je=function(e){return Dt.call(e.ownerDocument||e,e,G.SHOW_ELEMENT|G.SHOW_COMMENT|G.SHOW_TEXT|G.SHOW_PROCESSING_INSTRUCTION|G.SHOW_CDATA_SECTION,null)},Le=function(e){return e instanceof St&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof At)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Qe=function(e){return typeof ue=="function"&&e instanceof ue};function I(i,e,t){le(i,n=>{n.call(o,e,t,H)})}const et=function(e){let t=null;if(I(h.beforeSanitizeElements,e,null),Le(e))return b(e),!0;const n=p(e.nodeName);if(I(h.uponSanitizeElement,e,{tagName:n,allowedTags:m}),te&&e.hasChildNodes()&&!Qe(e.firstElementChild)&&A(/<[/\w!]/g,e.innerHTML)&&A(/<[/\w!]/g,e.textContent)||e.nodeType===J.progressingInstruction||te&&e.nodeType===J.comment&&A(/<[/\w]/g,e.data))return b(e),!0;if(!m[n]||Y[n]){if(!Y[n]&&nt(n)&&(f.tagNameCheck instanceof RegExp&&A(f.tagNameCheck,n)||f.tagNameCheck instanceof Function&&f.tagNameCheck(n)))return!1;if(Ae&&!U[n]){const c=ee(e)||e.parentNode,_=bt(e)||e.childNodes;if(_&&c){const u=_.length;for(let O=u-1;O>=0;--O){const M=Ot(_[O],!0);M.__removalCount=(e.__removalCount||0)+1,c.insertBefore(M,Lt(e))}}}return b(e),!0}return e instanceof Pe&&!Gt(e)||(n==="noscript"||n==="noembed"||n==="noframes")&&A(/<\/no(script|embed|frames)/i,e.innerHTML)?(b(e),!0):(P&&e.nodeType===J.text&&(t=e.textContent,le([pe,de,Te],c=>{t=q(t,c," ")}),e.textContent!==t&&($(o.removed,{element:e.cloneNode()}),e.textContent=t)),I(h.afterSanitizeElements,e,null),!1)},tt=function(e,t,n){if(We&&(t==="id"||t==="name")&&(n in l||n in zt))return!1;if(!(Ee&&!_e[t]&&A(Ct,t))){if(!(He&&A(wt,t))){if(!d[t]||_e[t]){if(!(nt(e)&&(f.tagNameCheck instanceof RegExp&&A(f.tagNameCheck,e)||f.tagNameCheck instanceof Function&&f.tagNameCheck(e))&&(f.attributeNameCheck instanceof RegExp&&A(f.attributeNameCheck,t)||f.attributeNameCheck instanceof Function&&f.attributeNameCheck(t))||t==="is"&&f.allowCustomizedBuiltInElements&&(f.tagNameCheck instanceof RegExp&&A(f.tagNameCheck,n)||f.tagNameCheck instanceof Function&&f.tagNameCheck(n))))return!1}else if(!Se[t]){if(!A(ke,q(n,ve,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&$t(n,"data:")===0&&Xe[e])){if(!(ze&&!A(xt,q(n,ve,"")))){if(n)return!1}}}}}}return!0},nt=function(e){return e!=="annotation-xml"&<(e,Pt)},ot=function(e){I(h.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||Le(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:d,forceKeepAttr:void 0};let c=t.length;for(;c--;){const _=t[c],{name:u,namespaceURI:O,value:M}=_,V=p(u),be=M;let E=u==="value"?be:qt(be);if(n.attrName=V,n.attrValue=E,n.keepAttr=!0,n.forceKeepAttr=void 0,I(h.uponSanitizeAttribute,e,n),E=n.attrValue,Be&&(V==="id"||V==="name")&&(z(u,e),E=vt+E),te&&A(/((--!?|])>)|<\/(style|title)/i,E)){z(u,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){z(u,e);continue}if(!Ge&&A(/\/>/i,E)){z(u,e);continue}P&&le([pe,de,Te],at=>{E=q(E,at," ")});const it=p(e.nodeName);if(!tt(it,V,E)){z(u,e);continue}if(g&&typeof Q=="object"&&typeof Q.getAttributeType=="function"&&!O)switch(Q.getAttributeType(it,V)){case"TrustedHTML":{E=g.createHTML(E);break}case"TrustedScriptURL":{E=g.createScriptURL(E);break}}if(E!==be)try{O?e.setAttributeNS(O,u,E):e.setAttribute(u,E),Le(e)?b(e):st(o.removed)}catch{z(u,e)}}I(h.afterSanitizeAttributes,e,null)},Wt=function i(e){let t=null;const n=Je(e);for(I(h.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)I(h.uponSanitizeShadowNode,t,null),et(t),ot(t),t.content instanceof D&&i(t.content);I(h.afterSanitizeShadowDOM,e,null)};return o.sanitize=function(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=null,n=null,c=null,_=null;if(Re=!i,Re&&(i="<!-->"),typeof i!="string"&&!Qe(i))if(typeof i.toString=="function"){if(i=i.toString(),typeof i!="string")throw K("dirty is not a string, aborting")}else throw K("toString is not a function");if(!o.isSupported)return i;if(ge||ye(e),o.removed=[],typeof i=="string"&&(X=!1),X){if(i.nodeName){const M=p(i.nodeName);if(!m[M]||Y[M])throw K("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof ue)t=Ze("<!---->"),n=t.ownerDocument.importNode(i,!0),n.nodeType===J.element&&n.nodeName==="BODY"||n.nodeName==="HTML"?t=n:t.appendChild(n);else{if(!v&&!P&&!w&&i.indexOf("<")===-1)return g&&oe?g.createHTML(i):i;if(t=Ze(i),!t)return v?null:oe?B:""}t&&he&&b(t.firstChild);const u=Je(X?i:t);for(;c=u.nextNode();)et(c),ot(c),c.content instanceof D&&Wt(c.content);if(X)return i;if(v){if(ne)for(_=Nt.call(t.ownerDocument);t.firstChild;)_.appendChild(t.firstChild);else _=t;return(d.shadowroot||d.shadowrootmode)&&(_=Mt.call(s,_,!0)),_}let O=w?t.outerHTML:t.innerHTML;return w&&m["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&A(gt,t.ownerDocument.doctype.name)&&(O="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
|
|
2
|
+
`+O),P&&le([pe,de,Te],M=>{O=q(O,M," ")}),g&&oe?g.createHTML(O):O},o.setConfig=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ye(i),ge=!0},o.clearConfig=function(){H=null,ge=!1},o.isValidAttribute=function(i,e,t){H||ye({});const n=p(i),c=p(e);return tt(n,c,t)},o.addHook=function(i,e){typeof e=="function"&&$(h[i],e)},o.removeHook=function(i,e){if(e!==void 0){const t=jt(h[i],e);return t===-1?void 0:Vt(h[i],t,1)[0]}return st(h[i])},o.removeHooks=function(i){h[i]=[]},o.removeAllHooks=function(){h=dt()},o}var un=ht();exports.default=un;
|