angular-three-soba 2.1.0 → 2.2.1

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 (151) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +139 -139
  2. package/abstractions/lib/edges.d.ts +164 -164
  3. package/abstractions/lib/grid.d.ts +39 -39
  4. package/abstractions/lib/line.d.ts +8 -7
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +46 -46
  8. package/abstractions/lib/text.d.ts +1 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/index.d.ts +9 -1
  13. package/controls/lib/camera-controls.d.ts +1 -1
  14. package/controls/lib/orbit-controls.d.ts +1 -1
  15. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  16. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  18. package/esm2022/abstractions/lib/edges.mjs +30 -34
  19. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  20. package/esm2022/abstractions/lib/grid.mjs +3 -3
  21. package/esm2022/abstractions/lib/helper.mjs +18 -20
  22. package/esm2022/abstractions/lib/line.mjs +25 -28
  23. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  24. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  25. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  26. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  27. package/esm2022/abstractions/lib/text.mjs +11 -16
  28. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  29. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  30. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  31. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  32. package/esm2022/controls/index.mjs +6 -2
  33. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  34. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  35. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  36. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  37. package/esm2022/gizmos/index.mjs +6 -0
  38. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
  39. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
  40. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
  41. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +265 -0
  42. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
  43. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +337 -0
  44. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
  45. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
  46. package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
  47. package/esm2022/loaders/lib/loader.mjs +3 -3
  48. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  49. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  50. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  51. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  52. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  53. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  54. package/esm2022/materials/lib/point-material.mjs +3 -3
  55. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  56. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  57. package/esm2022/misc/lib/decal.mjs +56 -53
  58. package/esm2022/misc/lib/fbo.mjs +10 -10
  59. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  60. package/esm2022/misc/lib/html/html.mjs +3 -3
  61. package/esm2022/misc/lib/intersect.mjs +6 -9
  62. package/esm2022/misc/lib/sampler.mjs +48 -42
  63. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  64. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  65. package/esm2022/performances/lib/detailed.mjs +14 -18
  66. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  67. package/esm2022/performances/lib/points/points.mjs +19 -25
  68. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  69. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  70. package/esm2022/staging/index.mjs +3 -2
  71. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  72. package/esm2022/staging/lib/backdrop.mjs +19 -23
  73. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  74. package/esm2022/staging/lib/bounds.mjs +39 -43
  75. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  76. package/esm2022/staging/lib/caustics.mjs +24 -28
  77. package/esm2022/staging/lib/center.mjs +28 -32
  78. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  79. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  80. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  81. package/esm2022/staging/lib/float.mjs +3 -3
  82. package/esm2022/staging/lib/lightformer.mjs +18 -22
  83. package/esm2022/staging/lib/mask.mjs +8 -12
  84. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  85. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  86. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  87. package/esm2022/staging/lib/render-texture.mjs +19 -20
  88. package/esm2022/staging/lib/sky.mjs +3 -3
  89. package/esm2022/staging/lib/spot-light.mjs +32 -40
  90. package/esm2022/staging/lib/stage.mjs +13 -17
  91. package/esm2022/stats/lib/stats.mjs +21 -27
  92. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +141 -1470
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-gizmos.mjs +2318 -0
  99. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  100. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  101. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  102. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-misc.mjs +194 -195
  104. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  105. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  106. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  107. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  109. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  110. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  111. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  112. package/gizmos/README.md +3 -0
  113. package/gizmos/index.d.ts +5 -0
  114. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
  115. package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
  116. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
  117. package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
  118. package/gizmos/lib/transform-controls.d.ts +50 -0
  119. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  120. package/misc/lib/computed-attribute.d.ts +2 -2
  121. package/misc/lib/decal.d.ts +4 -4
  122. package/misc/lib/html/html-content.d.ts +6 -6
  123. package/misc/lib/html/html.d.ts +1 -1
  124. package/misc/lib/sampler.d.ts +1 -3
  125. package/package.json +14 -8
  126. package/performances/lib/instances/instances.d.ts +3 -3
  127. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  128. package/staging/index.d.ts +2 -1
  129. package/staging/lib/camera-shake.d.ts +0 -1
  130. package/staging/lib/caustics.d.ts +1 -1
  131. package/staging/lib/center.d.ts +2 -2
  132. package/staging/lib/contact-shadows.d.ts +1 -1
  133. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  134. package/staging/lib/environment/inject-environment.d.ts +33 -0
  135. package/staging/lib/lightformer.d.ts +1 -1
  136. package/staging/lib/mask.d.ts +1 -1
  137. package/staging/lib/matcap-texture.d.ts +0 -1
  138. package/staging/lib/normal-texture.d.ts +0 -1
  139. package/staging/lib/render-texture.d.ts +1 -1
  140. package/staging/lib/sky.d.ts +1 -1
  141. package/staging/lib/stage.d.ts +3 -2
  142. package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
  143. package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
  144. package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
  145. package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
  146. package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
  147. package/esm2022/staging/lib/environment.mjs +0 -481
  148. /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
  149. /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
  150. /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
  151. /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
@@ -1,8 +1,7 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { input, inject, computed, untracked, afterNextRender, Directive } from '@angular/core';
3
+ import { input, inject, computed, untracked, effect, Directive } from '@angular/core';
4
4
  import { omit, pick, injectStore, resolveRef, addAfterEffect } from 'angular-three';
