@woosh/meep-engine 2.100.1 → 2.100.2

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.
Files changed (42) hide show
  1. package/build/meep.cjs +21 -2
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +21 -2
  4. package/package.json +1 -1
  5. package/src/core/color/oklab/Okhsv.spec.d.ts +2 -0
  6. package/src/core/color/oklab/Okhsv.spec.d.ts.map +1 -0
  7. package/src/core/color/oklab/Okhsv.spec.js +17 -0
  8. package/src/core/color/oklab/XYZ.spec.js +2 -2
  9. package/src/core/color/oklab/compute_max_saturation.d.ts +11 -0
  10. package/src/core/color/oklab/compute_max_saturation.d.ts.map +1 -0
  11. package/src/core/color/oklab/compute_max_saturation.js +84 -0
  12. package/src/core/color/oklab/find_cusp.d.ts +10 -0
  13. package/src/core/color/oklab/find_cusp.d.ts.map +1 -0
  14. package/src/core/color/oklab/find_cusp.js +27 -0
  15. package/src/core/color/oklab/find_gamut_intersection.d.ts +15 -0
  16. package/src/core/color/oklab/find_gamut_intersection.d.ts.map +1 -0
  17. package/src/core/color/oklab/find_gamut_intersection.js +101 -0
  18. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +9 -0
  19. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -0
  20. package/src/core/color/oklab/linear_srgb_to_okhsv.js +74 -0
  21. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +9 -0
  22. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -0
  23. package/src/core/color/oklab/linear_srgb_to_oklab.js +20 -0
  24. package/src/core/color/oklab/okhsv_to_linear_srgb.d.ts +9 -0
  25. package/src/core/color/oklab/okhsv_to_linear_srgb.d.ts.map +1 -0
  26. package/src/core/color/oklab/okhsv_to_linear_srgb.js +59 -0
  27. package/src/core/color/oklab/oklab_to_linear_srgb.d.ts +10 -0
  28. package/src/core/color/oklab/oklab_to_linear_srgb.d.ts.map +1 -0
  29. package/src/core/color/oklab/oklab_to_linear_srgb.js +21 -0
  30. package/src/core/color/oklab/oklab_to_xyz.d.ts +5 -2
  31. package/src/core/color/oklab/oklab_to_xyz.d.ts.map +1 -1
  32. package/src/core/color/oklab/oklab_to_xyz.js +5 -5
  33. package/src/core/color/oklab/oklab_to_xyz.spec.js +4 -4
  34. package/src/core/color/oklab/toe.d.ts +13 -0
  35. package/src/core/color/oklab/toe.d.ts.map +1 -0
  36. package/src/core/color/oklab/toe.js +22 -0
  37. package/src/core/color/oklab/xyz_to_oklab.d.ts +5 -2
  38. package/src/core/color/oklab/xyz_to_oklab.d.ts.map +1 -1
  39. package/src/core/color/oklab/xyz_to_oklab.js +5 -5
  40. package/src/core/color/oklab/xyz_to_oklab.spec.js +4 -4
  41. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
  42. package/src/engine/asset/loaders/ArrayBufferLoader.js +22 -2
@@ -0,0 +1,13 @@
1
+ /**
2
+ * toe function for L_r
3
+ * @param {number} x
4
+ * @return {number}
5
+ */
6
+ export function toe(x: number): number;
7
+ /**
8
+ * inverse toe function for L_r
9
+ * @param {number} x
10
+ * @return {number}
11
+ */
12
+ export function toe_inv(x: number): number;
13
+ //# sourceMappingURL=toe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toe.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/toe.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,uBAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,2BAHW,MAAM,GACL,MAAM,CAIjB"}
@@ -0,0 +1,22 @@
1
+
2
+ const k_1 = 0.206;
3
+ const k_2 = 0.03;
4
+ const k_3 = (1. + k_1) / (1. + k_2);
5
+
6
+ /**
7
+ * toe function for L_r
8
+ * @param {number} x
9
+ * @return {number}
10
+ */
11
+ export function toe(x){
12
+ return 0.5 * (k_3 * x - k_1 + Math.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x));
13
+ }
14
+
15
+ /**
16
+ * inverse toe function for L_r
17
+ * @param {number} x
18
+ * @return {number}
19
+ */
20
+ export function toe_inv(x){
21
+ return (x * x + k_1 * x) / (k_3 * (x + k_2));
22
+ }
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Converts CIE XYZ color space to Oklab.
3
3
  * Oklab as defined by Björn Ottosson
