angular-three-soba 2.12.0 → 2.14.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.
Files changed (85) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +117 -117
  2. package/abstractions/lib/edges.d.ts +117 -117
  3. package/abstractions/lib/gradient-texture.d.ts +2 -2
  4. package/abstractions/lib/line.d.ts +2 -2
  5. package/abstractions/lib/prism-geometry.d.ts +5 -5
  6. package/abstractions/lib/rounded-box.d.ts +1 -1
  7. package/abstractions/lib/text-3d.d.ts +19 -8
  8. package/abstractions/lib/text.d.ts +2 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +1 -1
  11. package/cameras/lib/perspective-camera.d.ts +1 -1
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -4
  14. package/esm2022/abstractions/lib/gradient-texture.mjs +4 -4
  15. package/esm2022/abstractions/lib/text-3d.mjs +1 -1
  16. package/esm2022/cameras/lib/orthographic-camera.mjs +3 -3
  17. package/esm2022/cameras/lib/perspective-camera.mjs +4 -3
  18. package/esm2022/controls/lib/camera-controls.mjs +12 -13
  19. package/esm2022/controls/lib/orbit-controls.mjs +10 -28
  20. package/esm2022/controls/lib/scroll-controls.mjs +5 -6
  21. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +9 -5
  22. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +77 -61
  23. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +37 -25
  24. package/esm2022/loaders/lib/loader.mjs +1 -7
  25. package/esm2022/materials/lib/custom-shader-material.mjs +1 -1
  26. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -2
  27. package/esm2022/materials/lib/mesh-portal-material.mjs +10 -10
  28. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -2
  29. package/esm2022/materials/lib/point-material.mjs +4 -3
  30. package/esm2022/misc/lib/depth-buffer.mjs +2 -6
  31. package/esm2022/misc/lib/fbo.mjs +3 -3
  32. package/esm2022/misc/lib/preload.mjs +3 -3
  33. package/esm2022/staging/lib/accumulative-shadows.mjs +3 -3
  34. package/esm2022/staging/lib/bb-anchor.mjs +4 -4
  35. package/esm2022/staging/lib/environment/environment.mjs +21 -15
  36. package/esm2022/staging/lib/matcap-texture.mjs +3 -3
  37. package/esm2022/staging/lib/normal-texture.mjs +3 -3
  38. package/fesm2022/angular-three-soba-abstractions.mjs +3 -3
  39. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  40. package/fesm2022/angular-three-soba-cameras.mjs +4 -3
  41. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  42. package/fesm2022/angular-three-soba-controls.mjs +24 -44
  43. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  44. package/fesm2022/angular-three-soba-gizmos.mjs +120 -88
  45. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  46. package/fesm2022/angular-three-soba-loaders.mjs +0 -6
  47. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  48. package/fesm2022/angular-three-soba-materials.mjs +13 -10
  49. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  50. package/fesm2022/angular-three-soba-misc.mjs +4 -8
  51. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  52. package/fesm2022/angular-three-soba-staging.mjs +26 -20
  53. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  54. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  55. package/gizmos/lib/pivot-controls/axis-arrow.d.ts +1 -1
  56. package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
  57. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  58. package/gizmos/lib/pivot-controls/plane-slider.d.ts +1 -1
  59. package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +1 -1
  60. package/gizmos/lib/transform-controls.d.ts +2 -2
  61. package/loaders/lib/loader.d.ts +0 -2
  62. package/materials/lib/custom-shader-material.d.ts +3 -3
  63. package/materials/lib/mesh-portal-material.d.ts +10 -10
  64. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  65. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  66. package/materials/lib/point-material.d.ts +1 -0
  67. package/metadata.json +1 -1
  68. package/misc/lib/computed-attribute.d.ts +5 -5
  69. package/misc/lib/decal.d.ts +1 -1
  70. package/misc/lib/sampler.d.ts +1 -1
  71. package/package.json +4 -4
  72. package/performances/lib/instances/instances.d.ts +10 -10
  73. package/performances/lib/points/points.d.ts +22 -22
  74. package/performances/lib/segments/segments.d.ts +4 -4
  75. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  76. package/staging/lib/caustics.d.ts +1 -1
  77. package/staging/lib/center.d.ts +2 -2
  78. package/staging/lib/contact-shadows.d.ts +1 -1
  79. package/staging/lib/lightformer.d.ts +1 -1
  80. package/staging/lib/mask.d.ts +1 -1
  81. package/staging/lib/render-texture.d.ts +1 -1
  82. package/staging/lib/sky.d.ts +1 -1
  83. package/staging/lib/spot-light.d.ts +2 -2
  84. package/staging/lib/stage.d.ts +5 -5
  85. package/web-types.json +1 -1
@@ -1,4 +1,4 @@
1
- import { DestroyRef, Directive, TemplateRef, ViewContainerRef, afterNextRender, computed, inject, input, output, signal, untracked, } from '@angular/core';
1
+ import { DestroyRef, Directive, TemplateRef, ViewContainerRef, computed, effect, inject, input, output, signal, untracked, } from '@angular/core';
2
2
  import { injectTexture } from 'angular-three-soba/loaders';
3
3
  import { assertInjector } from 'ngxtension/assert-injector';
4
4
  import * as i0 from "@angular/core";
@@ -56,7 +56,7 @@ export class NgtsMatcapTexture {
56
56
  format: this.format,
57
57
  onLoad: this.matcapTextureLoaded.emit.bind(this.matcapTextureLoaded),
58
58
  });
