@tolokoban/tgd 2.0.35 → 2.0.38

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 (54) hide show
  1. package/lib/dist/code/math.d.ts +3 -0
  2. package/lib/dist/code/math.d.ts.map +1 -1
  3. package/lib/dist/code/math.js +13 -2
  4. package/lib/dist/filter/blur.d.ts.map +1 -1
  5. package/lib/dist/filter/blur.js +6 -3
  6. package/lib/dist/geometry/geometry.d.ts +1 -1
  7. package/lib/dist/geometry/geometry.d.ts.map +1 -1
  8. package/lib/dist/geometry/geometry.js +6 -4
  9. package/lib/dist/geometry/grid.d.ts +15 -0
  10. package/lib/dist/geometry/grid.d.ts.map +1 -0
  11. package/lib/dist/geometry/grid.js +65 -0
  12. package/lib/dist/geometry/index.d.ts +1 -0
  13. package/lib/dist/geometry/index.d.ts.map +1 -1
  14. package/lib/dist/geometry/index.js +2 -1
  15. package/lib/dist/geometry/plane.js +1 -1
  16. package/lib/dist/loader/asset.js +3 -3
  17. package/lib/dist/loader/image.d.ts +6 -0
  18. package/lib/dist/loader/image.d.ts.map +1 -1
  19. package/lib/dist/loader/image.js +65 -27
  20. package/lib/dist/material/index.d.ts +1 -0
  21. package/lib/dist/material/index.d.ts.map +1 -1
  22. package/lib/dist/material/index.js +2 -1
  23. package/lib/dist/material/normal-map.d.ts +5 -0
  24. package/lib/dist/material/normal-map.d.ts.map +1 -0
  25. package/lib/dist/material/normal-map.js +20 -0
  26. package/lib/dist/painter/background/background.d.ts.map +1 -1
  27. package/lib/dist/painter/background/background.js +12 -3
  28. package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
  29. package/lib/dist/painter/framebuffer-msaa.js +3 -1
  30. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  31. package/lib/dist/painter/framebuffer.js +3 -1
  32. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  33. package/lib/dist/painter/mesh/gltf/gltf.js +5 -4
  34. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  35. package/lib/dist/parser/gltf/gltf.js +13 -6
  36. package/lib/dist/utils/canvas.d.ts +1 -0
  37. package/lib/dist/utils/canvas.d.ts.map +1 -1
  38. package/lib/dist/utils/canvas.js +6 -1
  39. package/lib/dist/utils/webgl.d.ts +7 -0
  40. package/lib/dist/utils/webgl.d.ts.map +1 -1
  41. package/lib/dist/utils/webgl.js +17 -1
  42. package/package.json +9 -4
  43. package/lib/dist/material/solid.d.ts +0 -22
  44. package/lib/dist/material/solid.d.ts.map +0 -1
  45. package/lib/dist/material/solid.js +0 -20
  46. package/lib/dist/painter/fragment-dhader/filter.d.ts +0 -31
  47. package/lib/dist/painter/fragment-dhader/filter.d.ts.map +0 -1
  48. package/lib/dist/painter/fragment-dhader/filter.js +0 -161
  49. package/lib/dist/painter/fragment-dhader/index.d.ts +0 -2
  50. package/lib/dist/painter/fragment-dhader/index.d.ts.map +0 -1
  51. package/lib/dist/painter/fragment-dhader/index.js +0 -2
  52. package/lib/dist/painter/fragment-shader/filter.d.ts +0 -31
  53. package/lib/dist/painter/fragment-shader/filter.d.ts.map +0 -1
  54. package/lib/dist/painter/fragment-shader/filter.js +0 -161