4
- * @param {number[]} input XYZ
4
+ * @copyright "Company Named Limited" 2023
5
5
  * @param {number[]} output Lab
6
+ * @param {number} x
7
+ * @param {number} y
8
+ * @param {number} z
6
9
  */
7
- export function xyz_to_oklab(input: number[], output: number[]): void;
10
+ export function xyz_to_oklab(output: number[], x: number, y: number, z: number): void;
8
11
  //# sourceMappingURL=xyz_to_oklab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xyz_to_oklab.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/xyz_to_oklab.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAHW,MAAM,EAAE,UACR,MAAM,EAAE,QAwBlB"}
1
+ {"version":3,"file":"xyz_to_oklab.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/xyz_to_oklab.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qCALW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Converts CIE XYZ color space to Oklab.
3
3
  * Oklab as defined by Björn Ottosson
4
- * @param {number[]} input XYZ
4
+ * @copyright "Company Named Limited" 2023
5
5
  * @param {number[]} output Lab
6
+ * @param {number} x
7
+ * @param {number} y
8
+ * @param {number} z
6
9
  */
7
- export function xyz_to_oklab(input, output) {
8
- const x = input[0];
9
- const y = input[1];
10
- const z = input[2];
10
+ export function xyz_to_oklab(output, x, y, z) {
11
11
 
12
12
  // M1 * (X Y Z)
13
13
  const l = 0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z;
@@ -4,25 +4,25 @@ test("known samples", () => {
4
4
 
5
5
  const out = [];
6
6
 
7
- xyz_to_oklab([0.950, 1.000, 1.089], out);
7
+ xyz_to_oklab(out, 0.950, 1.000, 1.089);
8
8
 
9
9
  expect(out[0]).toBeCloseTo(1);
10
10
  expect(out[1]).toBeCloseTo(0);
11
11
  expect(out[2]).toBeCloseTo(0);
12
12
 
13
- xyz_to_oklab([1, 0, 0], out);
13
+ xyz_to_oklab(out, 1, 0, 0);
14
14
 
15
15
  expect(out[0]).toBeCloseTo(0.450);
16
16
  expect(out[1]).toBeCloseTo(1.236);
17
17
  expect(out[2]).toBeCloseTo(-0.019);
18
18
 
19
- xyz_to_oklab([0, 1, 0], out);
19
+ xyz_to_oklab(out, 0, 1, 0);
20
20
 
21
21
  expect(out[0]).toBeCloseTo(0.922);
22
22
  expect(out[1]).toBeCloseTo(-0.671);
23
23
  expect(out[2]).toBeCloseTo(0.263);
24
24
 
25
- xyz_to_oklab([0, 0, 1], out);
25
+ xyz_to_oklab(out, 0, 0, 1);
26
26
 
27
27
  expect(out[0]).toBeCloseTo(0.153);
28
28
  expect(out[1]).toBeCloseTo(-1.415);
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAMA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;qCA0GC;CACJ;4BA/H2B,kBAAkB;qBAJzB,gCAAgC"}
1
+ {"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAMA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;qCA8HC;CACJ;4BAnJ2B,kBAAkB;qBAJzB,gCAAgC"}
@@ -87,13 +87,17 @@ export class ArrayBufferLoader extends AssetLoader {
87
87
 
88
88
  }
89
89
 
90
+ /**
91
+ * @type {ReadableStreamDefaultReader<Uint8Array>}
92
+ */
90
93
  const reader = response.body.getReader();
94
+
91
95
  const contentLength = response.headers.get('Content-Length');
92
96
  const total = contentLength ? parseInt(contentLength) : 0;
93
97
  let loaded = 0;
94
98
 
95
99
  // periodically read data into the new stream tracking while download progress
96
- const stream = new ReadableStream({
100
+ const stream_prototype = {
97
101
  type: "bytes",
98
102
  start(controller) {
99
103
 
@@ -122,7 +126,23 @@ export class ArrayBufferLoader extends AssetLoader {
122
126
 
123
127
  }
124
128
 
125
- });
129
+ };
130
+
131
+ /**
132
+ * @type {ReadableStream}
133
+ */
134
+ let stream;
135
+
136
+ try {
137
+ stream = new ReadableStream(stream_prototype);
138
+ } catch (e) {
139
+ /*
140
+ Workaround for Safari bug: "TypeError: ReadableByteStreamController is not implemented"
141
+ By not wrapping the response we lose the ability to track progress, but that's not a critical issue in most cases
142
+ */
143
+ console.warn(e);
144
+ return response;
145
+ }
126
146
 
127
147
  return new Response(stream);
128
148
  }