@kitware/vtk.js 25.2.4 → 25.5.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.
@@ -9,7 +9,12 @@ import vtkWebGPUUniformBuffer from './UniformBuffer.js';
9
9
  import { registerOverride } from './ViewNodeFactory.js';
10
10
 
11
11
  var vtkDebugMacro = vtkDebugMacro$1;
12
- var clearFragTemplate = "\n//VTK::Renderer::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::TCoord::Dec\n\n//VTK::RenderEncoder::Dec\n\n//VTK::IOStructs::Dec\n\n@fragment\nfn main(\n//VTK::IOStructs::Input\n)\n//VTK::IOStructs::Output\n{\n var output: fragmentOutput;\n\n var computedColor: vec4<f32> = mapperUBO.BackgroundColor;\n\n //VTK::RenderEncoder::Impl\n return output;\n}\n"; // Light type index gives either 0, 1, or 2 which indicates what type of light there is.
12
+ var clearFragColorTemplate = "\n//VTK::Renderer::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::TCoord::Dec\n\n//VTK::RenderEncoder::Dec\n\n//VTK::IOStructs::Dec\n\n@fragment\nfn main(\n//VTK::IOStructs::Input\n)\n//VTK::IOStructs::Output\n{\n var output: fragmentOutput;\n\n var computedColor: vec4<f32> = mapperUBO.BackgroundColor;\n\n //VTK::RenderEncoder::Impl\n return output;\n}\n";
13
+ var clearFragTextureTemplate = "\nfn vecToRectCoord(dir: vec3<f32>) -> vec2<f32> {\n var tau: f32 = 6.28318530718;\n var pi: f32 = 3.14159265359;\n var out: vec2<f32> = vec2<f32>(0.0);\n\n out.x = atan2(dir.z, dir.x) / tau;\n out.x += 0.5;\n\n var phix: f32 = length(vec2(dir.x, dir.z));\n out.y = atan2(dir.y, phix) / pi + 0.5;\n\n return out;\n}\n\n//VTK::Renderer::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::TCoord::Dec\n\n//VTK::RenderEncoder::Dec\n\n//VTK::IOStructs::Dec\n\n@fragment\nfn main(\n//VTK::IOStructs::Input\n)\n//VTK::IOStructs::Output\n{\n var output: fragmentOutput;\n\n var tcoord: vec4<f32> = vec4<f32>(input.vertexVC.xy, -1, 1);\n var V: vec4<f32> = normalize(mapperUBO.FSQMatrix * tcoord); // vec2<f32>((input.tcoordVS.x - 0.5) * 2, -(input.tcoordVS.y - 0.5) * 2);\n // textureSampleLevel gets rid of some ugly artifacts\n var background = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, vecToRectCoord(V.xyz), 0);\n var computedColor: vec4<f32> = vec4<f32>(background.rgb, 1);\n\n //VTK::RenderEncoder::Impl\n return output;\n}\n";
14
+
15
+ var _fsqClearMat4 = new Float64Array(16);
16
+
17
+ var _tNormalMat4 = new Float64Array(16); // Light type index gives either 0, 1, or 2 which indicates what type of light there is.
13
18
  // While technically, there are only spot and directional lights, within the CellArrayMapper
14
19
  // there is a third, positional light. It is technically just a variant of a spot light with
15
20
  // a cone angle of 90 or above, however certain calculations can be skipped if it is treated
@@ -19,6 +24,7 @@ var clearFragTemplate = "\n//VTK::Renderer::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::
19
24
  // 1 -> directional light
20
25
  // 2 -> spot light
21
26
 