@@ -35,4 +35,7 @@ export declare function tgdCodeFunction_quintic(options?: Partial<{
35
35
  export declare function tgdCodeFunction_float01ToVec3(options?: Partial<{
36
36
  name: string;
37
37
  }>): TgdCodeFunctions;
38
+ export declare function tgdCodeFunction_vec3ToFloat01(options?: Partial<{
39
+ name: string;
40
+ }>): TgdCodeFunctions;
38
41
  //# sourceMappingURL=math.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/code/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,gBAAgB,CASlB;AAED,wBAAgB,sBAAsB,CAClC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAW1C;AAED,wBAAgB,uBAAuB,CACnC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAW1C;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAU1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAU1C;AAED,wBAAgB,6BAA6B,CACzC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,gBAAgB,CAalB"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/code/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,gBAAgB,CASlB;AAED,wBAAgB,sBAAsB,CAClC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAW1C;AAED,wBAAgB,uBAAuB,CACnC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAW1C;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAU1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM;;EAU1C;AAED,wBAAgB,6BAA6B,CACzC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,gBAAgB,CAalB;AAED,wBAAgB,6BAA6B,CACzC,OAAO,GAAE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,gBAAgB,CAUlB"}
@@ -56,7 +56,7 @@ vec4 ${name}(const in vec4 v) { return v*v*v*(v*(v*6.0-15.0)+10.0); }`,
56
56
  export function tgdCodeFunction_float01ToVec3(options = {}) {
57
57
  const { name = "float01ToVec3" } = options;
58
58
  return {
59
- [name]: `vec3 float01ToVec3(in float value) {
59
+ [name]: `vec3 ${name}(in float value) {
60
60
  int z = int(float(0xFFFFFF) * value);
61
61
  float r = float(z & 0xFF) / 255.0;
62
62
  z >>= 8;
@@ -67,4 +67,15 @@ export function tgdCodeFunction_float01ToVec3(options = {}) {
67
67
  }`,
68
68
  };
69
69
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2RlL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBQ3JDLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSTs7OztDQUk1QjtLQUNJLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRW5DLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSTtPQUN0QixJQUFJO09BQ0osSUFBSTtPQUNKLElBQUk7Q0FDVjtLQUNJLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRXBDLHVDQUNPLHNCQUFzQixFQUFFLEtBQzNCLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJO09BQ3RCLElBQUk7T0FDSixJQUFJO09BQ0osSUFBSSw4REFBOEQsSUFDcEU7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQ3pDLFVBQXFDLEVBQUU7SUFFdkMsTUFBTSxFQUFFLElBQUksR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFFMUMsT0FBTztRQUNILENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJO09BQ3RCLElBQUk7T0FDSixJQUFJO09BQ0osSUFBSSxpRUFBaUU7S0FDdkUsQ0FBQTtBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsVUFBcUMsRUFBRTtJQUV2QyxNQUFNLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUVwQyxPQUFPO1FBQ0gsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLElBQUk7UUFDckIsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJLDREQUE0RDtLQUNuRSxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FDekMsVUFBcUMsRUFBRTtJQUV2QyxNQUFNLEVBQUUsSUFBSSxHQUFHLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUMxQyxPQUFPO1FBQ0gsQ0FBQyxJQUFJLENBQUMsRUFBRTs7Ozs7Ozs7RUFRZDtLQUNHLENBQUE7QUFDTCxDQUFDIn0=
70
+ export function tgdCodeFunction_vec3ToFloat01(options = {}) {
71
+ const { name = "vec3ToFloat01" } = options;
72
+ return {
73
+ [name]: `float ${name}(in vec3 value) {
74
+ float r = value.r;
75
+ float g = value.g;
76
+ float b = value.b;
77
+ return (b * 256.0 * 256.0 + g * 256.0 + r) * 0.000015199185323666652;
78
+ }`,
79
+ };
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2RlL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBQ3JDLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSTs7OztDQUk1QjtLQUNJLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRW5DLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSTtPQUN0QixJQUFJO09BQ0osSUFBSTtPQUNKLElBQUk7Q0FDVjtLQUNJLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxVQUFxQyxFQUFFO0lBRXZDLE1BQU0sRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRXBDLHVDQUNPLHNCQUFzQixFQUFFLEtBQzNCLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJO09BQ3RCLElBQUk7T0FDSixJQUFJO09BQ0osSUFBSSw4REFBOEQsSUFDcEU7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQ3pDLFVBQXFDLEVBQUU7SUFFdkMsTUFBTSxFQUFFLElBQUksR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFFMUMsT0FBTztRQUNILENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJO09BQ3RCLElBQUk7T0FDSixJQUFJO09BQ0osSUFBSSxpRUFBaUU7S0FDdkUsQ0FBQTtBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsVUFBcUMsRUFBRTtJQUV2QyxNQUFNLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUVwQyxPQUFPO1FBQ0gsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLElBQUk7UUFDckIsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJLDREQUE0RDtLQUNuRSxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FDekMsVUFBcUMsRUFBRTtJQUV2QyxNQUFNLEVBQUUsSUFBSSxHQUFHLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUMxQyxPQUFPO1FBQ0gsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLElBQUk7Ozs7Ozs7O0VBUTFCO0tBQ0csQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQ3pDLFVBQXFDLEVBQUU7SUFFdkMsTUFBTSxFQUFFLElBQUksR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFDMUMsT0FBTztRQUNILENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJOzs7OztFQUszQjtLQUNHLENBQUE7QUFDTCxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"blur.d.ts","sourceRoot":"","sources":["../../src/filter/blur.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;CACnB;AAID,qBAAa,aAAc,SAAQ,SAAS;IACjC,QAAQ,EAAE,MAAM,CAAA;gBAEX,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;CA8D1D"}
1
+ {"version":3,"file":"blur.d.ts","sourceRoot":"","sources":["../../src/filter/blur.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;CACnB;AAID,qBAAa,aAAc,SAAQ,SAAS;IACjC,QAAQ,EAAE,MAAM,CAAA;gBAEX,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;CAgE1D"}
@@ -41,8 +41,11 @@ export class TgdFilterBlur extends TgdFilter {
41
41
  uniInverseHeight: "float",
42
42
  },
43
43
  setUniforms: ({ program }) => {
44
- program.uniform1f("uniInverseWidth", 1 / program.gl.drawingBufferWidth);
45
- program.uniform1f("uniInverseHeight", 1 / program.gl.drawingBufferHeight);
44
+ const { gl } = program;
45
+ // eslint-disable-next-line unicorn/no-unreadable-array-destructuring
46
+ const [, , width, height] = gl.getParameter(gl.VIEWPORT);
47
+ program.uniform1f("uniInverseWidth", 1 / width);
48
+ program.uniform1f("uniInverseHeight", 1 / height);
46
49
  program.uniform1f("uniStrength", this.strength);
47
50
  },
48
51
  });
@@ -58,4 +61,4 @@ function figureOutDirection(direction) {
58
61
  }
59
62
  return direction;
60
63
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWx0ZXIvYmx1ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQWFwQyxNQUFNLGlCQUFpQixHQUFzQixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFOUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBR3hDLFlBQVksVUFBeUMsRUFBRTtRQUNuRCxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQzFDLE1BQU0sU0FBUyxHQUFZLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNsQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNsQyxNQUFNLEtBQUssR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQTtZQUN2QixLQUFLLElBQUksTUFBTSxDQUFBO1lBQ2YsS0FBSyxDQUFDLElBQUksQ0FDTixPQUFPLENBQUMsR0FBRyxHQUFHLFNBQVMsRUFDdkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQzNCLDhDQUE4QyxFQUM5Qyw4Q0FBOEMsQ0FDakQsQ0FBQTtRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNYLDBCQUEwQjtZQUMxQixLQUFLLENBQUMsSUFBSSxDQUNOLE9BQU8sSUFBSSxTQUFTLEVBQ3BCLDBDQUEwQyxFQUMxQywwQ0FBMEMsQ0FDN0MsQ0FBQTtZQUNELEtBQUssRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUNELEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUE7UUFDaEMsS0FBSyxDQUFDO1lBQ0Ysa0JBQWtCLEVBQUU7Z0JBQ2hCLGdDQUFnQztnQkFDaEM7b0JBQ0kscUJBQXFCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUc7b0JBQ3JDLHNCQUFzQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2lCQUN4QztnQkFDRCxJQUFJO2dCQUNKLGdCQUFnQixDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzlCLENBQUMsQ0FDSixnQ0FBZ0M7Z0JBQ2pDLEdBQUcsS0FBSztnQkFDUix1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHO2FBQ25EO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixlQUFlLEVBQUUsT0FBTztnQkFDeEIsZ0JBQWdCLEVBQUUsT0FBTzthQUM1QjtZQUNELFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUFDLFNBQVMsQ0FDYixpQkFBaUIsRUFDakIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQ3BDLENBQUE7Z0JBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FDYixrQkFBa0IsRUFDbEIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQ3JDLENBQUE7Z0JBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ25ELENBQUM7U0FDSixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFFRCxTQUFTLGtCQUFrQixDQUN2QixTQUFpRDtJQUVqRCxJQUFJLFNBQVMsS0FBSyxTQUFTO1FBQUUsT0FBTyxpQkFBaUIsQ0FBQTtJQUVyRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQTtBQUNwQixDQUFDIn0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWx0ZXIvYmx1ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQWFwQyxNQUFNLGlCQUFpQixHQUFzQixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFOUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBR3hDLFlBQVksVUFBeUMsRUFBRTtRQUNuRCxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQzFDLE1BQU0sU0FBUyxHQUFZLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNsQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNsQyxNQUFNLEtBQUssR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdB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
@@ -49,7 +49,7 @@ export declare class TgdGeometry {
49
49
  readonly attUV: string;
50
50
  readonly count: number;
51
51
  readonly elements?: Readonly<TgdTypeArrayForElements>;
52
- readonly drawMode: WebglDrawMode | number;
52
+ readonly drawMode: number;
53
53
  protected _dataset: TgdDataset;
54
54
  protected _elementsType: number;
55
55
  private static counter;
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAInE,UAAU,wBAAwB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAA;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,OAAO,EAAE,UAAU,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,WAAW,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;CACxB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACpB,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,SAAgB,WAAW,EAAE,MAAM,CAAA;IACnC,kDAAkD;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAA;IACjC,8CAA8C;IAC9C,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IAC5D,SAAgB,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAA;IAEhD,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;WAEZ,IAAI,CAAC,OAAO,EAAE,mBAAmB;gBAmBnC,OAAO,EAAE,mBAAmB;IAwBxC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAOtB,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAElC;IAED,IAAI,YAAY,WAEf;IAEM,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,cAAc;IAyBrB,OAAO,CAAC,kCAAkC;CAgE7C"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAInE,UAAU,wBAAwB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAA;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,OAAO,EAAE,UAAU,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,WAAW,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;CACxB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACpB,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,SAAgB,WAAW,EAAE,MAAM,CAAA;IACnC,kDAAkD;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAA;IACjC,8CAA8C;IAC9C,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IAC5D,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;WAEZ,IAAI,CAAC,OAAO,EAAE,mBAAmB;gBAmBnC,OAAO,EAAE,mBAAmB;IA2BxC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAOtB,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAElC;IAED,IAAI,YAAY,WAEf;IAEM,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,cAAc;IAsBrB,OAAO,CAAC,kCAAkC;CAgE7C"}
@@ -34,7 +34,10 @@ export class TgdGeometry {
34
34
  const { dataset, drawMode = "TRIANGLES", attPosition = "POSITION", attNormal = "NORMAL", attUV = "TEXCOORD_0", name = `TgdGeometry#${TgdGeometry.counter++}`, } = options;
35
35
  this.name = name;
36
36
  this._dataset = dataset;
37
- this.drawMode = drawMode;
37
+ this.drawMode =
38
+ typeof drawMode === "number"
39
+ ? drawMode
40
+ : WebGL2RenderingContext[drawMode];
38
41
  const { elements } = options;
39
42
  this.elements = elements;
40
43
  this._elementsType = elements
@@ -65,8 +68,7 @@ export class TgdGeometry {
65
68
  }
66
69
  computeNormals() {
67
70
  let normals = [];
68
- if (this.drawMode === WebGL2RenderingContext.TRIANGLES ||
69
- this.drawMode === "TRIANGLES") {
71
+ if (this.drawMode === WebGL2RenderingContext.TRIANGLES) {
70
72
  normals = this.computeNormalsForTrianglesDrawMode();
71
73
  }
72
74
  else {
@@ -136,4 +138,4 @@ function computeNormal(A, B, C) {
136
138
  const AC = new TgdVec3(C).subtract(A);
137
139
  return AB.cross(AC).normalize();
138
140
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxjQUFjLENBQUE7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBd0N4RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFpQmIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE0Qjs7UUFDM0MsTUFBTSxVQUFVLEdBQXlCLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FDOUQsT0FBTyxDQUFBO1FBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFBLFdBQVcsQ0FBQyxJQUFJLG1DQUFJLE1BQU0sQ0FBQTtRQUN6RCxJQUFJLFNBQVM7WUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsU0FBUyxDQUFDLElBQUksbUNBQUksTUFBTSxDQUFBO1FBQ3BFLElBQUksS0FBSztZQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBQSxLQUFLLENBQUMsSUFBSSxtQ0FBSSxNQUFNLENBQUE7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQyxJQUFJLFNBQVM7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElB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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxjQUFjLENBQUE7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBd0N4RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFpQmIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE0Qjs7UUFDM0MsTUFBTSxVQUFVLEdBQXlCLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FDOUQsT0FBTyxDQUFBO1FBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFBLFdBQVcsQ0FBQyxJQUFJLG1DQUFJLE1BQU0sQ0FBQTtRQUN6RCxJQUFJLFNBQVM7WUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsU0FBUyxDQUFDLElBQUksbUNBQUksTUFBTSxDQUFBO1FBQ3BFLElBQUksS0FBSztZQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBQSxLQUFLLENBQUMsSUFBSSxtQ0FBSSxNQUFNLENBQUE7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQyxJQUFJLFNBQVM7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElB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
@@ -0,0 +1,15 @@
1
+ import { TgdGeometry } from "./geometry";
2
+ import { ArrayNumber3 } from "../types";
3
+ export interface TgdGeometryGridOptions {
4
+ sizeX?: number;
5
+ sizeY?: number;
6
+ subdivisions?: number;
7
+ subdivisionsX?: number;
8
+ subdivisionsY?: number;
9
+ vecX?: ArrayNumber3;
10
+ vecY?: ArrayNumber3;
11
+ }
12
+ export declare class TgdGeometryGrid extends TgdGeometry {
13
+ constructor({ sizeX, sizeY, subdivisions, subdivisionsX, subdivisionsY, vecX, vecY, }?: TgdGeometryGridOptions);
14
+ }
15
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/geometry/grid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,MAAM,WAAW,sBAAsB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,EACR,KAAS,EACT,KAAS,EACT,YAAiB,EACjB,aAAa,EACb,aAAa,EACb,IAAgB,EAChB,IAAgB,GACnB,GAAE,sBAA2B;CA6DjC"}
@@ -0,0 +1,65 @@
1
+ import { TgdDataset } from "./../dataset/index.js";
2
+ import { TgdGeometry } from "./geometry.js";
3
+ import { TgdVec3 } from "./../math/index.js";
4
+ import { webglElementTypeArrayFromNumberArray } from "./../utils/index.js";
5
+ export class TgdGeometryGrid extends TgdGeometry {
6
+ constructor({ sizeX = 1, sizeY = 1, subdivisions = 10, subdivisionsX, subdivisionsY, vecX = [1, 0, 0], vecY = [0, 1, 0], } = {}) {
7
+ const vec = (x, y) => {
8
+ const sx = x * sizeX;
9
+ const sy = y * sizeY;
10
+ return [
11
+ sx * vecX[0] + sy * vecY[0],
12
+ sx * vecX[1] + sy * vecY[1],
13
+ sx * vecX[2] + sy * vecY[2],
14
+ ];
15
+ };
16
+ const [nx, ny, nz] = new TgdVec3(vecX)
17
+ .normalize()
18
+ .cross(new TgdVec3(vecY).normalize());
19
+ const dataset = new TgdDataset({
20
+ POSITION: "vec3",
21
+ NORMAL: "vec3",
22
+ TEXCOORD_0: "vec2",
23
+ });
24
+ const cols = Math.max(1, Math.round(subdivisionsX !== null && subdivisionsX !== void 0 ? subdivisionsX : subdivisions)) + 1;
25
+ const rows = Math.max(1, Math.round(subdivisionsY !== null && subdivisionsY !== void 0 ? subdivisionsY : subdivisions)) + 1;
26
+ const x0 = -0.5 * sizeX;
27
+ const y0 = -0.5 * sizeY;
28
+ const positions = [];
29
+ const normals = [];
30
+ const texcoords = [];
31
+ const elements = [];
32
+ for (let row = 0; row < rows; row++) {
33
+ const v = row / (rows - 1);
34
+ const y = y0 + sizeY * v;
35
+ for (let col = 0; col < cols; col++) {
36
+ const u = col / (cols - 1);
37
+ const x = x0 + sizeX * u;
38
+ positions.push(...vec(x, y));
39
+ normals.push(nx, ny, nz);
40
+ texcoords.push(u, v);
41
+ if (col > 0 && row > 0) {
42
+ const i0 = col - 1;
43
+ const j0 = row - 1;
44
+ const i1 = col;
45
+ const j1 = row;
46
+ const a = i1 + cols * j1;
47
+ const b = i1 + cols * j0;
48
+ const c = i0 + cols * j0;
49
+ const d = i0 + cols * j1;
50
+ // prettier-ignore
51
+ elements.push(a, b, d, c, b, d);
52
+ }
53
+ }
54
+ }
55
+ dataset.set("POSITION", new Float32Array(positions));
56
+ dataset.set("NORMAL", new Float32Array(normals));
57
+ dataset.set("TEXCOORD_0", new Float32Array(texcoords));
58
+ super({
59
+ dataset,
60
+ elements: webglElementTypeArrayFromNumberArray(elements),
61
+ drawMode: "TRIANGLES",
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9ncmlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVlqRSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBQzVDLFlBQVksRUFDUixLQUFLLEdBQUcsQ0FBQyxFQUNULEtBQUssR0FBRyxDQUFDLEVBQ1QsWUFBWSxHQUFHLEVBQUUsRUFDakIsYUFBYSxFQUNiLGFBQWEsRUFDYixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUNRLEVBQUU7UUFDMUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPO2dCQUNILEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUIsQ0FBQTtRQUNMLENBQUMsQ0FBQTtRQUNE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
@@ -1,6 +1,7 @@
1
1
  export * from "./box";
2
2
  export * from "./geometry";
3
3
  export * from "./gltf";
4
+ export * from "./grid";
4
5
  export * from "./plane";
5
6
  export * from "./tools";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from "./box.js";
2
2
  export * from "./geometry.js";
3
3
  export * from "./gltf.js";
4
+ export * from "./grid.js";
4
5
  export * from "./plane.js";
5
6
  export * from "./tools/index.js";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUE7QUFDckIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxTQUFTLENBQUEifQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUE7QUFDckIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxTQUFTLENBQUEifQ==
@@ -2,7 +2,7 @@ import { TgdDataset } from "./../dataset/index.js";
2
2
  import { TgdGeometry } from "./geometry.js";
3
3
  import { TgdVec3 } from "./../math/index.js";
4
4
  export class TgdGeometryPlane extends TgdGeometry {
5
- constructor({ sizeX = 1, sizeY = 1, vecX = [1, 0, 0], vecY = [0, 0, 1], } = {}) {
5
+ constructor({ sizeX = 1, sizeY = 1, vecX = [1, 0, 0], vecY = [0, 1, 0], } = {}) {
6
6
  const vec = (x, y) => {
7
7
  const sx = x * sizeX;
8
8
  const sy = y * sizeY;
@@ -14,7 +14,7 @@ export function tgdLoadAssets(urls) {
14
14
  });
15
15
  }
16
16
  function getPromisedLoaders(loader, urls, target) {
17
- return Object.keys(urls !== null && urls !== void 0 ? urls : {}).map(name => new Promise(resolve => {
17
+ return Object.keys(urls !== null && urls !== void 0 ? urls : {}).map((name) => new Promise((resolve) => {
18
18
  if (!urls) {
19
19
  resolve();
20
20
  return;
@@ -25,7 +25,7 @@ function getPromisedLoaders(loader, urls, target) {
25
25
  return;
26
26
  }
27
27
  loader(url)
28
- .then(value => {
28
+ .then((value) => {
29
29
  if (value)
30
30
  target[name] = value;
31
31
  resolve();
@@ -36,4 +36,4 @@ function getPromisedLoaders(loader, urls, target) {
36
36
  });
37
37
  }));
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2Fzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFdEMsTUFBTSxVQUFnQixhQUFhLENBQy9CLElBR0U7O1FBS0YsTUFBTSxHQUFHLEdBQUcsRUFBNkIsQ0FBQTtRQUN6QyxNQUFNLEdBQUcsR0FBRyxFQUFtQyxDQUFBO1FBQy9DLE1BQU0sS0FBSyxHQUFvQjtZQUMzQixHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNoRCxHQUFHLGtCQUFrQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNyRCxDQUFBO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDdkIsQ0FBQztDQUFBO0FBRUQsU0FBUyxrQkFBa0IsQ0FDdkIsTUFBMEMsRUFDMUMsSUFBbUMsRUFDbkMsTUFBb0I7SUFFcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDOUIsSUFBSSxDQUFDLEVBQUUsQ0FDSCxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRTtRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLEVBQUUsQ0FBQTtZQUNULE9BQU07UUFDVixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQVMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFBO1lBQ1QsT0FBTTtRQUNWLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxJQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEMsT0FBTyxFQUFFLENBQUE7UUFDYixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN4QyxPQUFPLEVBQUUsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQ1QsQ0FBQTtBQUNMLENBQUMifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2Fzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFdEMsTUFBTSxVQUFnQixhQUFhLENBQy9CLElBR0U7O1FBS0YsTUFBTSxHQUFHLEdBQUcsRUFBNkIsQ0FBQTtRQUN6QyxNQUFNLEdBQUcsR0FBRyxFQUFtQyxDQUFBO1FBQy9DLE1BQU0sS0FBSyxHQUFvQjtZQUMzQixHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNoRCxHQUFHLGtCQUFrQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNyRCxDQUFBO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDdkIsQ0FBQztDQUFBO0FBRUQsU0FBUyxrQkFBa0IsQ0FDdkIsTUFBMEMsRUFDMUMsSUFBbUMsRUFDbkMsTUFBb0I7SUFFcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNMLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUE7WUFDVCxPQUFNO1FBQ1YsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFTLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQTtZQUNULE9BQU07UUFDVixDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxJQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEMsT0FBTyxFQUFFLENBQUE7UUFDYixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN4QyxPQUFPLEVBQUUsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQ1QsQ0FBQTtBQUNMLENBQUMifQ==
@@ -5,5 +5,11 @@
5
5
  export declare function tgdLoadImage(url: string): Promise<HTMLImageElement | null>;
6
6
  export declare function tgdLoadImageFromArrayBuffer(buffer: ArrayBuffer): Promise<HTMLImageElement | null>;
7
7
  export declare function tgdLoadImages(urls: string[]): Promise<Array<HTMLImageElement | null>>;
8
+ /**
9
+ * The image will have the size specified in the SVG tag.
10
+ * @param svg Content of a SVG image.
11
+ */
12
+ export declare function tgdLoadImageFromSvg(svg: string): Promise<HTMLImageElement>;
13
+ export declare function tgdLoadImageFromElement(element: Element): Promise<HTMLImageElement>;
8
14
  export declare function tgdLoadCanvas(url: string): Promise<HTMLCanvasElement | null>;
9
15
  //# sourceMappingURL=image.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/loader/image.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,YAAY,CACjC,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAUlC;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,WAAW,GACjB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBlC;AAED,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAIzC;AAED,wBAAsB,aAAa,CAClC,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYnC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/loader/image.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAU1E;AAED,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBlC;AAED,wBAAgB,aAAa,CACzB,IAAI,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAIzC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+B1E;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,wBAAsB,aAAa,CAC/B,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYnC"}
@@ -1,45 +1,83 @@
1
1
  import { __awaiter } from "tslib";
2
+ import { tgdCanvasFromImage } from "./../utils/index.js";
2
3
  /**
3
4
  * Try to load an image and return `null` in case of failure.
4
5
  * @param url URL of the image to load.
5
6
  */
6
7
  export function tgdLoadImage(url) {
7
- return __awaiter(this, void 0, void 0, function* () {
8
- return new Promise((resolve) => {
9
- const img = new Image();
10
- img.addEventListener("load", () => resolve(img));
11
- img.addEventListener("error", () => {
12
- console.error("Unable to load image:", url);
13
- resolve(null);
14
- });
15
- img.src = url;
8
+ return new Promise((resolve) => {
9
+ const img = new Image();
10
+ img.addEventListener("load", () => resolve(img));
11
+ img.addEventListener("error", () => {
12
+ console.error("Unable to load image:", url);
13
+ resolve(null);
16
14
  });
15
+ img.src = url;
17
16
  });
18
17
  }
19
18
  export function tgdLoadImageFromArrayBuffer(buffer) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- return new Promise((resolve) => {
22
- const blob = new Blob([buffer]);
23
- const url = URL.createObjectURL(blob);
24
- const img = new Image();
25
- img.addEventListener("load", () => {
26
- URL.revokeObjectURL(url);
27
- resolve(img);
28
- });
29
- img.addEventListener("error", () => {
30
- URL.revokeObjectURL(url);
31
- console.error("Unable to load image:", url);
32
- resolve(null);
33
- });
34
- img.src = url;
19
+ return new Promise((resolve) => {
20
+ const blob = new Blob([buffer]);
21
+ const url = URL.createObjectURL(blob);
22
+ const img = new Image();
23
+ img.addEventListener("load", () => {
24
+ URL.revokeObjectURL(url);
25
+ resolve(img);
26
+ });
27
+ img.addEventListener("error", () => {
28
+ URL.revokeObjectURL(url);
29
+ console.error("Unable to load image:", url);
30
+ resolve(null);
35
31
  });
32
+ img.src = url;
36
33
  });
37
34
  }
38
35
  export function tgdLoadImages(urls) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- return Promise.all(urls.map((url) => tgdLoadImage(url)));
36
+ return Promise.all(urls.map((url) => tgdLoadImage(url)));
37
+ }
38
+ /**
39
+ * The image will have the size specified in the SVG tag.
40
+ * @param svg Content of a SVG image.
41
+ */
42
+ export function tgdLoadImageFromSvg(svg) {
43
+ return new Promise((resolve) => {
44
+ const img = new Image();
45
+ console.log("🚀 [image] svg =", svg); // @FIXME: Remove this line written on 2025-09-17 at 10:20
46
+ const encoder = new TextEncoder();
47
+ const bytes = encoder.encode(svg);
48
+ const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join("");
49
+ console.log("🚀 [image] binString =", binString); // @FIXME: Remove this line written on 2025-09-17 at 14:03
50
+ const base64 = btoa(binString);
51
+ console.log("🚀 [image] base64 =", base64); // @FIXME: Remove this line written on 2025-09-17 at 10:20
52
+ const url = `data:image/svg+xml;base64,${base64}`;
53
+ console.log("🚀 [image] url =", url); // @FIXME: Remove this line written on 2025-09-17 at 10:16
54
+ img.addEventListener("load", function () {
55
+ const canvas = tgdCanvasFromImage(img);
56
+ canvas.style.background = "#888";
57
+ canvas.style.position = "fixed";
58
+ canvas.style.zIndex = "9999";
59
+ document.body.appendChild(canvas);
60
+ console.log("🚀 [image] canvas =", canvas); // @FIXME: Remove this line written on 2025-09-17 at 10:01
61
+ resolve(img);
62
+ // DOMURL.revokeObjectURL(url)
63
+ });
64
+ img.addEventListener("error", () => {
65
+ console.error("Unable to load image from svg:", url);
66
+ console.debug("SVG:", svg);
67
+ resolve(img);
68
+ });
69
+ img.src = url;
41
70
  });
42
71
  }
72
+ export function tgdLoadImageFromElement(element) {
73
+ const width = element.scrollWidth;
74
+ const height = element.scrollHeight;
75
+ // const html = element.innerHTML
76
+ const html = "<h1>Hello world!</h1>";
77
+ return tgdLoadImageFromSvg(`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}">
78
+ <foreignObject width="100%" height="100%">${html}</foreignObject>
79
+ </svg>`);
80
+ }
43
81
  export function tgdLoadCanvas(url) {
44
82
  return __awaiter(this, void 0, void 0, function* () {
45
83
  const img = yield tgdLoadImage(url);
@@ -55,4 +93,4 @@ export function tgdLoadCanvas(url) {
55
93
  return canvas;
56
94
  });
57
95
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFDSCxNQUFNLFVBQWdCLFlBQVksQ0FDakMsR0FBVzs7UUFFWCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtZQUN2QixHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ2hELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDZCxDQUFDLENBQUMsQ0FBQTtZQUNGLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2QsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0NBQUE7QUFFRCxNQUFNLFVBQWdCLDJCQUEyQixDQUNoRCxNQUFtQjs7UUFFbkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUMvQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7WUFDdkIsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLENBQUMsQ0FBQyxDQUFBO1lBQ0YsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNkLENBQUMsQ0FBQyxDQUFBO1lBQ0YsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDZCxDQUFDLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQTtBQUVELE1BQU0sVUFBZ0IsYUFBYSxDQUNsQyxJQUFjOztRQUVkLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3BDLENBQUE7SUFDRixDQUFDO0NBQUE7QUFFRCxNQUFNLFVBQWdCLGFBQWEsQ0FDbEMsR0FBVzs7UUFFWCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXJCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBRTVELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM1QixPQUFPLE1BQU0sQ0FBQTtJQUNkLENBQUM7Q0FBQSJ9
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXVCLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXBFOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUNwQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUN2QixHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2hELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDakIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN2QyxNQUFtQjtJQUVuQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUN2QixHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUM5QixHQUFHLENBQUMsZUFBZSxDQUFDLEdB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
@@ -6,5 +6,6 @@ export * from "./ghost";
6
6
  export * from "./hull";
7
7
  export * from "./material";
8
8
  export * from "./normals";
9
+ export * from "./normal-map";
9
10
  export * from "./toon";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA"}
@@ -6,5 +6,6 @@ export * from "./ghost.js";
6
6
  export * from "./hull.js";
7
7
  export * from "./material.js";
8
8
  export * from "./normals.js";
9
+ export * from "./normal-map.js";
9
10
  export * from "./toon.js";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFFBQVEsQ0FBQSJ9
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFFBQVEsQ0FBQSJ9
@@ -0,0 +1,5 @@
1
+ import { TgdMaterial } from "./material";
2
+ export declare class TgdMaterialNormalMap extends TgdMaterial {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=normal-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normal-map.d.ts","sourceRoot":"","sources":["../../src/material/normal-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qBAAa,oBAAqB,SAAQ,WAAW;;CAiBpD"}
@@ -0,0 +1,20 @@
1
+ import { TgdMaterial } from "./material.js";
2
+ export class TgdMaterialNormalMap extends TgdMaterial {
3
+ constructor() {
4
+ super({
5
+ varyings: { varNormal: "vec3" },
6
+ fragmentShaderCode: [
7
+ `vec3 n = normalize(varNormal);`,
8
+ `vec3 color = vec3(`,
9
+ [`0.5 * (1.0 + n.x),`, `0.5 * (1.0 + n.y),`, `max(0.0, n.z)`],
10
+ `);`,
11
+ `color *= 0.5;`,
12
+ `return vec4(color, 1.0);`,
13
+ ],
14
+ vertexShaderCode: [
15
+ "varNormal = mat3(uniModelViewMatrix) * normal;",
16
+ ],
17
+ });
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ub3JtYWwtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFdBQVc7SUFDakQ7UUFDSSxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQy9CLGtCQUFrQixFQUFFO2dCQUNoQixnQ0FBZ0M7Z0JBQ2hDLG9CQUFvQjtnQkFDcEIsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUM7Z0JBQzdELElBQUk7Z0JBQ0osZUFBZTtnQkFDZiwwQkFBMEI7YUFDN0I7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDZCxnREFBZ0Q7YUFDbkQ7U0FDSixDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0oifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../src/painter/background/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAM3C,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC5B;AAED,qBAAa,oBAAqB,SAAQ,UAAU;IAiB5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBrB,OAAO,EAAE,YAAY,GAAG,SAAS,CAAA;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC;;;OAGG;IACI,IAAI,SAAI;IACR,CAAC,SAAI;IACL,CAAC,SAAI;IACL,CAAC,SAAI;IACL,IAAI,EAAE,OAAO,GAAG,SAAS,CAAU;gBAGrB,OAAO,EAAE;QAAE,EAAE,EAAE,sBAAsB,CAAA;KAAE,EACxD,EACI,OAAO,EACP,CAAK,EACL,CAAK,EACL,CAAY,EACZ,IAAQ,EACR,MAAU,EACV,MAAU,EACV,IAAc,GACjB,GAAE,OAAO,CAAC,2BAA2B,CAAM;IAmChD,MAAM,IAAI,IAAI;IAMd,KAAK,IAAI,IAAI;IAkBb,gBAAgB;;;;IAgBhB,kBAAkB;;;;CAsBrB"}
1
+ {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../src/painter/background/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAQ3C,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC5B;AAED,qBAAa,oBAAqB,SAAQ,UAAU;IAiB5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBrB,OAAO,EAAE,YAAY,GAAG,SAAS,CAAA;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC;;;OAGG;IACI,IAAI,SAAI;IACR,CAAC,SAAI;IACL,CAAC,SAAI;IACL,CAAC,SAAI;IACL,IAAI,EAAE,OAAO,GAAG,SAAS,CAAU;gBAGrB,OAAO,EAAE;QAAE,EAAE,EAAE,sBAAsB,CAAA;KAAE,EACxD,EACI,OAAO,EACP,CAAK,EACL,CAAK,EACL,CAAY,EACZ,IAAQ,EACR,MAAU,EACV,MAAU,EACV,IAAc,GACjB,GAAE,OAAO,CAAC,2BAA2B,CAAM;IAmChD,MAAM,IAAI,IAAI;IAMd,KAAK,IAAI,IAAI;IA4Bb,gBAAgB;;;;IAgBhB,kBAAkB;;;;CAsBrB"}
@@ -4,6 +4,8 @@ import { TgdVertexArray } from "./../../vao/index.js";
4
4
  import { TgdProgram } from "./../../program/index.js";
5
5
  import VERT from "./background.vert";
6
6
  import FRAG from "./background.frag";
7
+ import { TgdPainterState } from "../state/index.js";
8
+ import { webglPresetCull, webglPresetDepth } from "./../../utils/index.js";
7
9
  export class TgdPainterBackground extends TgdPainter {
8
10
  constructor(context, { texture, x = 0, y = 0, z = 0.999999, zoom = 1, scaleX = 1, scaleY = 1, mode = "cover", } = {}) {
9
11
  super();
@@ -62,9 +64,16 @@ export class TgdPainterBackground extends TgdPainter {
62
64
  program.uniform1f("uniZoom", 1 / zoom);
63
65
  program.uniform1f("uniZ", z);
64
66
  texture === null || texture === void 0 ? void 0 : texture.activate(0, program, "uniTexture");
67
+ TgdPainterState.do({
68
+ gl,
69
+ cull: webglPresetCull.off,
70
+ depth: webglPresetDepth.off,
71
+ }, () => {
72
+ vao.bind();
73
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
74
+ vao.unbind();
75
+ });
65
76
  gl.disable(gl.CULL_FACE);
66
- vao.bind();
67
- gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
68
77
  }
69
78
  getScaleForCover() {
70
79
  const { texture, context } = this;
@@ -102,4 +111,4 @@ export class TgdPainterBackground extends TgdPainter {
102
111
  };
103
112
  }
104
113
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL2JhY2tncm91bmQvYmFja2dyb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUE0QnBDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBZ0JoRCxZQUNxQixPQUF1QyxFQUN4RCxFQUNJLE9BQU8sRUFDUCxDQUFDLEdBQUcsQ0FBQyxFQUNMLENBQUMsR0FBRyxDQUFDLEVBQ0wsQ0FBQyxHQUFHLFFBQVEsRUFDWixJQUFJLEdBQUcsQ0FBQyxFQUNSLE1BQU0sR0FBRyxDQUFDLEVBQ1YsTUFBTSxHQUFHLENBQUMsRUFDVixJQUFJLEdBQUcsT0FBTyxNQUN3QixFQUFFO1FBRTVDLEtBQUssRUFBRSxDQUFBO1FBWlUsWUFBTyxHQUFQLE9BQU8sQ0FBZ0M7UUFYNUQ7OztXQUdHO1FBQ0ksU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUNSLE1BQUMsR0FBRyxDQUFDLENBQUE7UUFDTCxNQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ0wsTUFBQyxHQUFHLENBQUMsQ0FBQTtRQUNMLFNBQUksR0FBd0IsT0FBTyxDQUFBO1FBZ0J0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNWLElBQUksQ0FBQyxDQUFD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
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL2JhY2tncm91bmQvYmFja2dyb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBNEI5RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQWdCaEQsWUFDcUIsT0FBdUMsRUFDeEQsRUFDSSxPQUFPLEVBQ1AsQ0FBQyxHQUFHLENBQUMsRUFDTCxDQUFDLEdBQUcsQ0FBQyxFQUNMLENBQUMsR0FBRyxRQUFRLEVBQ1osSUFBSSxHQUFHLENBQUMsRUFDUixNQUFNLEdBQUcsQ0FBQyxFQUNWLE1BQU0sR0FBRyxDQUFDLEVBQ1YsSUFBSSxHQUFHLE9BQU8sTUFDd0IsRUFBRTtRQUU1QyxLQUFLLEVBQUUsQ0FBQTtRQVpVLFlBQU8sR0FBUCxPQUFPLENBQWdDO1FBWDVEOzs7V0FHRztRQUNJLFNBQUksR0FBRyxDQUFDLENBQUE7UUFDUixNQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ0wsTUFBQyxHQUFHLENBQUMsQ0FBQTtRQUNMLE1BQUMsR0FBRyxDQUFDLENBQUE7UUFDTCxTQUFJLEdBQXdCLE9BQU8sQ0FBQTtRQWdCdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENB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