5
- import { injectAutoEffect } from 'ngxtension/auto-effect';
6
5
  import { mergeInputs } from 'ngxtension/inject-inputs';
7
6
  import Stats from 'stats-gl';
8
7
 
@@ -17,44 +16,39 @@ class NgtsStats {
17
16
  const parent = pick(this.options, 'parent');
18
17
  const domClass = pick(this.options, 'domClass');
19
18
  const document = inject(DOCUMENT);
20
- const autoEffect = injectAutoEffect();
21
19
  const store = injectStore();
22
20
  const gl = store.select('gl');
23
21
  const stats = computed(() => {
24
22
  const _gl = gl();
25
23
  if (!_gl)
26
24
  return null;
27
- const stats = new Stats({
28
- ...untracked(statsOptions),
29
- });
25
+ const stats = new Stats({ ...untracked(statsOptions) });
30
26
  void stats.init(_gl);
31
27
  return stats;
32
28
  });
33
- afterNextRender(() => {
34
- autoEffect(() => {
35
- const _stats = stats();
36
- if (!_stats)
37
- return;
38
- const [_parent, _domClass] = [resolveRef(parent()), domClass()];
39
- const target = _parent ?? document.body;
40
- target.appendChild(_stats.dom);
41
- const classList = _domClass.split(' ').filter(Boolean);
29
+ effect((onCleanup) => {
30
+ const _stats = stats();
31
+ if (!_stats)
32
+ return;
33
+ const [_parent, _domClass] = [resolveRef(parent()), domClass()];
34
+ const target = _parent ?? document.body;
35
+ target.appendChild(_stats.dom);
36
+ const classList = _domClass.split(' ').filter(Boolean);
37
+ if (classList.length)
38
+ _stats.dom.classList.add(...classList);
39
+ const end = addAfterEffect(() => _stats.update());
40
+ onCleanup(() => {
42
41
  if (classList.length)
43
- _stats.dom.classList.add(...classList);
44
- const end = addAfterEffect(() => _stats.update());
45
- return () => {
46
- if (classList.length)
47
- _stats.dom.classList.remove(...classList);
48
- target.removeChild(_stats.dom);
49
- end();
50
- };
42
+ _stats.dom.classList.remove(...classList);
43
+ target.removeChild(_stats.dom);
44
+ end();
51
45
  });
52
46
  });
53
47
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsStats, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsStats, isStandalone: true, selector: "ngt-canvas[stats]", inputs: { options: { classPropertyName: "options", publicName: "stats", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStats, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsStats, isStandalone: true, selector: "ngt-canvas[stats]", inputs: { options: { classPropertyName: "options", publicName: "stats", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
56
50
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsStats, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStats, decorators: [{
58
52
  type: Directive,
59
53
  args: [{
60
54
  selector: 'ngt-canvas[stats]',
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-stats.mjs","sources":["../../../../libs/soba/stats/src/lib/stats.ts","../../../../libs/soba/stats/src/angular-three-soba-stats.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { afterNextRender, computed, Directive, ElementRef, inject, input, untracked } from '@angular/core';\nimport { addAfterEffect, injectStore, omit, pick, resolveRef } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport Stats from 'stats-gl';\n\nexport type NgtsStatsOptions = Partial<Stats> & {\n\tshowPanel?: number;\n\tdomClass: string;\n\tparent: ElementRef<HTMLElement> | HTMLElement | null | undefined;\n};\n\nconst defaultOptions: NgtsStatsOptions = {\n\tdomClass: '',\n\tparent: null,\n};\n\n@Directive({\n\tselector: 'ngt-canvas[stats]',\n\tstandalone: true,\n})\nexport class NgtsStats {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions), alias: 'stats' });\n\n\tconstructor() {\n\t\tconst statsOptions = omit(this.options, ['parent', 'domClass']);\n\t\tconst parent = pick(this.options, 'parent');\n\t\tconst domClass = pick(this.options, 'domClass');\n\n\t\tconst document = inject(DOCUMENT);\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\n\t\tconst stats = computed(() => {\n\t\t\tconst _gl = gl();\n\t\t\tif (!_gl) return null;\n\n\t\t\tconst stats = new Stats({\n\t\t\t\t...untracked(statsOptions),\n\t\t\t});\n\t\t\tvoid stats.init(_gl);\n\t\t\treturn stats;\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst _stats = stats();\n\t\t\t\tif (!_stats) return;\n\n\t\t\t\tconst [_parent, _domClass] = [resolveRef(parent()), domClass()];\n\t\t\t\tconst target = _parent ?? document.body;\n\t\t\t\ttarget.appendChild(_stats.dom);\n\t\t\t\tconst classList = _domClass.split(' ').filter(Boolean);\n\t\t\t\tif (classList.length) _stats.dom.classList.add(...classList);\n\t\t\t\tconst end = addAfterEffect(() => _stats.update());\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (classList.length) _stats.dom.classList.remove(...classList);\n\t\t\t\t\ttarget.removeChild(_stats.dom);\n\t\t\t\t\tend();\n\t\t\t\t};\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":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-stats.mjs","sources":["../../../../libs/soba/stats/src/lib/stats.ts","../../../../libs/soba/stats/src/angular-three-soba-stats.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { addAfterEffect, injectStore, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport Stats from 'stats-gl';\n\nexport type NgtsStatsOptions = Partial<Stats> & {\n\tshowPanel?: number;\n\tdomClass: string;\n\tparent: ElementRef<HTMLElement> | HTMLElement | null | undefined;\n};\n\nconst defaultOptions: NgtsStatsOptions = {\n\tdomClass: '',\n\tparent: null,\n};\n\n@Directive({\n\tselector: 'ngt-canvas[stats]',\n\tstandalone: true,\n})\nexport class NgtsStats {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions), alias: 'stats' });\n\n\tconstructor() {\n\t\tconst statsOptions = omit(this.options, ['parent', 'domClass']);\n\t\tconst parent = pick(this.options, 'parent');\n\t\tconst domClass = pick(this.options, 'domClass');\n\n\t\tconst document = inject(DOCUMENT);\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\n\t\tconst stats = computed(() => {\n\t\t\tconst _gl = gl();\n\t\t\tif (!_gl) return null;\n\n\t\t\tconst stats = new Stats({ ...untracked(statsOptions) });\n\t\t\tvoid stats.init(_gl);\n\t\t\treturn stats;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _stats = stats();\n\t\t\tif (!_stats) return;\n\n\t\t\tconst [_parent, _domClass] = [resolveRef(parent()), domClass()];\n\t\t\tconst target = _parent ?? document.body;\n\t\t\ttarget.appendChild(_stats.dom);\n\t\t\tconst classList = _domClass.split(' ').filter(Boolean);\n\t\t\tif (classList.length) _stats.dom.classList.add(...classList);\n\t\t\tconst end = addAfterEffect(() => _stats.update());\n\n\t\t\tonCleanup(() => {\n\t\t\t\tif (classList.length) _stats.dom.classList.remove(...classList);\n\t\t\t\ttarget.removeChild(_stats.dom);\n\t\t\t\tend();\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":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ # angular-three-soba/gizmos
2
+
3
+ Secondary entry point of `angular-three-soba`. It can be used by importing from `angular-three-soba/gizmos`.
@@ -0,0 +1,5 @@
1
+ export * from './lib/gizmo-helper/gizmo-helper';
2
+ export { NgtsGizmoViewcube, NgtsGizmoViewcubeOptions } from './lib/gizmo-helper/gizmo-viewcube';
3
+ export { NgtsGizmoViewport, NgtsGizmoViewportOptions } from './lib/gizmo-helper/gizmo-viewport';
4
+ export * from './lib/pivot-controls/pivot-controls';
5
+ export * from './lib/transform-controls';
@@ -0,0 +1,45 @@
1
+ import { Signal, TemplateRef } from '@angular/core';
2
+ import { Object3D, Scene, Vector3 } from 'three';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NgtsGizmoHelperContent {
5
+ static ngTemplateContextGuard(_: NgtsGizmoHelperContent, ctx: unknown): ctx is {
6
+ container: Object3D;
7
+ };
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsGizmoHelperContent, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsGizmoHelperContent, "ng-template[gizmoHelperContent]", never, {}, {}, never, never, true, never>;
10
+ }
11
+ export interface NgtsGizmoHelperOptions {
12
+ alignment: 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left' | 'bottom-center' | 'center-right' | 'center-left' | 'center-center' | 'top-center';
13
+ margin: [number, number];
14
+ renderPriority: number;
15
+ autoClear?: boolean;
16
+ }
17
+ export declare class NgtsGizmoHelper {
18
+ options: import("@angular/core").InputSignalWithTransform<NgtsGizmoHelperOptions, "" | Partial<NgtsGizmoHelperOptions>>;
19
+ update: import("@angular/core").OutputEmitterRef<void>;
20
+ protected renderPriority: Signal<number>;
21
+ protected margin: Signal<[number, number]>;
22
+ protected alignment: Signal<"top-left" | "top-right" | "bottom-right" | "bottom-left" | "bottom-center" | "center-right" | "center-left" | "center-center" | "top-center">;
23
+ protected scene: Scene;
24
+ protected content: Signal<TemplateRef<any>>;
25
+ private gizmoRef;
26
+ private virtualCameraRef;
27
+ private store;
28
+ private size;
29
+ private mainCamera;
30
+ private defaultControls;
31
+ private invalidate;
32
+ protected x: Signal<number>;
33
+ protected y: Signal<number>;
34
+ private animating;
35
+ private radius;
36
+ private focusPoint;
37
+ private defaultUp;
38
+ constructor();
39
+ tweenCamera(direction: Vector3): void;
40
+ private updateDefaultUpEffect;
41
+ private isOrbitControls;
42
+ private isCameraControls;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsGizmoHelper, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsGizmoHelper, "ngts-gizmo-helper", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "update": "update"; }, ["content"], never, true, never>;
45
+ }
@@ -0,0 +1,74 @@
1
+ import { NgtThreeEvent } from 'angular-three';
2
+ import { CanvasTexture, Vector3 } from 'three';
3
+ import * as i0 from "@angular/core";
4
+ type XYZ = [number, number, number];
5
+ interface CommonOptions {
6
+ font: string;
7
+ opacity: number;
8
+ color: string;
9
+ hoverColor: string;
10
+ textColor: string;
11
+ strokeColor: string;
12
+ faces: string[];
13
+ }
14
+ export declare class FaceMaterial {
15
+ hover: import("@angular/core").InputSignal<boolean>;
16
+ index: import("@angular/core").InputSignal<number>;
17
+ options: import("@angular/core").InputSignalWithTransform<CommonOptions, "" | Partial<CommonOptions>>;
18
+ private faces;
19
+ private font;
20
+ private color;
21
+ private textColor;
22
+ private strokeColor;
23
+ private hoverColor;
24
+ private document;
25
+ private store;
26
+ private gl;
27
+ protected opacity: import("@angular/core").Signal<number>;
28
+ protected materialColor: import("@angular/core").Signal<string>;
29
+ protected texture: import("@angular/core").Signal<CanvasTexture>;
30
+ constructor();
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<FaceMaterial, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<FaceMaterial, "viewcube-face-material", never, { "hover": { "alias": "hover"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
33
+ }
34
+ export declare class FaceCube {
35
+ options: import("@angular/core").InputSignal<Partial<CommonOptions>>;
36
+ onClick: import("@angular/core").InputSignal<((event: NgtThreeEvent<MouseEvent>) => void) | undefined>;
37
+ private gizmoHelper;
38
+ protected hover: import("@angular/core").WritableSignal<number>;
39
+ protected count: unknown[];
40
+ constructor();
41
+ internalOnClick(event: NgtThreeEvent<MouseEvent>): void;
42
+ protected readonly Math: Math;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<FaceCube, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<FaceCube, "viewcube-face-cube", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
45
+ }
46
+ export declare class EdgeCube {
47
+ dimensions: import("@angular/core").InputSignal<XYZ>;
48
+ position: import("@angular/core").InputSignal<Vector3>;
49
+ hoverColor: import("@angular/core").InputSignalWithTransform<string, string | undefined>;
50
+ onClick: import("@angular/core").InputSignal<((event: NgtThreeEvent<MouseEvent>) => void) | undefined>;
51
+ private gizmoHelper;
52
+ protected hover: import("@angular/core").WritableSignal<boolean>;
53
+ protected color: import("@angular/core").Signal<string>;
54
+ constructor();
55
+ internalOnClick(event: NgtThreeEvent<MouseEvent>): void;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<EdgeCube, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<EdgeCube, "viewcube-edge-cube", never, { "dimensions": { "alias": "dimensions"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": true; "isSignal": true; }; "hoverColor": { "alias": "hoverColor"; "required": false; "isSignal": true; }; "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
58
+ }
59
+ export type NgtsGizmoViewcubeOptions = Partial<CommonOptions>;
60
+ export declare class NgtsGizmoViewcube {
61
+ options: import("@angular/core").InputSignal<Partial<CommonOptions>>;
62
+ click: import("@angular/core").OutputEmitterRef<NgtThreeEvent<MouseEvent>>;
63
+ protected hoverColor: import("@angular/core").Signal<string | undefined>;
64
+ protected corners: Vector3[];
65
+ protected cornerDimensions: XYZ;
66
+ protected edges: Vector3[];
67
+ protected edgeDimensions: XYZ[];
68
+ constructor();
69
+ protected get onClick(): ((value: NgtThreeEvent<MouseEvent>) => void) | undefined;
70
+ private makePositionVector;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsGizmoViewcube, never>;
72
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsGizmoViewcube, "ngts-gizmo-viewcube", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "click": "click"; }, never, never, true, never>;
73
+ }
74
+ export {};
@@ -0,0 +1,64 @@
1
+ import { NgtGroup, NgtThreeEvent, NgtVector3 } from 'angular-three';
2
+ import { CanvasTexture, ColorRepresentation } from 'three';
3
+ import * as i0 from "@angular/core";
4
+ export declare class Axis {
5
+ scale: import("@angular/core").InputSignalWithTransform<number[], [number, number, number] | undefined>;
6
+ color: import("@angular/core").InputSignal<ColorRepresentation | undefined>;
7
+ rotation: import("@angular/core").InputSignal<NgtVector3>;
8
+ constructor();
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<Axis, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<Axis, "viewport-axis", never, { "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11
+ }
12
+ export declare class AxisHead {
13
+ arcStyle: import("@angular/core").InputSignal<string>;
14
+ position: import("@angular/core").InputSignal<NgtVector3>;
15
+ label: import("@angular/core").InputSignal<string | undefined>;
16
+ labelColor: import("@angular/core").InputSignal<string>;
17
+ axisHeadScale: import("@angular/core").InputSignal<number>;
18
+ disabled: import("@angular/core").InputSignal<boolean>;
19
+ font: import("@angular/core").InputSignal<string>;
20
+ onClick: import("@angular/core").InputSignal<((event: NgtThreeEvent<MouseEvent>) => void) | undefined>;
21
+ private document;
22
+ private gizmoHelper;
23
+ private store;
24
+ private gl;
25
+ protected texture: import("@angular/core").Signal<CanvasTexture>;
26
+ protected active: import("@angular/core").WritableSignal<boolean>;
27
+ protected scale: import("@angular/core").Signal<number>;
28
+ constructor();
29
+ onPointerOver(event: NgtThreeEvent<PointerEvent>): void;
30
+ onPointerOut(event: NgtThreeEvent<PointerEvent>): void;
31
+ onPointerDown(event: NgtThreeEvent<PointerEvent>): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<AxisHead, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<AxisHead, "viewport-axis-head", never, { "arcStyle": { "alias": "arcStyle"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelColor": { "alias": "labelColor"; "required": false; "isSignal": true; }; "axisHeadScale": { "alias": "axisHeadScale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "font": { "alias": "font"; "required": false; "isSignal": true; }; "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
34
+ }
35
+ export interface NgtsGizmoViewportOptions extends Partial<NgtGroup> {
36
+ axisColors: [string, string, string];
37
+ axisScale?: [number, number, number];
38
+ labels: [string, string, string];
39
+ axisHeadScale: number;
40
+ labelColor: string;
41
+ hideNegativeAxes: boolean;
42
+ hideAxisHeads: boolean;
43
+ disabled: boolean;
44
+ font: string;
45
+ }
46
+ export declare class NgtsGizmoViewport {
47
+ protected readonly Math: Math;
48
+ options: import("@angular/core").InputSignalWithTransform<NgtsGizmoViewportOptions, "" | Partial<NgtsGizmoViewportOptions>>;
49
+ parameters: import("@angular/core").Signal<Omit<NgtsGizmoViewportOptions, "axisColors" | "font" | "axisScale" | "labels" | "axisHeadScale" | "labelColor" | "hideNegativeAxes" | "hideAxisHeads" | "disabled">>;
50
+ click: import("@angular/core").OutputEmitterRef<NgtThreeEvent<MouseEvent>>;
51
+ protected axisColors: import("@angular/core").Signal<[string, string, string]>;
52
+ protected axisScale: import("@angular/core").Signal<[number, number, number] | undefined>;
53
+ protected hideAxisHeads: import("@angular/core").Signal<boolean>;
54
+ protected hideNegativeAxes: import("@angular/core").Signal<boolean>;
55
+ protected labels: import("@angular/core").Signal<[string, string, string]>;
56
+ protected axisHeadScale: import("@angular/core").Signal<number>;
57
+ protected labelColor: import("@angular/core").Signal<string>;
58
+ protected disabled: import("@angular/core").Signal<boolean>;
59
+ protected font: import("@angular/core").Signal<string>;
60
+ constructor();
61
+ protected get onClick(): ((value: NgtThreeEvent<MouseEvent>) => void) | undefined;
62
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsGizmoViewport, never>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsGizmoViewport, "ngts-gizmo-viewport", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "click": "click"; }, never, never, true, never>;
64
+ }
@@ -60,7 +60,7 @@ export interface NgtsPivotControlsOptions {
60
60
  }
61
61
  export declare class NgtsPivotControls {
62
62
  options: import("@angular/core").InputSignalWithTransform<NgtsPivotControlsOptions, "" | Partial<NgtsPivotControlsOptions>>;
63
- parameters: import("@angular/core").Signal<Omit<NgtsPivotControlsOptions, "enabled" | "hoveredColor" | "scale" | "lineWidth" | "fixed" | "offset" | "rotation" | "matrix" | "anchor" | "autoTransform" | "activeAxes" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "translationLimits" | "rotationLimits" | "scaleLimits" | "axisColors" | "annotations" | "annotationsClass" | "depthTest" | "opacity" | "visible" | "userData">>;
63
+ parameters: import("@angular/core").Signal<Omit<NgtsPivotControlsOptions, "hoveredColor" | "enabled" | "scale" | "lineWidth" | "fixed" | "offset" | "rotation" | "matrix" | "anchor" | "autoTransform" | "activeAxes" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "translationLimits" | "rotationLimits" | "scaleLimits" | "axisColors" | "annotations" | "annotationsClass" | "depthTest" | "opacity" | "visible" | "userData">>;
64
64
  dragStarted: import("@angular/core").OutputEmitterRef<OnDragStartParameters>;
65
65
  dragEnded: import("@angular/core").OutputEmitterRef<void>;
66
66
  dragged: import("@angular/core").OutputEmitterRef<OnDragParameters>;
@@ -0,0 +1,50 @@
1
+ import { ElementRef, Signal } from '@angular/core';
2
+ import { NgtGroup, NgtObject3DNode } from 'angular-three';
3
+ import { Camera, Object3D, Event as ThreeEvent } from 'three';
4
+ import { TransformControls } from 'three-stdlib';
5
+ import * as i0 from "@angular/core";
6
+ export type NgtsTransformControlsObject = NgtObject3DNode<TransformControls, typeof TransformControls>;
7
+ export type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> & Partial<NgtGroup> & {
8
+ enabled?: boolean;
9
+ axis?: string | null;
10
+ domElement?: HTMLElement;
11
+ mode?: 'translate' | 'rotate' | 'scale';
12
+ translationSnap?: number | null;
13
+ rotationSnap?: number | null;
14
+ scaleSnap?: number | null;
15
+ space?: 'world' | 'local';
16
+ size?: number;
17
+ showX?: boolean;
18
+ showY?: boolean;
19
+ showZ?: boolean;
20
+ camera?: Camera;
21
+ makeDefault?: boolean;
22
+ };
23
+ export declare class NgtsTransformControls {
24
+ object: import("@angular/core").InputSignal<Object3D<import("three").Object3DEventMap> | ElementRef<Object3D<import("three").Object3DEventMap>> | null | undefined>;
25
+ options: import("@angular/core").InputSignal<Partial<NgtsTransformControlsOptions>>;
26
+ parameters: Signal<Omit<Partial<NgtsTransformControlsOptions>, "enabled" | "camera" | "size" | "axis" | "domElement" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ" | "makeDefault">>;
27
+ protected controlsOptions: Signal<Pick<Partial<NgtsTransformControlsOptions>, "enabled" | "size" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ">>;
28
+ private camera;
29
+ private domElement;
30
+ private makeDefault;
31
+ change: import("@angular/core").OutputEmitterRef<ThreeEvent<string, unknown>>;
32
+ mouseDown: import("@angular/core").OutputEmitterRef<ThreeEvent<string, unknown>>;
33
+ mouseUp: import("@angular/core").OutputEmitterRef<ThreeEvent<string, unknown>>;
34
+ objectChange: import("@angular/core").OutputEmitterRef<ThreeEvent<string, unknown>>;
35
+ private groupRef;
36
+ private store;
37
+ private glDomElement;
38
+ private defaultCamera;
39
+ private events;
40
+ private defaultControls;
41
+ private invalidate;
42
+ controls: Signal<TransformControls<Camera>>;
43
+ constructor();
44
+ private attachControlsEffect;
45
+ private disableDefaultControlsEffect;
46
+ private setupControlsEventsEffect;
47
+ private updateDefaultControlsEffect;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsTransformControls, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsTransformControls, "ngts-transform-controls", never, { "object": { "alias": "object"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "change": "change"; "mouseDown": "mouseDown"; "mouseUp": "mouseUp"; "objectChange": "objectChange"; }, never, ["*"], true, never>;
50
+ }
@@ -29,7 +29,7 @@ export type NgtsMeshTransmissionMaterialOptions = Partial<NgtMeshPhysicalMateria
29
29
  export declare class NgtsMeshTransmissionMaterial {
30
30
  attach: import("@angular/core").InputSignal<NgtAttachable>;
31
31
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshTransmissionMaterialOptions, "" | Partial<NgtsMeshTransmissionMaterialOptions>>;
32
- parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "side" | "thickness" | "anisotropy" | "transmission" | "resolution" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "backsideResolution" | "background">>;
32
+ parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "side" | "resolution" | "thickness" | "anisotropy" | "transmission" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "backsideResolution" | "background">>;
33
33
  private resolution;
34
34
  private backsideResolution;
35
35
  private samples;
@@ -6,8 +6,6 @@ export declare class NgtsComputedAttribute {
6
6
  name: import("@angular/core").InputSignal<string>;
7
7
  options: import("@angular/core").InputSignal<Partial<{
8
8
  name?: string | undefined;
9
- clone?: (() => BufferAttribute) | undefined;
10
- toJSON?: (() => import("three").BufferAttributeJSON) | undefined;
11
9
  array?: import("three").TypedArray | undefined;
12
10
  itemSize?: number | undefined;
13
11
  usage?: import("three").Usage | undefined;
@@ -30,6 +28,7 @@ export declare class NgtsComputedAttribute {
30
28
  setUsage?: ((usage: import("three").Usage) => BufferAttribute) | undefined;
31
29
  addUpdateRange?: ((start: number, count: number) => void) | undefined;
32
30
  clearUpdateRanges?: (() => void) | undefined;
31
+ clone?: (() => BufferAttribute) | undefined;
33
32
  copy?: ((source: BufferAttribute) => BufferAttribute) | undefined;
34
33
  copyAt?: ((index1: number, attribute: BufferAttribute, index2: number) => BufferAttribute) | undefined;
35
34
  copyArray?: ((array: ArrayLike<number>) => BufferAttribute) | undefined;
@@ -51,6 +50,7 @@ export declare class NgtsComputedAttribute {
51
50
  setXY?: ((index: number, x: number, y: number) => BufferAttribute) | undefined;
52
51
  setXYZ?: ((index: number, x: number, y: number, z: number) => BufferAttribute) | undefined;
53
52
  setXYZW?: ((index: number, x: number, y: number, z: number, w: number) => BufferAttribute) | undefined;
53
+ toJSON?: (() => import("three").BufferAttributeJSON) | undefined;
54
54
  attach: string | string[] | import("angular-three").NgtAttachFunction;
55
55
  addEventListener: <TEventKey extends keyof import("angular-three").NgtNodeEventMap<BufferAttribute>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<BufferAttribute, typeof BufferAttribute>, ev: import("angular-three").NgtNodeEventMap<BufferAttribute>[TEventKey]) => any) => void;
56
56
  removeEventListener: <TEventKey extends keyof import("angular-three").NgtNodeEventMap<BufferAttribute>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<BufferAttribute, typeof BufferAttribute>, ev: import("angular-three").NgtNodeEventMap<BufferAttribute>[TEventKey]) => any) => void;
@@ -14,10 +14,10 @@ export declare class NgtsDecal {
14
14
  parameters: import("@angular/core").Signal<Omit<NgtsDecalOptions, "position" | "scale" | "rotation" | "debug" | "map" | "depthTest" | "polygonOffsetFactor">>;
15
15
  meshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>;
16
16
  helperRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
17
- map: import("@angular/core").Signal<Texture | null | undefined>;
18
- depthTest: import("@angular/core").Signal<boolean>;
19
- polygonOffsetFactor: import("@angular/core").Signal<number>;
20
- debug: import("@angular/core").Signal<boolean>;
17
+ protected map: import("@angular/core").Signal<Texture | null | undefined>;
18
+ protected depthTest: import("@angular/core").Signal<boolean>;
19
+ protected polygonOffsetFactor: import("@angular/core").Signal<number>;
20
+ protected debug: import("@angular/core").Signal<boolean>;
21
21
  private position;
22
22
  private rotation;
23
23
  private scale;
@@ -29,16 +29,16 @@ export declare class NgtsHTMLContent extends NgtHTML {
29
29
  private events;
30
30
  private camera;
31
31
  private scene;
32
- size: import("@angular/core").Signal<import("angular-three").NgtSize>;
32
+ protected size: import("@angular/core").Signal<import("angular-three").NgtSize>;
33
33
  private parent;
34
34
  private zIndexRange;
35
35
  private calculatePosition;
36
36
  private prepend;
37
- center: import("@angular/core").Signal<boolean>;
38
- fullscreen: import("@angular/core").Signal<boolean>;
39
- pointerEvents: import("@angular/core").Signal<PointerEventsProperties>;
40
- containerClass: import("@angular/core").Signal<string>;
41
- containerStyle: import("@angular/core").Signal<Partial<CSSStyleDeclaration>>;
37
+ protected center: import("@angular/core").Signal<boolean>;
38
+ protected fullscreen: import("@angular/core").Signal<boolean>;
39
+ protected pointerEvents: import("@angular/core").Signal<PointerEventsProperties>;
40
+ protected containerClass: import("@angular/core").Signal<string>;
41
+ protected containerStyle: import("@angular/core").Signal<Partial<CSSStyleDeclaration>>;
42
42
  private target;
43
43
  constructor();
44
44
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsHTMLContent, never>;
@@ -14,7 +14,7 @@ export declare class NgtsHTML {
14
14
  groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
15
15
  occlusionMeshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
16
16
  occlusionGeometryRef: import("@angular/core").Signal<ElementRef<PlaneGeometry> | undefined>;
17
- occlude: import("@angular/core").Signal<boolean | "raycast" | Object3D<import("three").Object3DEventMap>[] | ElementRef<Object3D<import("three").Object3DEventMap>>[] | "blending">;
17
+ occlude: import("@angular/core").Signal<boolean | "raycast" | ElementRef<Object3D<import("three").Object3DEventMap>>[] | Object3D<import("three").Object3DEventMap>[] | "blending">;
18
18
  transform: import("@angular/core").Signal<boolean>;
19
19
  castShadow: import("@angular/core").Signal<boolean>;
20
20
  receiveShadow: import("@angular/core").Signal<boolean>;
@@ -63,9 +63,7 @@ export declare class NgtsSampler {
63
63
  instances: import("@angular/core").InputSignal<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap> | ElementRef<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap>> | null>;
64
64
  options: import("@angular/core").InputSignalWithTransform<NgtsSamplerOptions, "" | Partial<NgtsSamplerOptions>>;
65
65
  parameters: import("@angular/core").Signal<Omit<NgtsSamplerOptions, "count" | "transform" | "weight">>;
66
- groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
67
- private meshToSample;
68
- private instancedToSample;
66
+ groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>> | undefined>;
69
67
  constructor();
70
68
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsSampler, never>;
71
69
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsSampler, "ngts-sampler", never, { "mesh": { "alias": "mesh"; "required": false; "isSignal": true; }; "instances": { "alias": "instances"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -69,18 +69,24 @@
69
69
  "esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
70
70
  "default": "./fesm2022/angular-three-soba-cameras.mjs"
71
71
  },
72
- "./materials": {
73
- "types": "./materials/index.d.ts",
74
- "esm2022": "./esm2022/materials/angular-three-soba-materials.mjs",
75
- "esm": "./esm2022/materials/angular-three-soba-materials.mjs",
76
- "default": "./fesm2022/angular-three-soba-materials.mjs"
77
- },
78
72
  "./controls": {
79
73
  "types": "./controls/index.d.ts",
80
74
  "esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
81
75
  "esm": "./esm2022/controls/angular-three-soba-controls.mjs",
82
76
  "default": "./fesm2022/angular-three-soba-controls.mjs"
83
77
  },
78
+ "./gizmos": {
79
+ "types": "./gizmos/index.d.ts",
80
+ "esm2022": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
81
+ "esm": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
82
+ "default": "./fesm2022/angular-three-soba-gizmos.mjs"
83
+ },
84
+ "./materials": {
85
+ "types": "./materials/index.d.ts",
86
+ "esm2022": "./esm2022/materials/angular-three-soba-materials.mjs",
87
+ "esm": "./esm2022/materials/angular-three-soba-materials.mjs",
88
+ "default": "./fesm2022/angular-three-soba-materials.mjs"
89
+ },
84
90
  "./performances": {
85
91
  "types": "./performances/index.d.ts",
86
92
  "esm2022": "./esm2022/performances/angular-three-soba-performances.mjs",
@@ -159,4 +165,4 @@
159
165
  ],
160
166
  "module": "fesm2022/angular-three-soba.mjs",
161
167
  "typings": "index.d.ts"
162
- }
168
+ }
@@ -107,10 +107,10 @@ export interface NgtsInstancesOptions extends Partial<NgtInstancedMesh> {
107
107
  export declare class NgtsInstances {
108
108
  protected readonly DynamicDrawUsage: 35048;
109
109
  options: import("@angular/core").InputSignalWithTransform<NgtsInstancesOptions, "" | Partial<NgtsInstancesOptions>>;
110
- parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "frames" | "limit" | "range">>;
110
+ protected parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "frames" | "limit" | "range">>;
111
111
  instancedMeshRef: import("@angular/core").Signal<ElementRef<InstancedMesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap>>>;
112
- limit: import("@angular/core").Signal<number>;
113
- buffers: import("@angular/core").Signal<{
112
+ private limit;
113
+ protected buffers: import("@angular/core").Signal<{
114
114
  matrices: Float32Array;
115
115
  colors: Float32Array;
116
116
  }>;
@@ -1,11 +1,8 @@
1
1
  import * as THREE from 'three';
2
- declare module 'three-mesh-bvh' {
3
- const shaderIntersectFunction: string;
4
- }
5
2
  export declare const MeshRefractionMaterial: (new (parameters?: (THREE.ShaderMaterialParameters & Partial<{
6
- [name: string]: number | boolean | any[] | THREE.CubeTexture | THREE.Texture | Int32Array | Float32Array | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
3
+ [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture | THREE.Texture | Int32Array | Float32Array | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
7
4
  }>) | undefined) => THREE.ShaderMaterial & {
8
- [name: string]: number | boolean | any[] | THREE.CubeTexture | THREE.Texture | Int32Array | Float32Array | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
5
+ [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture | THREE.Texture | Int32Array | Float32Array | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
9
6
  }) & {
10
7
  key: string;
11
8
  };
@@ -6,7 +6,8 @@ export * from './lib/camera-shake';
6
6
  export * from './lib/caustics';
7
7
  export * from './lib/center';
8
8
  export * from './lib/contact-shadows';
9
- export * from './lib/environment';
9
+ export * from './lib/environment/environment';
10
+ export * from './lib/environment/inject-environment';
10
11
  export * from './lib/float';
11
12
  export * from './lib/lightformer';
12
13
  export * from './lib/mask';
@@ -12,7 +12,6 @@ export interface NgtsCameraShakeOptions {
12
12
  }
13
13
  export declare class NgtsCameraShake {
14
14
  options: import("@angular/core").InputSignalWithTransform<NgtsCameraShakeOptions, "" | Partial<NgtsCameraShakeOptions>>;
15
- private autoEffect;
16
15
  private store;
17
16
  private camera;
18
17
  private defaultControls;
@@ -32,7 +32,7 @@ export declare class NgtsCaustics {
32
32
  protected readonly OneFactor: 201;
33
33
  protected readonly SrcAlphaFactor: 204;
34
34
  options: import("@angular/core").InputSignalWithTransform<NgtsCausticsOptions, "" | Partial<NgtsCausticsOptions>>;
35
- parameters: import("@angular/core").Signal<Omit<NgtsCausticsOptions, "frames" | "color" | "resolution" | "debug" | "causticsOnly" | "backside" | "ior" | "backsideIOR" | "worldRadius" | "intensity" | "lightSource">>;
35
+ parameters: import("@angular/core").Signal<Omit<NgtsCausticsOptions, "frames" | "color" | "resolution" | "intensity" | "debug" | "causticsOnly" | "backside" | "ior" | "backsideIOR" | "worldRadius" | "lightSource">>;
36
36
  debug: import("@angular/core").Signal<boolean>;
37
37
  color: import("@angular/core").Signal<ColorRepresentation>;
38
38
  private resolution;
@@ -293,7 +293,7 @@ export declare class NgtsCenter {
293
293
  layers: import("angular-three").NgtLayers;
294
294
  dispose: (() => void) | null;
295
295
  raycast: Object3D["raycast"] | null;
296
- }> & NgtsCenterOptions, "disable" | "top" | "right" | "bottom" | "left" | "front" | "back" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
296
+ }> & NgtsCenterOptions, "top" | "right" | "bottom" | "left" | "front" | "back" | "disable" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
297
297
  centered: import("@angular/core").OutputEmitterRef<NgtsCenterState>;
298
298
  groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
299
299
  private outerRef;
@@ -383,7 +383,7 @@ export declare class NgtsCenter {
383
383
  layers: import("angular-three").NgtLayers;
384
384
  dispose: (() => void) | null;
385
385
  raycast: Object3D["raycast"] | null;
386
- }> & NgtsCenterOptions, "disable" | "top" | "right" | "bottom" | "left" | "front" | "back" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
386
+ }> & NgtsCenterOptions, "top" | "right" | "bottom" | "left" | "front" | "back" | "disable" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
387
387
  constructor();
388
388
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCenter, never>;
389
389
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsCenter, "ngts-center", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "centered": "centered"; }, never, ["*"], true, never>;
@@ -19,7 +19,7 @@ export interface NgtsContactShadowsOptions extends Partial<Omit<NgtGroup, 'scale
19
19
  export declare class NgtsContactShadows {
20
20
  Math: Math;
21
21
  options: import("@angular/core").InputSignalWithTransform<NgtsContactShadowsOptions, "" | Partial<NgtsContactShadowsOptions>>;
22
- parameters: import("@angular/core").Signal<Omit<NgtsContactShadowsOptions, "scale" | "renderOrder" | "frames" | "opacity" | "color" | "resolution" | "depthWrite" | "near" | "far" | "width" | "height" | "blur" | "smooth">>;
22
+ parameters: import("@angular/core").Signal<Omit<NgtsContactShadowsOptions, "scale" | "renderOrder" | "frames" | "opacity" | "color" | "resolution" | "width" | "height" | "near" | "far" | "blur" | "smooth" | "depthWrite">>;
23
23
  contactShadowsRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
24
24
  shadowsCameraRef: import("@angular/core").Signal<ElementRef<OrthographicCamera> | undefined>;
25
25
  private store;