27
+
22
28
  function getLightTypeIndex(light) {
23
29
  if (light.getPositional()) {
24
30
  if (light.getConeAngle() >= 90) {
@@ -124,6 +130,8 @@ function vtkWebGPURenderer(publicAPI, model) {
124
130
  var utime = model.UBO.getSendTime();
125
131
 
126
132
  if (model._parent.getMTime() > utime || publicAPI.getMTime() > utime || model.camera.getMTime() > utime || model.renderable.getMTime() > utime) {
133
+ var _model$renderable$get;
134
+
127
135
  var keyMats = model.webgpuCamera.getKeyMatrices(publicAPI);
128
136
  model.UBO.setArray('WCVCMatrix', keyMats.wcvc);
129
137
  model.UBO.setArray('SCPCMatrix', keyMats.scpc);
@@ -132,6 +140,9 @@ function vtkWebGPURenderer(publicAPI, model) {
132
140
  model.UBO.setArray('VCPCMatrix', keyMats.vcpc);
133
141
  model.UBO.setArray('WCVCNormals', keyMats.normalMatrix);
134
142
  model.UBO.setValue('LightCount', model.renderable.getLights().length);
143
+ model.UBO.setValue('MaxEnvironmentMipLevel', (_model$renderable$get = model.renderable.getEnvironmentTexture()) === null || _model$renderable$get === void 0 ? void 0 : _model$renderable$get.getMipLevel());
144
+ model.UBO.setValue('BackgroundDiffuseStrength', model.renderable.getEnvironmentTextureDiffuseStrength());
145
+ model.UBO.setValue('BackgroundSpecularStrength', model.renderable.getEnvironmentTextureSpecularStrength());
135
146
  var tsize = publicAPI.getYInvertedTiledSizeAndOrigin();
136
147
  model.UBO.setArray('viewportSize', [tsize.usize, tsize.vsize]);
137
148
  model.UBO.setValue('cameraParallel', model.camera.getParallelProjection());
@@ -162,8 +173,7 @@ function vtkWebGPURenderer(publicAPI, model) {
162
173
 
163
174
  var viewCoordinatePosition = lights[_i].getPosition();
164
175
 
165
- vec3.transformMat4(viewCoordinatePosition, viewCoordinatePosition, keyMats.wcvc); // console.log(viewCoordinatePosition);
166
- // viewCoordinatePosition
176
+ vec3.transformMat4(viewCoordinatePosition, viewCoordinatePosition, keyMats.wcvc); // viewCoordinatePosition
167
177
 
168
178
  lightPosArray[offset] = viewCoordinatePosition[0];
169
179
  lightPosArray[offset + 1] = viewCoordinatePosition[1];
@@ -240,26 +250,85 @@ function vtkWebGPURenderer(publicAPI, model) {
240
250
  };
241
251
 
242
252
  publicAPI.clear = function () {
253
+ var _model$backgroundTex;
254
+
243
255
  if (model.renderable.getTransparent() || model.suppressClear) {
244
256
  return;
245
257
  }
246
258
 
247
- var device = model._parent.getDevice();
259
+ var device = model._parent.getDevice(); // Normal Solid Color
260
+
248
261
 
249
262
  if (!model.clearFSQ) {
250
263
  model.clearFSQ = vtkWebGPUFullScreenQuad.newInstance();
251
264
  model.clearFSQ.setDevice(device);
252
265
  model.clearFSQ.setPipelineHash('clearfsq');
253
- model.clearFSQ.setFragmentShaderTemplate(clearFragTemplate);
266
+ model.clearFSQ.setFragmentShaderTemplate(clearFragColorTemplate);
254
267
  var ubo = vtkWebGPUUniformBuffer.newInstance({
255
268
  label: 'mapperUBO'
256
269
  });
270
+ ubo.addEntry('FSQMatrix', 'mat4x4<f32>');
257
271
  ubo.addEntry('BackgroundColor', 'vec4<f32>');
258
272
  model.clearFSQ.setUBO(ubo);
273
+ model.backgroundTex = model.renderable.getEnvironmentTexture();
274
+ } // Textured Background
275
+
276
+
277
+ if (model.clearFSQ.getPipelineHash() !== 'clearfsqwithtexture' && model.renderable.getUseEnvironmentTextureAsBackground() && (_model$backgroundTex = model.backgroundTex) !== null && _model$backgroundTex !== void 0 && _model$backgroundTex.getImageLoaded()) {
278
+ model.clearFSQ.setFragmentShaderTemplate(clearFragTextureTemplate);
279
+
280
+ var _ubo = vtkWebGPUUniformBuffer.newInstance({
281
+ label: 'mapperUBO'
282
+ });
283
+
284
+ _ubo.addEntry('FSQMatrix', 'mat4x4<f32>');
285
+
286
+ _ubo.addEntry('BackgroundColor', 'vec4<f32>');
287
+
288
+ model.clearFSQ.setUBO(_ubo);
289
+ var environmentTextureHash = device.getTextureManager().getTextureForVTKTexture(model.backgroundTex);
290
+
291
+ if (environmentTextureHash.getReady()) {
292
+ var tview = environmentTextureHash.createView("EnvironmentTexture");
293
+ model.clearFSQ.setTextureViews([tview]);
294
+ model.backgroundTexLoaded = true;
295
+ var interpolate = model.backgroundTex.getInterpolate() ? 'linear' : 'nearest';
296
+ tview.addSampler(device, {
297
+ addressModeU: 'repeat',
298
+ addressModeV: 'clamp-to-edge',
299
+ addressModeW: 'repeat',
300
+ minFilter: interpolate,
301
+ magFilter: interpolate,
302
+ mipmapFilter: 'linear'
303
+ });
304
+ }
305
+
306
+ model.clearFSQ.setPipelineHash('clearfsqwithtexture');
307
+ } else if (model.clearFSQ.getPipelineHash() === 'clearfsqwithtexture' && !model.renderable.getUseEnvironmentTextureAsBackground()) {
308
+ // In case the mode is changed at runtime
309
+ model.clearFSQ = vtkWebGPUFullScreenQuad.newInstance();
310
+ model.clearFSQ.setDevice(device);
311
+ model.clearFSQ.setPipelineHash('clearfsq');
312
+ model.clearFSQ.setFragmentShaderTemplate(clearFragColorTemplate);
313
+
314
+ var _ubo2 = vtkWebGPUUniformBuffer.newInstance({
315
+ label: 'mapperUBO'
316
+ });
317
+
318
+ _ubo2.addEntry('FSQMatrix', 'mat4x4<f32>');
319
+
320
+ _ubo2.addEntry('BackgroundColor', 'vec4<f32>');
321
+
322
+ model.clearFSQ.setUBO(_ubo2);
259
323
  }
260
324
 
325
+ var keyMats = model.webgpuCamera.getKeyMatrices(publicAPI);
261
326
  var background = model.renderable.getBackgroundByReference();
262
327
  model.clearFSQ.getUBO().setArray('BackgroundColor', background);
328
+ mat4.transpose(_tNormalMat4, keyMats.normalMatrix);
329
+ mat4.mul(_fsqClearMat4, keyMats.scvc, keyMats.pcsc);
330
+ mat4.mul(_fsqClearMat4, _tNormalMat4, _fsqClearMat4);
331
+ model.clearFSQ.getUBO().setArray('FSQMatrix', _fsqClearMat4);
263
332
  model.clearFSQ.getUBO().sendIfNeeded(device);
264
333
  model.clearFSQ.prepareAndDraw(model.renderEncoder);
265
334
  };
@@ -395,6 +464,9 @@ function extend(publicAPI, model) {
395
464
  model.UBO.addEntry('WCVCNormals', 'mat4x4<f32>');
396
465
  model.UBO.addEntry('viewportSize', 'vec2<f32>');
397
466
  model.UBO.addEntry('LightCount', 'i32');
467
+ model.UBO.addEntry('MaxEnvironmentMipLevel', 'f32');
468
+ model.UBO.addEntry('BackgroundDiffuseStrength', 'f32');
469
+ model.UBO.addEntry('BackgroundSpecularStrength', 'f32');
398
470
  model.UBO.addEntry('cameraParallel', 'u32'); // SSBO (Light data)
399
471
 
400
472
  model.SSBO = vtkWebGPUStorageBuffer.newInstance({
@@ -12,8 +12,12 @@ function vtkWebGPUSampler(publicAPI, model) {
12
12
  publicAPI.create = function (device) {
13
13
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
14
  model.device = device;
15
+ model.options.addressModeU = options.addressModeU ? options.addressModeU : 'clamp-to-edge';
16
+ model.options.addressModeV = options.addressModeV ? options.addressModeV : 'clamp-to-edge';
17
+ model.options.addressModeW = options.addressModeW ? options.addressModeW : 'clamp-to-edge';
15
18
  model.options.magFilter = options.magFilter ? options.magFilter : 'nearest';
16
19
  model.options.minFilter = options.minFilter ? options.minFilter : 'nearest';
20
+ model.options.mipmapFilter = options.mipmapFilter ? options.mipmapFilter : 'nearest';
17
21
  model.options.label = model.label;
18
22
  model.handle = model.device.getHandle().createSampler(model.options);
19
23
  model.bindGroupTime.modified();
@@ -3,6 +3,7 @@ import HalfFloat from '../../Common/Core/HalfFloat.js';
3
3
  import vtkWebGPUBufferManager from './BufferManager.js';
4
4
  import vtkWebGPUTextureView from './TextureView.js';
5
5
  import vtkWebGPUTypes from './Types.js';
6
+ import vtkTexture from '../Core/Texture.js';
6
7
 
7
8
  var BufferUsage = vtkWebGPUBufferManager.BufferUsage; // ----------------------------------------------------------------------------
8
9
  // Global methods
@@ -22,6 +23,7 @@ function vtkWebGPUTexture(publicAPI, model) {
22
23
  model.depth = options.depth ? options.depth : 1;
23
24
  var dimension = model.depth === 1 ? '2d' : '3d';
24
25
  model.format = options.format ? options.format : 'rgba8unorm';
26
+ model.mipLevel = options.mipLevel ? options.mipLevel : 0;
25
27
  /* eslint-disable no-undef */
26
28
 
27
29
  /* eslint-disable no-bitwise */
@@ -37,7 +39,8 @@ function vtkWebGPUTexture(publicAPI, model) {
37
39
  // 'rgba8unorm',
38
40
  usage: model.usage,
39
41
  label: model.label,
40
- dimension: dimension
42
+ dimension: dimension,
43
+ mipLevelCount: model.mipLevel + 1
41
44
  });
42
45
  };
43
46
 
@@ -56,10 +59,11 @@ function vtkWebGPUTexture(publicAPI, model) {
56
59
  /* eslint-enable no-undef */
57
60
 
58
61
  /* eslint-enable no-bitwise */
59
- }; // set the data
60
-
62
+ };
61
63
 
62
64
  publicAPI.writeImageData = function (req) {
65
+ var nativeArray = [];
66
+
63
67
  if (req.canvas) {
64
68
  model.device.getHandle().queue.copyExternalImageToTexture({
65
69
  source: req.canvas,
@@ -84,36 +88,23 @@ function vtkWebGPUTexture(publicAPI, model) {
84
88
  var tDetails = vtkWebGPUTypes.getDetailsFromTextureFormat(model.format);
85
89
  var bufferBytesPerRow = model.width * tDetails.stride;
86
90
 
87
- if (req.nativeArray) {
88
- // create and write the buffer
89
- var buffRequest = {
90
- /* eslint-disable no-undef */
91
- usage: BufferUsage.Texture
92
- /* eslint-enable no-undef */
93
-
94
- };
95
-
96
- if (req.dataArray) {
97
- buffRequest.dataArray = req.dataArray;
98
- }
99
-
100
- buffRequest.nativeArray = req.nativeArray; // bytesPerRow must be a multiple of 256 so we might need to rebuild
91
+ var fixAll = function fixAll(arr, height, depth) {
92
+ // bytesPerRow must be a multiple of 256 so we might need to rebuild
101
93
  // the data here before passing to the buffer. e.g. if it is unorm8x4 then
102
94
  // we need to have width be a multiple of 64
103
-
104
- var inWidthInBytes = req.nativeArray.length / (model.height * model.depth) * req.nativeArray.BYTES_PER_ELEMENT; // is this a half float texture?
95
+ var inWidthInBytes = arr.length / (height * depth) * arr.BYTES_PER_ELEMENT; // is this a half float texture?
105
96
 
106
97
  var halfFloat = tDetails.elementSize === 2 && tDetails.sampleType === 'float'; // if we need to copy the data
107
98
 
108
99
  if (halfFloat || inWidthInBytes % 256) {
109
- var inArray = req.nativeArray;
100
+ var inArray = arr;
110
101
  var inWidth = inWidthInBytes / inArray.BYTES_PER_ELEMENT;
111
102
  var outBytesPerElement = tDetails.elementSize;
112
103
  var outWidthInBytes = 256 * Math.floor((inWidth * outBytesPerElement + 255) / 256);
113
104
  var outWidth = outWidthInBytes / outBytesPerElement;
114
- var outArray = macro.newTypedArray(halfFloat ? 'Uint16Array' : inArray.constructor.name, outWidth * model.height * model.depth);
105
+ var outArray = macro.newTypedArray(halfFloat ? 'Uint16Array' : inArray.constructor.name, outWidth * height * depth);
115
106
 
116
- for (var v = 0; v < model.height * model.depth; v++) {
107
+ for (var v = 0; v < height * depth; v++) {
117
108
  if (halfFloat) {
118
109
  for (var i = 0; i < inWidth; i++) {
119
110
  outArray[v * outWidth + i] = HalfFloat.toHalf(inArray[v * inWidth + i]);
@@ -123,12 +114,14 @@ function vtkWebGPUTexture(publicAPI, model) {
123
114
  }
124
115
  }
125
116
 
126
- buffRequest.nativeArray = outArray;
127
- bufferBytesPerRow = outWidthInBytes;
117
+ return [outArray, outWidthInBytes];
128
118
  }
129
119
 
130
- var buff = model.device.getBufferManager().getBuffer(buffRequest);
131
- model.buffer = buff;
120
+ return [arr, inWidthInBytes];
121
+ };
122
+
123
+ if (req.nativeArray) {
124
+ nativeArray = req.nativeArray;
132
125
  }
133
126
 
134
127
  if (req.image) {
@@ -139,35 +132,74 @@ function vtkWebGPUTexture(publicAPI, model) {
139
132
  ctx.translate(0, canvas.height);
140
133
  ctx.scale(1, -1);
141
134
  ctx.drawImage(req.image, 0, 0, req.image.width, req.image.height, 0, 0, canvas.width, canvas.height);
142
- var imageData = ctx.getImageData(0, 0, req.image.width, req.image.height); // create and write the buffer
135
+ var imageData = ctx.getImageData(0, 0, req.image.width, req.image.height);
136
+ nativeArray = imageData.data;
137
+ }
143
138
 
139
+ var cmdEnc = model.device.createCommandEncoder();
140
+
141
+ if (publicAPI.getDimensionality() !== 3) {
142
+ // Non-3D, supports mipmaps
143
+ var mips = vtkTexture.generateMipmaps(nativeArray, model.width, model.height, model.mipLevel);
144
+ var currentWidth = model.width;
145
+ var currentHeight = model.height;
146
+
147
+ for (var m = 0; m <= model.mipLevel; m++) {
148
+ var fix = fixAll(mips[m], currentHeight, 1);
149
+ bufferBytesPerRow = fix[1];
150
+ var buffRequest = {
151
+ dataArray: req.dataArray ? req.dataArray : null,
152
+ nativeArray: fix[0],
153
+
154
+ /* eslint-disable no-undef */
155
+ usage: BufferUsage.Texture
156
+ /* eslint-enable no-undef */
157
+
158
+ };
159
+ var buff = model.device.getBufferManager().getBuffer(buffRequest);
160
+ cmdEnc.copyBufferToTexture({
161
+ buffer: buff.getHandle(),
162
+ offset: 0,
163
+ bytesPerRow: bufferBytesPerRow,
164
+ rowsPerImage: currentHeight
165
+ }, {
166
+ texture: model.handle,
167
+ mipLevel: m
168
+ }, [currentWidth, currentHeight, 1]);
169
+ currentWidth /= 2;
170
+ currentHeight /= 2;
171
+ }
172
+
173
+ model.device.submitCommandEncoder(cmdEnc);
174
+ model.ready = true;
175
+ } else {
176
+ // 3D, no mipmaps
177
+ var _fix = fixAll(nativeArray, model.height, model.depth);
178
+
179
+ bufferBytesPerRow = _fix[1];
144
180
  var _buffRequest = {
145
- nativeArray: imageData.data,
181
+ dataArray: req.dataArray ? req.dataArray : null,
146
182
 
147
183
  /* eslint-disable no-undef */
148
- usage: BufferUsage.Texture,
149
-
184
+ usage: BufferUsage.Texture
150
185
  /* eslint-enable no-undef */
151
- format: 'unorm8x4'
186
+
152
187
  };
188
+ _buffRequest.nativeArray = _fix[0];
153
189
 
154
190
  var _buff = model.device.getBufferManager().getBuffer(_buffRequest);
155
191
 
156
- model.buffer = _buff;
157
- } // get a buffer for the image
158
-
159
-
160
- var cmdEnc = model.device.createCommandEncoder();
161
- cmdEnc.copyBufferToTexture({
162
- buffer: model.buffer.getHandle(),
163
- offset: 0,
164
- bytesPerRow: bufferBytesPerRow,
165
- rowsPerImage: model.height
166
- }, {
167
- texture: model.handle
168
- }, [model.width, model.height, model.depth]);
169
- model.device.submitCommandEncoder(cmdEnc);
170
- model.ready = true;
192
+ cmdEnc.copyBufferToTexture({
193
+ buffer: _buff.getHandle(),
194
+ offset: 0,
195
+ bytesPerRow: bufferBytesPerRow,
196
+ rowsPerImage: model.height
197
+ }, {
198
+ texture: model.handle
199
+ }, [model.width, model.height, model.depth]);
200
+ model.device.submitCommandEncoder(cmdEnc);
201
+ model.ready = true;
202
+ }
171
203
  }; // when data is pulled out of this texture what scale must be applied to
172
204
  // get back to the original source data. For formats such as r8unorm we
173
205
  // have to multiply by 255.0, for formats such as r16float it is 1.0
@@ -105,7 +105,8 @@ function vtkWebGPUTextureManager(publicAPI, model) {
105
105
  height: req.height,
106
106
  depth: req.depth,
107
107
  format: req.format,
108
- usage: req.usage
108
+ usage: req.usage,
109
+ mipLevel: req.mipLevel
109
110
  }); // fill the texture if we have data
110
111
 
111
112
  if (req.nativeArray || req.image || req.canvas) {
@@ -135,7 +136,7 @@ function vtkWebGPUTextureManager(publicAPI, model) {
135
136
 
136
137
  _fillRequest(treq);
137
138
 
138
- treq.hash = treq.time + treq.format;
139
+ treq.hash = treq.time + treq.format + treq.mipLevel;
139
140
  return model.device.getTextureManager().getTexture(treq);
140
141
  };
141
142
 
@@ -157,7 +158,8 @@ function vtkWebGPUTextureManager(publicAPI, model) {
157
158
 
158
159
  _fillRequest(treq);
159
160
 
160
- treq.hash = treq.time + treq.format;
161
+ treq.mipLevel = srcTexture.getMipLevel();
162
+ treq.hash = treq.time + treq.format + treq.mipLevel;
161
163
  return model.device.getTextureManager().getTexture(treq);
162
164
  };
163
165
  } // ----------------------------------------------------------------------------
package/index.js CHANGED
@@ -5,7 +5,6 @@ import Interaction from './Interaction/index.js';
5
5
  import IO from './IO/index.js';
6
6
  import Rendering from './Rendering/index.js';
7
7
  import VTKProxy from './Proxy/index.js';
8
- import { T as ThirdParty } from './ThirdParty/index.js';
9
8
  import Widgets from './Widgets/index.js';
10
9
  import macro from './macros.js';
11
10
  import vtk from './vtk.js';
@@ -17,7 +16,6 @@ vtk.Interaction = Interaction;
17
16
  vtk.IO = IO;
18
17
  vtk.Proxy = VTKProxy;
19
18
  vtk.Rendering = Rendering;
20
- vtk.ThirdParty = ThirdParty;
21
19
  vtk.Widgets = Widgets;
22
20
  vtk.mtime = macro.getCurrentGlobalMTime;
23
21
  vtk.macro = macro; // Expose vtk to global scope without exporting it so nested namespace
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitware/vtk.js",
3
- "version": "25.2.4",
3
+ "version": "25.5.0",
4
4
  "description": "Visualization Toolkit for the Web",
5
5
  "keywords": [
6
6
  "3d",
@@ -33,14 +33,13 @@
33
33
  "@babel/runtime": "7.17.9",
34
34
  "commander": "9.2.0",
35
35
  "d3-scale": "4.0.2",
36
+ "fflate": "0.7.3",
36
37
  "gl-matrix": "3.4.3",
37
38
  "globalthis": "1.0.3",
38
- "jszip": "3.9.1",
39
- "pako": "2.0.4",
40
39
  "seedrandom": "3.0.5",
41
40
  "shader-loader": "1.3.1",
42
41
  "shelljs": "0.8.5",
43
- "spark-md5": "^3.0.2",
42
+ "spark-md5": "3.0.2",
44
43
  "stream-browserify": "3.0.0",
45
44
  "webworker-promise": "0.5.0",
46
45
  "worker-loader": "3.0.8",
@@ -96,7 +95,7 @@
96
95
  "kw-doc": "3.1.2",
97
96
  "lodash": "4.17.21",
98
97
  "magic-string": "0.26.2",
99
- "moment": "2.29.3",
98
+ "moment": "2.29.4",
100
99
  "patch-package": "6.4.7",
101
100
  "pixelmatch": "5.3.0",
102
101
  "postcss-loader": "6.2.1",
@@ -1,9 +0,0 @@
1
- import JSZip from 'jszip';
2
- import pako from 'pako';
3
-
4
- var ThirdParty = {
5
- JSZip: JSZip,
6
- pako: pako
7
- };
8
-
9
- export { ThirdParty as T };