59
- afterNextRender(() => {
59
+ effect(() => {
60
60
  untracked(() => {
61
61
  this.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });
62
62
  this.ref.detectChanges();
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
76
76
  type: Directive,
77
77
  args: [{ selector: 'ng-template[matcapTexture]', standalone: true }]
78
78
  }], ctorParameters: () => [] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2FwLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL21hdGNhcC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzVELFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNoQixLQUFLLEVBQUU7WUFDTixPQUFPLE9BQU8sQ0FBQztRQUNoQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQjtZQUNDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxvRUFBb0UsQ0FBQztBQUN0RixNQUFNLFdBQVcsR0FBRyx3RkFBd0YsQ0FBQztBQUU3RyxNQUFNLFVBQVUsbUJBQW1CLENBQ2xDLEtBQTRCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDbkMsRUFDQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUNuQixNQUFNLEVBQ04sUUFBUSxNQUNrRixFQUFFO0lBRTdGLE9BQU8sY0FBYyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxD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RSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFvQixFQUFFLEdBQVk7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDOytHQWhDVyxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdEluamVjdG9yLFxuXHRTaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdFRleHR1cmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbG9hZGVycyc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5cbmZ1bmN0aW9uIGdldEZvcm1hdFN0cmluZyhmb3JtYXQ6IG51bWJlcikge1xuXHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdGNhc2UgNjQ6XG5cdFx0XHRyZXR1cm4gJy02NHB4Jztcblx0XHRjYXNlIDEyODpcblx0XHRcdHJldHVybiAnLTEyOHB4Jztcblx0XHRjYXNlIDI1Njpcblx0XHRcdHJldHVybiAnLTI1NnB4Jztcblx0XHRjYXNlIDUxMjpcblx0XHRcdHJldHVybiAnLTUxMnB4Jztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuICcnO1xuXHR9XG59XG5cbmNvbnN0IExJU1RfVVJMID0gJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9wbW5kcnMvZHJlaS1hc3NldHNAbWFzdGVyL21hdGNhcHMuanNvbic7XG5jb25zdCBNQVRDQVBfUk9PVCA9ICdodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9lbW1lbGxlcHBpL21hdGNhcHMvOWIzNmNjYWFmMGEyNDg4MWEzOTA2MmQwNTU2NmM5ZTkyYmU0YWEwZCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RNYXRjYXBUZXh0dXJlKFxuXHRpZDogKCkgPT4gbnVtYmVyIHwgc3RyaW5nID0gKCkgPT4gMCxcblx0e1xuXHRcdGZvcm1hdCA9ICgpID0+IDEwMjQsXG5cdFx0b25Mb2FkLFxuXHRcdGluamVjdG9yLFxuXHR9OiB7IGZvcm1hdD86ICgpID0+IG51bWJlcjsgb25Mb2FkPzogKHRleHR1cmU6IFRleHR1cmVbXSkgPT4gdm9pZDsgaW5qZWN0b3I/OiBJbmplY3RvciB9ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdE1hdGNhcFRleHR1cmUsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgbWF0Y2FwTGlzdCA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSk7XG5cblx0XHRmZXRjaChMSVNUX1VSTClcblx0XHRcdC50aGVuKChyZXMpID0+IHJlcy5qc29uKCkpXG5cdFx0XHQudGhlbigobGlzdCkgPT4ge1xuXHRcdFx0XHRtYXRjYXBMaXN0LnNldChsaXN0KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29uc3QgREVGQVVMVF9NQVRDQVAgPSBjb21wdXRlZCgoKSA9PiBtYXRjYXBMaXN0KClbMF0pO1xuXHRcdGNvbnN0IG51bVRvdCA9IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKG1hdGNhcExpc3QoKSkubGVuZ3RoKTtcblxuXHRcdGNvbnN0IGZpbGVIYXNoID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaWRWYWx1ZSA9IGlkKCk7XG5cdFx0XHRpZiAodHlwZW9mIGlkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdHJldHVybiBpZFZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIGlkVmFsdWUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdHJldHVybiBtYXRjYXBMaXN0KClbaWRWYWx1ZV07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgZmlsZU5hbWUgPSBjb21wdXRlZCgoKSA9PiBgJHtmaWxlSGFzaCgpIHx8IERFRkFVTFRfTUFUQ0FQKCl9JHtnZXRGb3JtYXRTdHJpbmcoZm9ybWF0KCkpfS5wbmdgKTtcblx0XHRjb25zdCB1cmwgPSBjb21wdXRlZCgoKSA9PiBgJHtNQVRDQVBfUk9PVH0vJHtmb3JtYXQoKX0vJHtmaWxlTmFtZSgpfWApO1xuXG5cdFx0Y29uc3QgbWF0Y2FwVGV4dHVyZSA9IGluamVjdFRleHR1cmUodXJsLCB7IG9uTG9hZCB9KTtcblxuXHRcdHJldHVybiB7IHVybCwgdGV4dHVyZTogbWF0Y2FwVGV4dHVyZSwgbnVtVG90IH07XG5cdH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNYXRjYXBUZXh0dXJlT3B0aW9ucyB7XG5cdGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRmb3JtYXQ/OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW21hdGNhcFRleHR1cmVdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNNYXRjYXBUZXh0dXJlIHtcblx0bWF0Y2FwVGV4dHVyZSA9IGlucHV0PE5ndHNNYXRjYXBUZXh0dXJlT3B0aW9ucz4oKTtcblx0bWF0Y2FwVGV4dHVyZUxvYWRlZCA9IG91dHB1dDxUZXh0dXJlW10+KCk7XG5cblx0cHJpdmF0ZSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG5cdHByaXZhdGUgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG5cdHByaXZhdGUgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1hdGNhcFRleHR1cmUoKT8uaWQgPz8gMCk7XG5cdHByaXZhdGUgZm9ybWF0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tYXRjYXBUZXh0dXJlKCk/LmZvcm1hdCA/PyAxMDI0KTtcblxuXHRwcml2YXRlIHJlZj86IEVtYmVkZGVkVmlld1JlZjx7ICRpbXBsaWNpdDogU2lnbmFsPFRleHR1cmUgfCBudWxsPiB9PjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCB7IHRleHR1cmUgfSA9IGluamVjdE1hdGNhcFRleHR1cmUodGhpcy5pZCwge1xuXHRcdFx0Zm9ybWF0OiB0aGlzLmZvcm1hdCxcblx0XHRcdG9uTG9hZDogdGhpcy5tYXRjYXBUZXh0dXJlTG9hZGVkLmVtaXQuYmluZCh0aGlzLm1hdGNhcFRleHR1cmVMb2FkZWQpLFxuXHRcdH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucmVmID0gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUsIHsgJGltcGxpY2l0OiB0ZXh0dXJlIH0pO1xuXHRcdFx0XHR0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy5yZWY/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHNNYXRjYXBUZXh0dXJlLCBjdHg6IHVua25vd24pOiBjdHggaXMgeyAkaW1wbGljaXQ6IFNpZ25hbDxUZXh0dXJlIHwgbnVsbD4gfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2FwLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL21hdGNhcC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzVELFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNoQixLQUFLLEVBQUU7WUFDTixPQUFPLE9BQU8sQ0FBQztRQUNoQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQixLQUFLLEdBQUc7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNqQjtZQUNDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxvRUFBb0UsQ0FBQztBQUN0RixNQUFNLFdBQVcsR0FBRyx3RkFBd0YsQ0FBQztBQUU3RyxNQUFNLFVBQVUsbUJBQW1CLENBQ2xDLEtBQTRCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDbkMsRUFDQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUNuQixNQUFNLEVBQ04sUUFBUSxNQUNrRixFQUFFO0lBRTdGLE9BQU8sY0FBYyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxD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LENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQW9CLEVBQUUsR0FBWTtRQUMvRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7K0dBaENXLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5qZWN0b3IsXG5cdFNpZ25hbCxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0VGV4dHVyZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcblxuZnVuY3Rpb24gZ2V0Rm9ybWF0U3RyaW5nKGZvcm1hdDogbnVtYmVyKSB7XG5cdHN3aXRjaCAoZm9ybWF0KSB7XG5cdFx0Y2FzZSA2NDpcblx0XHRcdHJldHVybiAnLTY0cHgnO1xuXHRcdGNhc2UgMTI4OlxuXHRcdFx0cmV0dXJuICctMTI4cHgnO1xuXHRcdGNhc2UgMjU2OlxuXHRcdFx0cmV0dXJuICctMjU2cHgnO1xuXHRcdGNhc2UgNTEyOlxuXHRcdFx0cmV0dXJuICctNTEycHgnO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gJyc7XG5cdH1cbn1cblxuY29uc3QgTElTVF9VUkwgPSAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3BtbmRycy9kcmVpLWFzc2V0c0BtYXN0ZXIvbWF0Y2Fwcy5qc29uJztcbmNvbnN0IE1BVENBUF9ST09UID0gJ2h0dHBzOi8vcmF3Y2RuLmdpdGhhY2suY29tL2VtbWVsbGVwcGkvbWF0Y2Fwcy85YjM2Y2NhYWYwYTI0ODgxYTM5MDYyZDA1NTY2YzllOTJiZTRhYTBkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE1hdGNhcFRleHR1cmUoXG5cdGlkOiAoKSA9PiBudW1iZXIgfCBzdHJpbmcgPSAoKSA9PiAwLFxuXHR7XG5cdFx0Zm9ybWF0ID0gKCkgPT4gMTAyNCxcblx0XHRvbkxvYWQsXG5cdFx0aW5qZWN0b3IsXG5cdH06IHsgZm9ybWF0PzogKCkgPT4gbnVtYmVyOyBvbkxvYWQ/OiAodGV4dHVyZTogVGV4dHVyZVtdKSA9PiB2b2lkOyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0TWF0Y2FwVGV4dHVyZSwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBtYXRjYXBMaXN0ID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KTtcblxuXHRcdGZldGNoKExJU1RfVVJMKVxuXHRcdFx0LnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcblx0XHRcdC50aGVuKChsaXN0KSA9PiB7XG5cdFx0XHRcdG1hdGNhcExpc3Quc2V0KGxpc3QpO1xuXHRcdFx0fSk7XG5cblx0XHRjb25zdCBERUZBVUxUX01BVENBUCA9IGNvbXB1dGVkKCgpID0+IG1hdGNhcExpc3QoKVswXSk7XG5cdFx0Y29uc3QgbnVtVG90ID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LmtleXMobWF0Y2FwTGlzdCgpKS5sZW5ndGgpO1xuXG5cdFx0Y29uc3QgZmlsZUhhc2ggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpZFZhbHVlID0gaWQoKTtcblx0XHRcdGlmICh0eXBlb2YgaWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0cmV0dXJuIGlkVmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0eXBlb2YgaWRWYWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0cmV0dXJuIG1hdGNhcExpc3QoKVtpZFZhbHVlXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBmaWxlTmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke2ZpbGVIYXNoKCkgfHwgREVGQVVMVF9NQVRDQVAoKX0ke2dldEZvcm1hdFN0cmluZyhmb3JtYXQoKSl9LnBuZ2ApO1xuXHRcdGNvbnN0IHVybCA9IGNvbXB1dGVkKCgpID0+IGAke01BVENBUF9ST09UfS8ke2Zvcm1hdCgpfS8ke2ZpbGVOYW1lKCl9YCk7XG5cblx0XHRjb25zdCBtYXRjYXBUZXh0dXJlID0gaW5qZWN0VGV4dHVyZSh1cmwsIHsgb25Mb2FkIH0pO1xuXG5cdFx0cmV0dXJuIHsgdXJsLCB0ZXh0dXJlOiBtYXRjYXBUZXh0dXJlLCBudW1Ub3QgfTtcblx0fSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c01hdGNhcFRleHR1cmVPcHRpb25zIHtcblx0aWQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cdGZvcm1hdD86IG51bWJlcjtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbWF0Y2FwVGV4dHVyZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c01hdGNhcFRleHR1cmUge1xuXHRtYXRjYXBUZXh0dXJlID0gaW5wdXQ8Tmd0c01hdGNhcFRleHR1cmVPcHRpb25zPigpO1xuXHRtYXRjYXBUZXh0dXJlTG9hZGVkID0gb3V0cHV0PFRleHR1cmVbXT4oKTtcblxuXHRwcml2YXRlIHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblx0cHJpdmF0ZSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0cHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWF0Y2FwVGV4dHVyZSgpPy5pZCA/PyAwKTtcblx0cHJpdmF0ZSBmb3JtYXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1hdGNhcFRleHR1cmUoKT8uZm9ybWF0ID8/IDEwMjQpO1xuXG5cdHByaXZhdGUgcmVmPzogRW1iZWRkZWRWaWV3UmVmPHsgJGltcGxpY2l0OiBTaWduYWw8VGV4dHVyZSB8IG51bGw+IH0+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHsgdGV4dHVyZSB9ID0gaW5qZWN0TWF0Y2FwVGV4dHVyZSh0aGlzLmlkLCB7XG5cdFx0XHRmb3JtYXQ6IHRoaXMuZm9ybWF0LFxuXHRcdFx0b25Mb2FkOiB0aGlzLm1hdGNhcFRleHR1cmVMb2FkZWQuZW1pdC5iaW5kKHRoaXMubWF0Y2FwVGV4dHVyZUxvYWRlZCksXG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0dGhpcy5yZWYgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSwgeyAkaW1wbGljaXQ6IHRleHR1cmUgfSk7XG5cdFx0XHRcdHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c01hdGNhcFRleHR1cmUsIGN0eDogdW5rbm93bik6IGN0eCBpcyB7ICRpbXBsaWNpdDogU2lnbmFsPFRleHR1cmUgfCBudWxsPiB9IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { DestroyRef, Directive, TemplateRef, ViewContainerRef, afterNextRender, computed, effect, inject, input, output, signal, untracked, } from '@angular/core';
1
+ import { DestroyRef, Directive, TemplateRef, ViewContainerRef, computed, effect, inject, input, output, signal, untracked, } from '@angular/core';
2
2
  import { injectTexture } from 'angular-three-soba/loaders';
3
3
  import { assertInjector } from 'ngxtension/assert-injector';
4
4
  import { RepeatWrapping, Vector2 } from 'three';
@@ -56,7 +56,7 @@ export class NgtsNormalTexture {
56
56
  settings: this.settings,
57
57
  onLoad: this.normalTextureLoaded.emit.bind(this.normalTextureLoaded),
58
58
  });
59
- afterNextRender(() => {
59
+ effect(() => {
60
60
  untracked(() => {
61
61
  this.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });
62
62
  this.ref.detectChanges();
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
76
76
  type: Directive,
77
77
  args: [{ selector: 'ng-template[normalTexture]', standalone: true }]
78
78
  }], ctorParameters: () => [] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL25vcm1hbC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQVcsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUV6RCxNQUFNLFdBQVcsR0FBRyx3RkFBd0YsQ0FBQztBQUM3RyxNQUFNLFFBQVEsR0FBRyw0RUFBNEUsQ0FBQztBQVE5RixNQUFNLFVBQVUsbUJBQW1CLENBQ2xDLEtBQTRCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDbkMsRUFDQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDckIsTUFBTSxFQUNOLFFBQVEsR0FDb0c7SUFFN0csT0FBTyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN6RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELEtBQUssQ0FBQyxRQUFRLENBQUM7YUFDYixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNkLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFB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TSxFQUFFLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FDcEUsQ0FBQyxDQUFDO1FBRUgsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQW9CLEVBQUUsR0FBWTtRQUMvRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7K0dBbkNXLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5qZWN0b3IsXG5cdFNpZ25hbCxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RUZXh0dXJlIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2xvYWRlcnMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBSZXBlYXRXcmFwcGluZywgVGV4dHVyZSwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgTk9STUFMX1JPT1QgPSAnaHR0cHM6Ly9yYXdjZG4uZ2l0aGFjay5jb20vcG1uZHJzL2RyZWktYXNzZXRzLzdhMzEwNDk5N2UxNTc2ZjgzNDcyODI5ODE1YjAwODgwZDg4YjMyZmInO1xuY29uc3QgTElTVF9VUkwgPSAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3BtbmRycy9kcmVpLWFzc2V0c0BtYXN0ZXIvbm9ybWFscy9ub3JtYWxzLmpzb24nO1xuXG5pbnRlcmZhY2UgTmd0c05vcm1hbFRleHR1cmVTZXR0aW5ncyB7XG5cdHJlcGVhdD86IG51bWJlcltdO1xuXHRhbmlzb3Ryb3B5PzogbnVtYmVyO1xuXHRvZmZzZXQ/OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5vcm1hbFRleHR1cmUoXG5cdGlkOiAoKSA9PiBzdHJpbmcgfCBudW1iZXIgPSAoKSA9PiAwLFxuXHR7XG5cdFx0c2V0dGluZ3MgPSAoKSA9PiAoe30pLFxuXHRcdG9uTG9hZCxcblx0XHRpbmplY3Rvcixcblx0fTogeyBzZXR0aW5ncz86ICgpID0+IE5ndHNOb3JtYWxUZXh0dXJlU2V0dGluZ3M7IG9uTG9hZD86ICh0ZXh0dXJlOiBUZXh0dXJlW10pID0+IHZvaWQ7IGluamVjdG9yPzogSW5qZWN0b3IgfSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Tm9ybWFsVGV4dHVyZSwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBub3JtYWxMaXN0ID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KTtcblxuXHRcdGZldGNoKExJU1RfVVJMKVxuXHRcdFx0LnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcblx0XHRcdC50aGVuKChsaXN0KSA9PiB7XG5cdFx0XHRcdG5vcm1hbExpc3Quc2V0KGxpc3QpO1xuXHRcdFx0fSk7XG5cblx0XHRjb25zdCBERUZBVUxUX05PUk1BTCA9IGNvbXB1dGVkKCgpID0+IG5vcm1hbExpc3QoKVswXSk7XG5cdFx0Y29uc3QgbnVtVG90ID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LmtleXMobm9ybWFsTGlzdCgpKS5sZW5ndGgpO1xuXG5cdFx0Y29uc3QgZmlsZUhhc2ggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpZFZhbHVlID0gaWQoKTtcblx0XHRcdGlmICh0eXBlb2YgaWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0cmV0dXJuIGlkVmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0eXBlb2YgaWRWYWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0cmV0dXJuIG5vcm1hbExpc3QoKVtpZFZhbHVlXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBpbWFnZU5hbWUgPSBjb21wdXRlZCgoKSA9PiBmaWxlSGFzaCgpIHx8IERFRkFVTFRfTk9STUFMKCkpO1xuXHRcdGNvbnN0IHVybCA9IGNvbXB1dGVkKCgpID0+IGAke05PUk1BTF9ST09UfS9ub3JtYWxzLyR7aW1hZ2VOYW1lKCl9YCk7XG5cblx0XHRjb25zdCBub3JtYWxUZXh0dXJlID0gaW5qZWN0VGV4dHVyZSh1cmwsIHsgb25Mb2FkIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHRleHR1cmUgPSBub3JtYWxUZXh0dXJlKCk7XG5cdFx0XHRpZiAoIXRleHR1cmUpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBhbmlzb3Ryb3B5ID0gMSwgcmVwZWF0ID0gWzEsIDFdLCBvZmZzZXQgPSBbMCwgMF0gfSA9IHNldHRpbmdzKCk7XG5cdFx0XHR0ZXh0dXJlLndyYXBTID0gdGV4dHVyZS53cmFwVCA9IFJlcGVhdFdyYXBwaW5nO1xuXHRcdFx0dGV4dHVyZS5yZXBlYXQgPSBuZXcgVmVjdG9yMihyZXBlYXRbMF0sIHJlcGVhdFsxXSk7XG5cdFx0XHR0ZXh0dXJlLm9mZnNldCA9IG5ldyBWZWN0b3IyKG9mZnNldFswXSwgb2Zmc2V0WzFdKTtcblx0XHRcdHRleHR1cmUuYW5pc290cm9weSA9IGFuaXNvdHJvcHk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4geyB1cmwsIHRleHR1cmU6IG5vcm1hbFRleHR1cmUsIG51bVRvdCB9O1xuXHR9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzTm9ybWFsVGV4dHVyZU9wdGlvbnMgZXh0ZW5kcyBOZ3RzTm9ybWFsVGV4dHVyZVNldHRpbmdzIHtcblx0aWQ/OiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25vcm1hbFRleHR1cmVdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNOb3JtYWxUZXh0dXJlIHtcblx0bm9ybWFsVGV4dHVyZSA9IGlucHV0PE5ndHNOb3JtYWxUZXh0dXJlT3B0aW9ucz4oKTtcblx0bm9ybWFsVGV4dHVyZUxvYWRlZCA9IG91dHB1dDxUZXh0dXJlW10+KCk7XG5cblx0cHJpdmF0ZSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG5cdHByaXZhdGUgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG5cdHByaXZhdGUgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5vcm1hbFRleHR1cmUoKT8uaWQgPz8gMCk7XG5cdHByaXZhdGUgc2V0dGluZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgeyBpZDogXywgLi4uc2V0dGluZ3MgfSA9IHRoaXMubm9ybWFsVGV4dHVyZSgpIHx8IHt9O1xuXHRcdHJldHVybiBzZXR0aW5ncztcblx0fSk7XG5cblx0cHJpdmF0ZSByZWY/OiBFbWJlZGRlZFZpZXdSZWY8eyAkaW1wbGljaXQ6IFNpZ25hbDxUZXh0dXJlIHwgbnVsbD4gfT47XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgeyB0ZXh0dXJlIH0gPSBpbmplY3ROb3JtYWxUZXh0dXJlKHRoaXMuaWQsIHtcblx0XHRcdHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxuXHRcdFx0b25Mb2FkOiB0aGlzLm5vcm1hbFRleHR1cmVMb2FkZWQuZW1pdC5iaW5kKHRoaXMubm9ybWFsVGV4dHVyZUxvYWRlZCksXG5cdFx0fSk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0dGhpcy5yZWYgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSwgeyAkaW1wbGljaXQ6IHRleHR1cmUgfSk7XG5cdFx0XHRcdHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c05vcm1hbFRleHR1cmUsIGN0eDogdW5rbm93bik6IGN0eCBpcyB7ICRpbXBsaWNpdDogU2lnbmFsPFRleHR1cmUgfCBudWxsPiB9IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL25vcm1hbC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBVyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXpELE1BQU0sV0FBVyxHQUFHLHdGQUF3RixDQUFDO0FBQzdHLE1BQU0sUUFBUSxHQUFHLDRFQUE0RSxDQUFDO0FBUTlGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDbEMsS0FBNEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUNuQyxFQUNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNyQixNQUFNLEVBQ04sUUFBUSxHQUNvRztJQUU3RyxPQUFPLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3pELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBeUIsRUFBRSxDQUFDLENBQUM7UUFFdEQsS0FBSyxDQUFDLFFBQVEsQ0FBQzthQUNiLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FB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TyxFQUFFLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUNwRSxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFvQixFQUFFLEdBQVk7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDOytHQW5DVyxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdEluamVjdG9yLFxuXHRTaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdFRleHR1cmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbG9hZGVycyc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IFJlcGVhdFdyYXBwaW5nLCBUZXh0dXJlLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuXG5jb25zdCBOT1JNQUxfUk9PVCA9ICdodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9wbW5kcnMvZHJlaS1hc3NldHMvN2EzMTA0OTk3ZTE1NzZmODM0NzI4Mjk4MTViMDA4ODBkODhiMzJmYic7XG5jb25zdCBMSVNUX1VSTCA9ICdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvcG1uZHJzL2RyZWktYXNzZXRzQG1hc3Rlci9ub3JtYWxzL25vcm1hbHMuanNvbic7XG5cbmludGVyZmFjZSBOZ3RzTm9ybWFsVGV4dHVyZVNldHRpbmdzIHtcblx0cmVwZWF0PzogbnVtYmVyW107XG5cdGFuaXNvdHJvcHk/OiBudW1iZXI7XG5cdG9mZnNldD86IG51bWJlcltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tm9ybWFsVGV4dHVyZShcblx0aWQ6ICgpID0+IHN0cmluZyB8IG51bWJlciA9ICgpID0+IDAsXG5cdHtcblx0XHRzZXR0aW5ncyA9ICgpID0+ICh7fSksXG5cdFx0b25Mb2FkLFxuXHRcdGluamVjdG9yLFxuXHR9OiB7IHNldHRpbmdzPzogKCkgPT4gTmd0c05vcm1hbFRleHR1cmVTZXR0aW5nczsgb25Mb2FkPzogKHRleHR1cmU6IFRleHR1cmVbXSkgPT4gdm9pZDsgaW5qZWN0b3I/OiBJbmplY3RvciB9LFxuKSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3ROb3JtYWxUZXh0dXJlLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IG5vcm1hbExpc3QgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pO1xuXG5cdFx0ZmV0Y2goTElTVF9VUkwpXG5cdFx0XHQudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuXHRcdFx0LnRoZW4oKGxpc3QpID0+IHtcblx0XHRcdFx0bm9ybWFsTGlzdC5zZXQobGlzdCk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnN0IERFRkFVTFRfTk9STUFMID0gY29tcHV0ZWQoKCkgPT4gbm9ybWFsTGlzdCgpWzBdKTtcblx0XHRjb25zdCBudW1Ub3QgPSBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhub3JtYWxMaXN0KCkpLmxlbmd0aCk7XG5cblx0XHRjb25zdCBmaWxlSGFzaCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGlkVmFsdWUgPSBpZCgpO1xuXHRcdFx0aWYgKHR5cGVvZiBpZFZhbHVlID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRyZXR1cm4gaWRWYWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHR5cGVvZiBpZFZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRyZXR1cm4gbm9ybWFsTGlzdCgpW2lkVmFsdWVdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9KTtcblxuXHRcdGNvbnN0IGltYWdlTmFtZSA9IGNvbXB1dGVkKCgpID0+IGZpbGVIYXNoKCkgfHwgREVGQVVMVF9OT1JNQUwoKSk7XG5cdFx0Y29uc3QgdXJsID0gY29tcHV0ZWQoKCkgPT4gYCR7Tk9STUFMX1JPT1R9L25vcm1hbHMvJHtpbWFnZU5hbWUoKX1gKTtcblxuXHRcdGNvbnN0IG5vcm1hbFRleHR1cmUgPSBpbmplY3RUZXh0dXJlKHVybCwgeyBvbkxvYWQgfSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgdGV4dHVyZSA9IG5vcm1hbFRleHR1cmUoKTtcblx0XHRcdGlmICghdGV4dHVyZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCB7IGFuaXNvdHJvcHkgPSAxLCByZXBlYXQgPSBbMSwgMV0sIG9mZnNldCA9IFswLCAwXSB9ID0gc2V0dGluZ3MoKTtcblx0XHRcdHRleHR1cmUud3JhcFMgPSB0ZXh0dXJlLndyYXBUID0gUmVwZWF0V3JhcHBpbmc7XG5cdFx0XHR0ZXh0dXJlLnJlcGVhdCA9IG5ldyBWZWN0b3IyKHJlcGVhdFswXSwgcmVwZWF0WzFdKTtcblx0XHRcdHRleHR1cmUub2Zmc2V0ID0gbmV3IFZlY3RvcjIob2Zmc2V0WzBdLCBvZmZzZXRbMV0pO1xuXHRcdFx0dGV4dHVyZS5hbmlzb3Ryb3B5ID0gYW5pc290cm9weTtcblx0XHR9KTtcblxuXHRcdHJldHVybiB7IHVybCwgdGV4dHVyZTogbm9ybWFsVGV4dHVyZSwgbnVtVG90IH07XG5cdH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNOb3JtYWxUZXh0dXJlT3B0aW9ucyBleHRlbmRzIE5ndHNOb3JtYWxUZXh0dXJlU2V0dGluZ3Mge1xuXHRpZD86IG51bWJlciB8IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbm9ybWFsVGV4dHVyZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c05vcm1hbFRleHR1cmUge1xuXHRub3JtYWxUZXh0dXJlID0gaW5wdXQ8Tmd0c05vcm1hbFRleHR1cmVPcHRpb25zPigpO1xuXHRub3JtYWxUZXh0dXJlTG9hZGVkID0gb3V0cHV0PFRleHR1cmVbXT4oKTtcblxuXHRwcml2YXRlIHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblx0cHJpdmF0ZSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0cHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9ybWFsVGV4dHVyZSgpPy5pZCA/PyAwKTtcblx0cHJpdmF0ZSBzZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB7IGlkOiBfLCAuLi5zZXR0aW5ncyB9ID0gdGhpcy5ub3JtYWxUZXh0dXJlKCkgfHwge307XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9KTtcblxuXHRwcml2YXRlIHJlZj86IEVtYmVkZGVkVmlld1JlZjx7ICRpbXBsaWNpdDogU2lnbmFsPFRleHR1cmUgfCBudWxsPiB9PjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCB7IHRleHR1cmUgfSA9IGluamVjdE5vcm1hbFRleHR1cmUodGhpcy5pZCwge1xuXHRcdFx0c2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXG5cdFx0XHRvbkxvYWQ6IHRoaXMubm9ybWFsVGV4dHVyZUxvYWRlZC5lbWl0LmJpbmQodGhpcy5ub3JtYWxUZXh0dXJlTG9hZGVkKSxcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJlZiA9IHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7ICRpbXBsaWNpdDogdGV4dHVyZSB9KTtcblx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHRoaXMucmVmPy5kZXN0cm95KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfOiBOZ3RzTm9ybWFsVGV4dHVyZSwgY3R4OiB1bmtub3duKTogY3R4IGlzIHsgJGltcGxpY2l0OiBTaWduYWw8VGV4dHVyZSB8IG51bGw+IH0ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG4iXX0=
@@ -382,7 +382,7 @@ class NgtsGradientTexture {
382
382
  this.options = input(defaultOptions$6, { transform: mergeInputs(defaultOptions$6) });
383
383
  this.parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);
384
384
  this.store = injectStore();
385
- this.gl = this.store.select('gl');
385
+ this.outputColorSpace = this.store.select('gl', 'outputColorSpace');
386
386
  this.document = inject(DOCUMENT);
387
387
  this.canvas = computed(() => {
388
388
  const canvas = this.document.createElement('canvas');
@@ -424,7 +424,7 @@ class NgtsGradientTexture {
424
424
  <ngt-canvas-texture
425
425
  *args="[canvas()]"
426
426
  [attach]="attach()"
427
- [colorSpace]="gl().outputColorSpace"
427
+ [colorSpace]="outputColorSpace()"
428
428
  [parameters]="parameters()"
429
429
  >
430
430
  <ng-content />
@@ -440,7 +440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
440
440
  <ngt-canvas-texture
441
441
  *args="[canvas()]"
442
442
  [attach]="attach()"
443
- [colorSpace]="gl().outputColorSpace"
443
+ [colorSpace]="outputColorSpace()"
444
444
  [parameters]="parameters()"
445
445
  >
446
446
  <ng-content />
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtGroup, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Quaternion } from 'three';\n\nexport interface NgtsBillboardOptions extends Partial<NgtGroup> {\n\tfollow?: boolean;\n\tlockX?: boolean;\n\tlockY?: boolean;\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n@Component({\n\tselector: 'ngts-billboard',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new Quaternion();\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = group.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) group.rotation.x = prevRotation.x;\n\t\t\tif (lockY) group.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) group.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, NgtAfterAttach, NgtArgs, NgtObject3DNode, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, ColorRepresentation, Vector2, Vector3, Vector4 } from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\nexport type NgtLine2 = NgtObject3DNode<Line2, typeof Line2>;\nexport type NgtLineMaterial = NgtObject3DNode<LineMaterial, [LineMaterialParameters]>;\n\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/** Array of colors, [0, 0, 0] */\n\t\tvertexColors?: Array<ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/** Line width, 1 */\n\t\tlineWidth: number;\n\t\t/** Segments, false */\n\t\tsegments: boolean;\n\t\t/** Color */\n\t\tcolor?: ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n@Component({\n\tselector: 'ngts-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\tpoints = input.required<Array<Vector3 | Vector2 | [number, number, number] | [number, number] | number>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['color', 'vertexColors', 'lineWidth', 'segments', 'linewidth', 'dashed']);\n\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.size().width, this.size().height]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tline2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tlineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\t\t\treturn p instanceof Vector3 || p instanceof Vector4\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: p instanceof Vector2\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (c instanceof Color ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t// NOTE: use attached event to call computeLineDistances to ensure the geometry has been attached\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CatmullRomCurve3, Color, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\ttension: number;\n\tsegments: number;\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tpt instanceof Vector3 ? pt : new Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tsegmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tcolor instanceof Color ? color : new Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tlineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CubicBezierCurve3, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<Vector3 | [number, number, number]>();\n\tend = input.required<Vector3 | [number, number, number]>();\n\tmidA = input.required<Vector3 | [number, number, number]>();\n\tmidB = input.required<Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tpoints = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [this.start(), this.end(), this.midA(), this.midB(), this.segments()];\n\t\tconst startV = start instanceof Vector3 ? start : new Vector3(...start);\n\t\tconst endV = end instanceof Vector3 ? end : new Vector3(...end);\n\t\tconst midAV = midA instanceof Vector3 ? midA : new Vector3(...midA);\n\t\tconst midBV = midB instanceof Vector3 ? midB : new Vector3(...midB);\n\t\treturn new CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getLocalState, NgtMesh, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferAttribute, BufferGeometry, ColorRepresentation, EdgesGeometry, Mesh } from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\nexport type NgtsEdgesOptions = Partial<NgtMesh> & {\n\tthreshold?: number;\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\tgeometry?: BufferGeometry;\n\t\tcolor?: ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n@Component({\n\tselector: 'ngts-edges',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getLocalState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (new EdgesGeometry(geometry, threshold).attributes['position'] as BufferAttribute)\n\t\t\t\t.array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtTexture, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CanvasTexture, Color, ColorRepresentation } from 'three';\n\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtTexture, 'type'>> {\n\tsize: number;\n\twidth: number;\n\ttype: 'linear' | 'radial';\n\tinnerCircleRadius: number;\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n@Component({\n\tselector: 'ngts-gradient-texture',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"gl().outputColorSpace\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate store = injectStore();\n\tgl = this.store.select('gl');\n\tprivate document = inject(DOCUMENT);\n\n\tcanvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtMesh, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BackSide, Mesh, Plane, PlaneGeometry, ShaderMaterial, Uniform, Vector3 } from 'three';\n\nconst defaultOptions: Partial<NgtMesh> &\n\tGridMaterialOptions & { planeArgs: ConstructorParameters<typeof PlaneGeometry> } = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: BackSide,\n};\n\n@Component({\n\tselector: 'ngts-grid',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material [transparent]=\"true\" [side]=\"side()\" [parameters]=\"uniforms()\">\n\t\t\t\t<ngt-value attach=\"extensions.derivatives\" [rawValue]=\"true\" />\n\t\t\t</ngt-grid-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate plane = new Plane();\n\tprivate upVector = new Vector3(0, 1, 0);\n\tprivate zeroVector = new Vector3(0, 0, 0);\n\n\tplaneArgs = pick(this.options, 'planeArgs');\n\tside = pick(this.options, 'side');\n\tuniforms = computed(() => {\n\t\tconst {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t} = this.options();\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as Uniform<Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as Uniform<Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Object3D } from 'three';\n\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\nexport function injectHelper<\n\tTConstructor extends new (...args: any[]) => Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<Object3D> | Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(injectHelper, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst scene = store.select('scene');\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst _scene = scene();\n\n\t\t\t_scene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\t_scene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n@Component({\n\tstandalone: true,\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst localState = getLocalState(helper);\n\t\tif (!localState) return;\n\t\treturn localState.parent();\n\t});\n\n\thelper = injectHelper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ExtrudeGeometry, ExtrudeGeometryOptions, Shape, Vector2 } from 'three';\n\nexport interface NgtsPrismGeometryOptions extends Omit<ExtrudeGeometryOptions, 'depth'> {\n\t/** Height */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n@Component({\n\tselector: 'ngts-prism-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\tattach = input<NgtAttachable>('geometry');\n\tvertices = input.required<Array<Vector2 | [number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tparameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tshape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) => (v instanceof Vector2 ? v : new Vector2(...v)));\n\t\treturn new Shape(interpolatedVertices);\n\t});\n\n\tgeometryRef = viewChild<ElementRef<ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { QuadraticBezierCurve3, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\tstart = input<Vector3 | [number, number, number]>([0, 0, 0]);\n\tend = input<Vector3 | [number, number, number]>([0, 0, 0]);\n\tmid = input<Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tline = viewChild.required(NgtsLine);\n\n\tpoints = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new QuadraticBezierCurve3();\n\n\tsetPoints(\n\t\tstart: Vector3 | [number, number, number],\n\t\tend: Vector3 | [number, number, number],\n\t\tmid: Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: Vector3 | [number, number, number],\n\t\tend: Vector3 | [number, number, number],\n\t\tmid?: Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (start instanceof Vector3) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (end instanceof Vector3) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (mid instanceof Vector3) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtMesh, NgtObjectEvents, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ExtrudeGeometry, Mesh, Shape } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\nexport interface NgtsRoundedBoxOptions extends Partial<NgtMesh> {\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tradius: number;\n\tsmoothness: number;\n\tbevelSegments: number;\n\tsteps: number;\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n@Component({\n\tselector: 'ngts-rounded-box',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), params()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\tgeometryRef = viewChild<ElementRef<ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected params = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\t\tobjectEvents.ngtObjectEvents.set(mesh);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { NgtArgs, NgtMesh, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation } from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\nexport interface NgtsTextOptions extends Partial<NgtMesh> {\n\tcharacters?: string;\n\tcolor?: ColorRepresentation;\n\t/** Font size, default: 1 */\n\tfontSize: number;\n\tfontWeight?: number | string;\n\tfontStyle?: 'italic' | 'normal';\n\tmaxWidth?: number;\n\tlineHeight?: number;\n\tletterSpacing?: number;\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\tfont?: string;\n\tanchorX: number | 'left' | 'center' | 'right';\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\tclipRect?: [number, number, number, number];\n\tdepthOffset?: number;\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\toverflowWrap?: 'normal' | 'break-word';\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\toutlineWidth?: number | string;\n\toutlineOffsetX?: number | string;\n\toutlineOffsetY?: number | string;\n\toutlineBlur?: number | string;\n\toutlineColor?: ColorRepresentation;\n\toutlineOpacity?: number;\n\tstrokeWidth?: number | string;\n\tstrokeColor?: ColorRepresentation;\n\tstrokeOpacity?: number;\n\tfillOpacity?: number;\n\tsdfGlyphSize: number;\n\tdebugSDF?: boolean;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n@Component({\n\tselector: 'ngts-text',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText {\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\tsynced = output<Text>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tfont = pick(this.options, 'font');\n\tanchorX = pick(this.options, 'anchorX');\n\tanchorY = pick(this.options, 'anchorY');\n\tsdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tfontSize = pick(this.options, 'fontSize');\n\n\ttroikaMesh = new Text();\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtMesh, omit, pick } from 'angular-three';\nimport { injectFont, NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\tbevelSegments: number;\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtMesh> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n@Component({\n\tselector: 'ngts-text-3d',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\tfont = input.required<NgtsFontInput>();\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tloadedFont = injectFont(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\ttextArgs = computed(() => {\n\t\tconst [text, font, textOptions] = [this.text(), this.loadedFont(), this.textOptions()];\n\t\tif (!font) return null;\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtGroup, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Quaternion } from 'three';\n\nexport interface NgtsBillboardOptions extends Partial<NgtGroup> {\n\tfollow?: boolean;\n\tlockX?: boolean;\n\tlockY?: boolean;\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n@Component({\n\tselector: 'ngts-billboard',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new Quaternion();\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = group.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) group.rotation.x = prevRotation.x;\n\t\t\tif (lockY) group.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) group.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, NgtAfterAttach, NgtArgs, NgtObject3DNode, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, ColorRepresentation, Vector2, Vector3, Vector4 } from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\nexport type NgtLine2 = NgtObject3DNode<Line2, typeof Line2>;\nexport type NgtLineMaterial = NgtObject3DNode<LineMaterial, [LineMaterialParameters]>;\n\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/** Array of colors, [0, 0, 0] */\n\t\tvertexColors?: Array<ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/** Line width, 1 */\n\t\tlineWidth: number;\n\t\t/** Segments, false */\n\t\tsegments: boolean;\n\t\t/** Color */\n\t\tcolor?: ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n@Component({\n\tselector: 'ngts-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\tpoints = input.required<Array<Vector3 | Vector2 | [number, number, number] | [number, number] | number>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['color', 'vertexColors', 'lineWidth', 'segments', 'linewidth', 'dashed']);\n\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.size().width, this.size().height]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tline2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tlineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\t\t\treturn p instanceof Vector3 || p instanceof Vector4\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: p instanceof Vector2\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (c instanceof Color ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t// NOTE: use attached event to call computeLineDistances to ensure the geometry has been attached\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CatmullRomCurve3, Color, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\ttension: number;\n\tsegments: number;\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tpt instanceof Vector3 ? pt : new Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tsegmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tcolor instanceof Color ? color : new Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tlineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CubicBezierCurve3, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<Vector3 | [number, number, number]>();\n\tend = input.required<Vector3 | [number, number, number]>();\n\tmidA = input.required<Vector3 | [number, number, number]>();\n\tmidB = input.required<Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tpoints = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [this.start(), this.end(), this.midA(), this.midB(), this.segments()];\n\t\tconst startV = start instanceof Vector3 ? start : new Vector3(...start);\n\t\tconst endV = end instanceof Vector3 ? end : new Vector3(...end);\n\t\tconst midAV = midA instanceof Vector3 ? midA : new Vector3(...midA);\n\t\tconst midBV = midB instanceof Vector3 ? midB : new Vector3(...midB);\n\t\treturn new CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getLocalState, NgtMesh, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferAttribute, BufferGeometry, ColorRepresentation, EdgesGeometry, Mesh } from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\nexport type NgtsEdgesOptions = Partial<NgtMesh> & {\n\tthreshold?: number;\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\tgeometry?: BufferGeometry;\n\t\tcolor?: ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n@Component({\n\tselector: 'ngts-edges',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getLocalState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (new EdgesGeometry(geometry, threshold).attributes['position'] as BufferAttribute)\n\t\t\t\t.array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtTexture, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CanvasTexture, Color, ColorRepresentation } from 'three';\n\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtTexture, 'type'>> {\n\tsize: number;\n\twidth: number;\n\ttype: 'linear' | 'radial';\n\tinnerCircleRadius: number;\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n@Component({\n\tselector: 'ngts-gradient-texture',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"outputColorSpace()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate store = injectStore();\n\toutputColorSpace = this.store.select('gl', 'outputColorSpace');\n\tprivate document = inject(DOCUMENT);\n\n\tcanvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtMesh, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BackSide, Mesh, Plane, PlaneGeometry, ShaderMaterial, Uniform, Vector3 } from 'three';\n\nconst defaultOptions: Partial<NgtMesh> &\n\tGridMaterialOptions & { planeArgs: ConstructorParameters<typeof PlaneGeometry> } = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: BackSide,\n};\n\n@Component({\n\tselector: 'ngts-grid',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material [transparent]=\"true\" [side]=\"side()\" [parameters]=\"uniforms()\">\n\t\t\t\t<ngt-value attach=\"extensions.derivatives\" [rawValue]=\"true\" />\n\t\t\t</ngt-grid-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate plane = new Plane();\n\tprivate upVector = new Vector3(0, 1, 0);\n\tprivate zeroVector = new Vector3(0, 0, 0);\n\n\tplaneArgs = pick(this.options, 'planeArgs');\n\tside = pick(this.options, 'side');\n\tuniforms = computed(() => {\n\t\tconst {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t} = this.options();\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as Uniform<Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as Uniform<Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Object3D } from 'three';\n\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\nexport function injectHelper<\n\tTConstructor extends new (...args: any[]) => Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<Object3D> | Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(injectHelper, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst scene = store.select('scene');\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst _scene = scene();\n\n\t\t\t_scene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\t_scene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n@Component({\n\tstandalone: true,\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst localState = getLocalState(helper);\n\t\tif (!localState) return;\n\t\treturn localState.parent();\n\t});\n\n\thelper = injectHelper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ExtrudeGeometry, ExtrudeGeometryOptions, Shape, Vector2 } from 'three';\n\nexport interface NgtsPrismGeometryOptions extends Omit<ExtrudeGeometryOptions, 'depth'> {\n\t/** Height */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n@Component({\n\tselector: 'ngts-prism-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\tattach = input<NgtAttachable>('geometry');\n\tvertices = input.required<Array<Vector2 | [number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tparameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tshape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) => (v instanceof Vector2 ? v : new Vector2(...v)));\n\t\treturn new Shape(interpolatedVertices);\n\t});\n\n\tgeometryRef = viewChild<ElementRef<ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { QuadraticBezierCurve3, Vector3 } from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\tstart = input<Vector3 | [number, number, number]>([0, 0, 0]);\n\tend = input<Vector3 | [number, number, number]>([0, 0, 0]);\n\tmid = input<Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tline = viewChild.required(NgtsLine);\n\n\tpoints = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new QuadraticBezierCurve3();\n\n\tsetPoints(\n\t\tstart: Vector3 | [number, number, number],\n\t\tend: Vector3 | [number, number, number],\n\t\tmid: Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: Vector3 | [number, number, number],\n\t\tend: Vector3 | [number, number, number],\n\t\tmid?: Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (start instanceof Vector3) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (end instanceof Vector3) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (mid instanceof Vector3) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtMesh, NgtObjectEvents, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ExtrudeGeometry, Mesh, Shape } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\nexport interface NgtsRoundedBoxOptions extends Partial<NgtMesh> {\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tradius: number;\n\tsmoothness: number;\n\tbevelSegments: number;\n\tsteps: number;\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n@Component({\n\tselector: 'ngts-rounded-box',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), params()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\tgeometryRef = viewChild<ElementRef<ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected params = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\t\tobjectEvents.ngtObjectEvents.set(mesh);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { NgtArgs, NgtMesh, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation } from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\nexport interface NgtsTextOptions extends Partial<NgtMesh> {\n\tcharacters?: string;\n\tcolor?: ColorRepresentation;\n\t/** Font size, default: 1 */\n\tfontSize: number;\n\tfontWeight?: number | string;\n\tfontStyle?: 'italic' | 'normal';\n\tmaxWidth?: number;\n\tlineHeight?: number;\n\tletterSpacing?: number;\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\tfont?: string;\n\tanchorX: number | 'left' | 'center' | 'right';\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\tclipRect?: [number, number, number, number];\n\tdepthOffset?: number;\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\toverflowWrap?: 'normal' | 'break-word';\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\toutlineWidth?: number | string;\n\toutlineOffsetX?: number | string;\n\toutlineOffsetY?: number | string;\n\toutlineBlur?: number | string;\n\toutlineColor?: ColorRepresentation;\n\toutlineOpacity?: number;\n\tstrokeWidth?: number | string;\n\tstrokeColor?: ColorRepresentation;\n\tstrokeOpacity?: number;\n\tfillOpacity?: number;\n\tsdfGlyphSize: number;\n\tdebugSDF?: boolean;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n@Component({\n\tselector: 'ngts-text',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText {\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\tsynced = output<Text>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tfont = pick(this.options, 'font');\n\tanchorX = pick(this.options, 'anchorX');\n\tanchorY = pick(this.options, 'anchorY');\n\tsdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tfontSize = pick(this.options, 'fontSize');\n\n\ttroikaMesh = new Text();\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtGeometry, NgtMesh, omit, pick } from 'angular-three';\nimport { injectFont, NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\tbevelSegments: number;\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtMesh> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n@Component({\n\tselector: 'ngts-text-3d',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\tfont = input.required<NgtsFontInput>();\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tloadedFont = injectFont(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\ttextArgs = computed(() => {\n\t\tconst [text, font, textOptions] = [this.text(), this.loadedFont(), this.textOptions()];\n\t\tif (!font) return null;\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport type NgtTextGeometry = NgtGeometry<TextGeometry & TextGeometryParameters, typeof TextGeometry>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-extrude-geometry\n\t\t * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing\n\t\t */\n\t\t'ngt-text-geometry': NgtTextGeometry;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, computed, effect, untracked, input, viewChild, contentChild, TemplateRef, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, afterNextRender } from '@angular/core';
2
+ import { Directive, computed, effect, untracked, input, viewChild, contentChild, TemplateRef, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import { injectStore, merge, pick, omit, extend, injectBeforeRender, NgtArgs } from 'angular-three';
5
5
  import { assertInjector } from 'ngxtension/assert-injector';
@@ -150,7 +150,7 @@ class NgtsOrthographicCamera {
150
150
  this.fbo = injectFBO(() => ({ width: this.resolution() }));
151
151
  this.texture = pick(this.fbo, 'texture');
152
152
  extend({ OrthographicCamera, Group });
153
- afterNextRender(() => {
153
+ effect(() => {
154
154
  this.cameraRef().nativeElement.updateProjectionMatrix();
155
155
  });
156
156
  effect(() => {
@@ -259,7 +259,7 @@ class NgtsPerspectiveCamera {
259
259
  this.fbo = injectFBO(() => ({ width: this.resolution() }));
260
260
  this.texture = pick(this.fbo, 'texture');
261
261
  extend({ PerspectiveCamera, Group });
262
- afterNextRender(() => {
262
+ effect(() => {
263
263
  this.cameraRef().nativeElement.updateProjectionMatrix();
264
264
  });
265
265
  effect(() => {
@@ -278,6 +278,7 @@ class NgtsPerspectiveCamera {
278
278
  this.store.update({ camera: this.cameraRef().nativeElement });
279
279
  onCleanup(() => this.store.update(() => ({ camera: oldCam })));
280
280
  });
281
+ /**/
281
282
  let count = 0;
282
283
  let oldEnvMap = null;
283
284
  injectBeforeRender(({ gl, scene }) => {