angular-three-soba 2.14.0 → 3.0.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 (179) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +117 -117
  2. package/abstractions/lib/edges.d.ts +126 -126
  3. package/abstractions/lib/grid.d.ts +15 -15
  4. package/abstractions/lib/line.d.ts +1 -1
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +1 -1
  7. package/abstractions/lib/text-3d.d.ts +22 -22
  8. package/abstractions/lib/text.d.ts +1 -1
  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/index.d.ts +0 -9
  13. package/controls/lib/camera-controls.d.ts +1 -1
  14. package/controls/lib/orbit-controls.d.ts +1 -1
  15. package/fesm2022/angular-three-soba-abstractions.mjs +41 -52
  16. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-cameras.mjs +12 -15
  18. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-controls.mjs +16 -24
  20. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  21. package/fesm2022/angular-three-soba-gizmos.mjs +59 -60
  22. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  23. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  24. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  25. package/fesm2022/angular-three-soba-materials.mjs +27 -35
  26. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  27. package/fesm2022/angular-three-soba-misc.mjs +27 -29
  28. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  29. package/fesm2022/angular-three-soba-performances.mjs +31 -34
  30. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  31. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  32. package/fesm2022/angular-three-soba-staging.mjs +91 -105
  33. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  34. package/fesm2022/angular-three-soba-stats.mjs +3 -3
  35. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  36. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  37. package/gizmos/lib/pivot-controls/axis-arrow.d.ts +1 -1
  38. package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
  39. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  40. package/gizmos/lib/pivot-controls/plane-slider.d.ts +1 -1
  41. package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +1 -1
  42. package/gizmos/lib/transform-controls.d.ts +2 -2
  43. package/materials/lib/custom-shader-material.d.ts +2 -2
  44. package/materials/lib/mesh-portal-material.d.ts +9 -9
  45. package/materials/lib/mesh-refraction-material.d.ts +2 -2
  46. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  47. package/misc/lib/computed-attribute.d.ts +6 -6
  48. package/misc/lib/decal.d.ts +1 -1
  49. package/misc/lib/html/html.d.ts +2 -2
  50. package/misc/lib/sampler.d.ts +1 -1
  51. package/package.json +11 -37
  52. package/performances/lib/instances/instances.d.ts +5 -5
  53. package/performances/lib/points/points.d.ts +10 -10
  54. package/performances/lib/segments/segments.d.ts +4 -4
  55. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  56. package/staging/lib/caustics.d.ts +1 -1
  57. package/staging/lib/center.d.ts +2 -2
  58. package/staging/lib/contact-shadows.d.ts +1 -1
  59. package/staging/lib/lightformer.d.ts +1 -1
  60. package/staging/lib/mask.d.ts +1 -1
  61. package/staging/lib/render-texture.d.ts +1 -1
  62. package/staging/lib/spot-light.d.ts +2 -2
  63. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +0 -5
  64. package/esm2022/abstractions/index.mjs +0 -14
  65. package/esm2022/abstractions/lib/billboard.mjs +0 -69
  66. package/esm2022/abstractions/lib/catmull-rom-line.mjs +0 -76
  67. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +0 -51
  68. package/esm2022/abstractions/lib/edges.mjs +0 -66
  69. package/esm2022/abstractions/lib/gradient-texture.mjs +0 -91
  70. package/esm2022/abstractions/lib/grid.mjs +0 -103
  71. package/esm2022/abstractions/lib/helper.mjs +0 -74
  72. package/esm2022/abstractions/lib/line.mjs +0 -123
  73. package/esm2022/abstractions/lib/prism-geometry.mjs +0 -46
  74. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +0 -73
  75. package/esm2022/abstractions/lib/rounded-box.mjs +0 -131
  76. package/esm2022/abstractions/lib/text-3d.mjs +0 -100
  77. package/esm2022/abstractions/lib/text.mjs +0 -86
  78. package/esm2022/angular-three-soba.mjs +0 -5
  79. package/esm2022/cameras/angular-three-soba-cameras.mjs +0 -5
  80. package/esm2022/cameras/index.mjs +0 -5
  81. package/esm2022/cameras/lib/camera-content.mjs +0 -14
  82. package/esm2022/cameras/lib/cube-camera.mjs +0 -102
  83. package/esm2022/cameras/lib/orthographic-camera.mjs +0 -131
  84. package/esm2022/cameras/lib/perspective-camera.mjs +0 -105
  85. package/esm2022/controls/angular-three-soba-controls.mjs +0 -5
  86. package/esm2022/controls/index.mjs +0 -9
  87. package/esm2022/controls/lib/camera-controls.mjs +0 -126
  88. package/esm2022/controls/lib/orbit-controls.mjs +0 -114
  89. package/esm2022/controls/lib/scroll-controls.mjs +0 -261
  90. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  91. package/esm2022/gizmos/index.mjs +0 -6
  92. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +0 -191
  93. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +0 -304
  94. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +0 -348
  95. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +0 -265
  96. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +0 -264
  97. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +0 -349
  98. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +0 -266
  99. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +0 -232
  100. package/esm2022/gizmos/lib/transform-controls.mjs +0 -177
  101. package/esm2022/index.mjs +0 -2
  102. package/esm2022/loaders/angular-three-soba-loaders.mjs +0 -5
  103. package/esm2022/loaders/index.mjs +0 -7
  104. package/esm2022/loaders/lib/fbx-loader.mjs +0 -13
  105. package/esm2022/loaders/lib/font-loader.mjs +0 -49
  106. package/esm2022/loaders/lib/gltf-loader.mjs +0 -51
  107. package/esm2022/loaders/lib/loader.mjs +0 -103
  108. package/esm2022/loaders/lib/progress.mjs +0 -51
  109. package/esm2022/loaders/lib/texture-loader.mjs +0 -32
  110. package/esm2022/materials/angular-three-soba-materials.mjs +0 -5
  111. package/esm2022/materials/index.mjs +0 -9
  112. package/esm2022/materials/lib/custom-shader-material.mjs +0 -67
  113. package/esm2022/materials/lib/mesh-distort-material.mjs +0 -43
  114. package/esm2022/materials/lib/mesh-portal-material.mjs +0 -294
  115. package/esm2022/materials/lib/mesh-reflector-material.mjs +0 -274
  116. package/esm2022/materials/lib/mesh-refraction-material.mjs +0 -140
  117. package/esm2022/materials/lib/mesh-transmission-material.mjs +0 -188
  118. package/esm2022/materials/lib/mesh-wobble-material.mjs +0 -43
  119. package/esm2022/materials/lib/point-material.mjs +0 -34
  120. package/esm2022/misc/angular-three-soba-misc.mjs +0 -5
  121. package/esm2022/misc/index.mjs +0 -15
  122. package/esm2022/misc/lib/animations.mjs +0 -71
  123. package/esm2022/misc/lib/bake-shadows.mjs +0 -24
  124. package/esm2022/misc/lib/computed-attribute.mjs +0 -51
  125. package/esm2022/misc/lib/constants.mjs +0 -5
  126. package/esm2022/misc/lib/decal.mjs +0 -142
  127. package/esm2022/misc/lib/deprecated.mjs +0 -15
  128. package/esm2022/misc/lib/depth-buffer.mjs +0 -35
  129. package/esm2022/misc/lib/fbo.mjs +0 -86
  130. package/esm2022/misc/lib/html/html-content.mjs +0 -322
  131. package/esm2022/misc/lib/html/html.mjs +0 -129
  132. package/esm2022/misc/lib/html/utils.mjs +0 -74
  133. package/esm2022/misc/lib/intersect.mjs +0 -49
  134. package/esm2022/misc/lib/preload.mjs +0 -58
  135. package/esm2022/misc/lib/sampler.mjs +0 -122
  136. package/esm2022/misc/lib/scale-factor.mjs +0 -29
  137. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  138. package/esm2022/performances/index.mjs +0 -7
  139. package/esm2022/performances/lib/adaptive-dpr.mjs +0 -46
  140. package/esm2022/performances/lib/adaptive-events.mjs +0 -24
  141. package/esm2022/performances/lib/detailed.mjs +0 -53
  142. package/esm2022/performances/lib/instances/instances.mjs +0 -177
  143. package/esm2022/performances/lib/instances/position-mesh.mjs +0 -51
  144. package/esm2022/performances/lib/points/points.mjs +0 -272
  145. package/esm2022/performances/lib/points/position-point.mjs +0 -53
  146. package/esm2022/performances/lib/segments/segment-object.mjs +0 -9
  147. package/esm2022/performances/lib/segments/segments.mjs +0 -126
  148. package/esm2022/shaders/angular-three-soba-shaders.mjs +0 -5
  149. package/esm2022/shaders/index.mjs +0 -4
  150. package/esm2022/shaders/lib/grid-material.mjs +0 -81
  151. package/esm2022/shaders/lib/mesh-refraction-material.mjs +0 -163
  152. package/esm2022/shaders/lib/point-material.mjs +0 -24
  153. package/esm2022/staging/angular-three-soba-staging.mjs +0 -5
  154. package/esm2022/staging/index.mjs +0 -21
  155. package/esm2022/staging/lib/accumulative-shadows.mjs +0 -180
  156. package/esm2022/staging/lib/backdrop.mjs +0 -69
  157. package/esm2022/staging/lib/bb-anchor.mjs +0 -58
  158. package/esm2022/staging/lib/bounds.mjs +0 -282
  159. package/esm2022/staging/lib/camera-shake.mjs +0 -65
  160. package/esm2022/staging/lib/caustics.mjs +0 -184
  161. package/esm2022/staging/lib/center.mjs +0 -114
  162. package/esm2022/staging/lib/contact-shadows.mjs +0 -214
  163. package/esm2022/staging/lib/environment/environment.mjs +0 -344
  164. package/esm2022/staging/lib/environment/inject-environment.mjs +0 -184
  165. package/esm2022/staging/lib/float.mjs +0 -70
  166. package/esm2022/staging/lib/lightformer.mjs +0 -103
  167. package/esm2022/staging/lib/mask.mjs +0 -74
  168. package/esm2022/staging/lib/matcap-texture.mjs +0 -79
  169. package/esm2022/staging/lib/normal-texture.mjs +0 -79
  170. package/esm2022/staging/lib/randomized-lights.mjs +0 -100
  171. package/esm2022/staging/lib/render-texture.mjs +0 -202
  172. package/esm2022/staging/lib/sky.mjs +0 -86
  173. package/esm2022/staging/lib/spot-light.mjs +0 -445
  174. package/esm2022/staging/lib/stage.mjs +0 -232
  175. package/esm2022/stats/angular-three-soba-stats.mjs +0 -5
  176. package/esm2022/stats/index.mjs +0 -2
  177. package/esm2022/stats/lib/stats.mjs +0 -57
  178. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +0 -5
  179. package/esm2022/vanilla-exports/index.mjs +0 -3
@@ -1,103 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
2
- import { extend, injectBeforeRender, NgtArgs, omit, pick } from 'angular-three';
3
- import { GridMaterial } from 'angular-three-soba/shaders';
4
- import { mergeInputs } from 'ngxtension/inject-inputs';
5
- import { BackSide, Mesh, Plane, PlaneGeometry, Vector3 } from 'three';
6
- import * as i0 from "@angular/core";
7
- const defaultOptions = {
8
- planeArgs: [],
9
- cellSize: 0.5,
10
- cellThickness: 0.5,
11
- cellColor: 'black',
12
- sectionSize: 1,
13
- sectionThickness: 1,
14
- sectionColor: '#2080ff',
15
- infiniteGrid: false,
16
- followCamera: false,
17
- fadeDistance: 100,
18
- fadeStrength: 1,
19
- fadeFrom: 1,
20
- side: BackSide,
21
- };
22
- export class NgtsGrid {
23
- constructor() {
24
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
25
- this.parameters = omit(this.options, [
26
- 'planeArgs',
27
- 'cellSize',
28
- 'cellThickness',
29
- 'cellColor',
30
- 'sectionSize',
31
- 'sectionThickness',
32
- 'sectionColor',
33
- 'infiniteGrid',
34
- 'followCamera',
35
- 'fadeDistance',
36
- 'fadeStrength',
37
- 'fadeFrom',
38
- 'side',
39
- ]);
40
- this.meshRef = viewChild.required('mesh');
41
- this.plane = new Plane();
42
- this.upVector = new Vector3(0, 1, 0);
43
- this.zeroVector = new Vector3(0, 0, 0);
44
- this.planeArgs = pick(this.options, 'planeArgs');
45
- this.side = pick(this.options, 'side');
46
- this.uniforms = computed(() => {
47
- const { cellSize, sectionSize, cellColor, sectionColor, cellThickness, sectionThickness, fadeDistance, fadeStrength, fadeFrom, infiniteGrid, followCamera, } = this.options();
48
- return {
49
- cellSize,
50
- sectionSize,
51
- cellColor,
52
- sectionColor,
53
- cellThickness,
54
- sectionThickness,
55
- fadeDistance,
56
- fadeStrength,
57
- fadeFrom,
58
- infiniteGrid,
59
- followCamera,
60
- };
61
- });
62
- extend({ Mesh, PlaneGeometry, GridMaterial });
63
- injectBeforeRender(({ camera }) => {
64
- const mesh = this.meshRef().nativeElement;
65
- this.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);
66
- const gridMaterial = mesh.material;
67
- const worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'];
68
- const worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'];
69
- this.plane.projectPoint(camera.position, worldCamProjPosition.value);
70
- worldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);
71
- });
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsGrid, isStandalone: true, selector: "ngts-grid", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
75
- <ngt-mesh #mesh [frustumCulled]="false" [parameters]="parameters()">
76
- <ngt-plane-geometry *args="planeArgs()" />
77
- <ngt-grid-material [transparent]="true" [side]="side()" [parameters]="uniforms()">
78
- <ngt-value attach="extensions.derivatives" [rawValue]="true" />
79
- </ngt-grid-material>
80
- <ng-content />
81
- </ngt-mesh>
82
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsGrid, decorators: [{
85
- type: Component,
86
- args: [{
87
- selector: 'ngts-grid',
88
- standalone: true,
89
- template: `
90
- <ngt-mesh #mesh [frustumCulled]="false" [parameters]="parameters()">
91
- <ngt-plane-geometry *args="planeArgs()" />
92
- <ngt-grid-material [transparent]="true" [side]="side()" [parameters]="uniforms()">
93
- <ngt-value attach="extensions.derivatives" [rawValue]="true" />
94
- </ngt-grid-material>
95
- <ng-content />
96
- </ngt-mesh>
97
- `,
98
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
99
- changeDetection: ChangeDetectionStrategy.OnPush,
100
- imports: [NgtArgs],
101
- }]
102
- }], ctorParameters: () => [] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9ncmlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBVyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQTJCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFL0YsTUFBTSxjQUFjLEdBQ2dFO0lBQ25GLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEdBQUc7SUFDYixhQUFhLEVBQUUsR0FBRztJQUNsQixTQUFTLEVBQUUsT0FBTztJQUNsQixXQUFXLEVBQUUsQ0FBQztJQUNkLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEdBQUc7SUFDakIsWUFBWSxFQUFFLENBQUM7SUFDZixRQUFRLEVBQUUsQ0FBQztJQUNYLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQztBQWtCRixNQUFNLE9BQU8sUUFBUTtJQXVEcEI7UUF0REEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMs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QU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgTmd0QXJncywgTmd0TWVzaCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgR3JpZE1hdGVyaWFsLCBHcmlkTWF0ZXJpYWxPcHRpb25zIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQmFja1NpZGUsIE1lc2gsIFBsYW5lLCBQbGFuZUdlb21ldHJ5LCBTaGFkZXJNYXRlcmlhbCwgVW5pZm9ybSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8Tmd0TWVzaD4gJlxuXHRHcmlkTWF0ZXJpYWxPcHRpb25zICYgeyBwbGFuZUFyZ3M6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgUGxhbmVHZW9tZXRyeT4gfSA9IHtcblx0cGxhbmVBcmdzOiBbXSxcblx0Y2VsbFNpemU6IDAuNSxcblx0Y2VsbFRoaWNrbmVzczogMC41LFxuXHRjZWxsQ29sb3I6ICdibGFjaycsXG5cdHNlY3Rpb25TaXplOiAxLFxuXHRzZWN0aW9uVGhpY2tuZXNzOiAxLFxuXHRzZWN0aW9uQ29sb3I6ICcjMjA4MGZmJyxcblx0aW5maW5pdGVHcmlkOiBmYWxzZSxcblx0Zm9sbG93Q2FtZXJhOiBmYWxzZSxcblx0ZmFkZURpc3RhbmNlOiAxMDAsXG5cdGZhZGVTdHJlbmd0aDogMSxcblx0ZmFkZUZyb206IDEsXG5cdHNpZGU6IEJhY2tTaWRlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1ncmlkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggI21lc2ggW2ZydXN0dW1DdWxsZWRdPVwiZmFsc2VcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgKmFyZ3M9XCJwbGFuZUFyZ3MoKVwiIC8+XG5cdFx0XHQ8bmd0LWdyaWQtbWF0ZXJpYWwgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2lkZV09XCJzaWRlKClcIiBbcGFyYW1ldGVyc109XCJ1bmlmb3JtcygpXCI+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwiZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc1wiIFtyYXdWYWx1ZV09XCJ0cnVlXCIgLz5cblx0XHRcdDwvbmd0LWdyaWQtbWF0ZXJpYWw+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dyaWQge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdwbGFuZUFyZ3MnLFxuXHRcdCdjZWxsU2l6ZScsXG5cdFx0J2NlbGxUaGlja25lc3MnLFxuXHRcdCdjZWxsQ29sb3InLFxuXHRcdCdzZWN0aW9uU2l6ZScsXG5cdFx0J3NlY3Rpb25UaGlja25lc3MnLFxuXHRcdCdzZWN0aW9uQ29sb3InLFxuXHRcdCdpbmZpbml0ZUdyaWQnLFxuXHRcdCdmb2xsb3dDYW1lcmEnLFxuXHRcdCdmYWRlRGlzdGFuY2UnLFxuXHRcdCdmYWRlU3RyZW5ndGgnLFxuXHRcdCdmYWRlRnJvbScsXG5cdFx0J3NpZGUnLFxuXHRdKTtcblxuXHRtZXNoUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cblx0cHJpdmF0ZSBwbGFuZSA9IG5ldyBQbGFuZSgpO1xuXHRwcml2YXRlIHVwVmVjdG9yID0gbmV3IFZlY3RvcjMoMCwgMSwgMCk7XG5cdHByaXZhdGUgemVyb1ZlY3RvciA9IG5ldyBWZWN0b3IzKDAsIDAsIDApO1xuXG5cdHBsYW5lQXJncyA9IHBpY2sodGhpcy5vcHRpb25zLCAncGxhbmVBcmdzJyk7XG5cdHNpZGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NpZGUnKTtcblx0dW5pZm9ybXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0Y2VsbFNpemUsXG5cdFx0XHRzZWN0aW9uU2l6ZSxcblx0XHRcdGNlbGxDb2xvcixcblx0XHRcdHNlY3Rpb25Db2xvcixcblx0XHRcdGNlbGxUaGlja25lc3MsXG5cdFx0XHRzZWN0aW9uVGhpY2tuZXNzLFxuXHRcdFx0ZmFkZURpc3RhbmNlLFxuXHRcdFx0ZmFkZVN0cmVuZ3RoLFxuXHRcdFx0ZmFkZUZyb20sXG5cdFx0XHRpbmZpbml0ZUdyaWQsXG5cdFx0XHRmb2xsb3dDYW1lcmEsXG5cdFx0fSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjZWxsU2l6ZSxcblx0XHRcdHNlY3Rpb25TaXplLFxuXHRcdFx0Y2VsbENvbG9yLFxuXHRcdFx0c2VjdGlvbkNvbG9yLFxuXHRcdFx0Y2VsbFRoaWNrbmVzcyxcblx0XHRcdHNlY3Rpb25UaGlja25lc3MsXG5cdFx0XHRmYWRlRGlzdGFuY2UsXG5cdFx0XHRmYWRlU3RyZW5ndGgsXG5cdFx0XHRmYWRlRnJvbSxcblx0XHRcdGluZmluaXRlR3JpZCxcblx0XHRcdGZvbGxvd0NhbWVyYSxcblx0XHR9O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBQbGFuZUdlb21ldHJ5LCBHcmlkTWF0ZXJpYWwgfSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2FtZXJhIH0pID0+IHtcblx0XHRcdGNvbnN0IG1lc2ggPSB0aGlzLm1lc2hSZWYoKS5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHR0aGlzLnBsYW5lLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHRoaXMudXBWZWN0b3IsIHRoaXMuemVyb1ZlY3RvcikuYXBwbHlNYXRyaXg0KG1lc2gubWF0cml4V29ybGQpO1xuXG5cdFx0XHRjb25zdCBncmlkTWF0ZXJpYWwgPSBtZXNoLm1hdGVyaWFsIGFzIFNoYWRlck1hdGVyaWFsO1xuXHRcdFx0Y29uc3Qgd29ybGRDYW1Qcm9qUG9zaXRpb24gPSBncmlkTWF0ZXJpYWwudW5pZm9ybXNbJ3dvcmxkQ2FtUHJvalBvc2l0aW9uJ10gYXMgVW5pZm9ybTxWZWN0b3IzPjtcblx0XHRcdGNvbnN0IHdvcmxkUGxhbmVQb3NpdGlvbiA9IGdyaWRNYXRlcmlhbC51bmlmb3Jtc1snd29ybGRQbGFuZVBvc2l0aW9uJ10gYXMgVW5pZm9ybTxWZWN0b3IzPjtcblxuXHRcdFx0dGhpcy5wbGFuZS5wcm9qZWN0UG9pbnQoY2FtZXJhLnBvc2l0aW9uLCB3b3JsZENhbVByb2pQb3NpdGlvbi52YWx1ZSk7XG5cdFx0XHR3b3JsZFBsYW5lUG9zaXRpb24udmFsdWUuc2V0KDAsIDAsIDApLmFwcGx5TWF0cml4NChtZXNoLm1hdHJpeFdvcmxkKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,74 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
2
- import { extend, getLocalState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';
3
- import { assertInjector } from 'ngxtension/assert-injector';
4
- import { Object3D } from 'three';
5
- import * as i0 from "@angular/core";
6
- export function injectHelper(object, helperConstructor, { injector, args = () => [], } = {}) {
7
- return assertInjector(injectHelper, injector, () => {
8
- const store = injectStore();
9
- const scene = store.select('scene');
10
- const helper = computed(() => {
11
- const maybeObject3D = object();
12
- if (!maybeObject3D)
13
- return null;
14
- const object3D = resolveRef(maybeObject3D);
15
- if (!object3D)
16
- return null;
17
- const currentHelper = new (helperConstructor())(object3D, ...args());
18
- currentHelper.traverse((child) => (child.raycast = () => null));
19
- return currentHelper;
20
- });
21
- effect((onCleanup) => {
22
- const currentHelper = helper();
23
- if (!currentHelper)
24
- return;
25
- const _scene = scene();
26
- _scene.add(currentHelper);
27
- onCleanup(() => {
28
- _scene.remove(currentHelper);
29
- currentHelper.dispose?.();
30
- });
31
- });
32
- injectBeforeRender(() => {
33
- const currentHelper = helper();
34
- if (currentHelper)
35
- currentHelper.update();
36
- });
37
- return helper;
38
- });
39
- }
40
- export class NgtsHelper {
41
- constructor() {
42
- this.type = input.required();
43
- this.options = input([]);
44
- this.helperRef = viewChild.required('helper');
45
- this.parent = computed(() => {
46
- const helper = this.helperRef().nativeElement;
47
- if (!helper)
48
- return;
49
- const localState = getLocalState(helper);
50
- if (!localState)
51
- return;
52
- return localState.parent();
53
- });
54
- this.helper = injectHelper(this.parent, this.type, { args: this.options });
55
- extend({ Object3D });
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsHelper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsHelper, isStandalone: true, selector: "ngts-helper", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
59
- <ngt-object3D #helper />
60
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsHelper, decorators: [{
63
- type: Component,
64
- args: [{
65
- standalone: true,
66
- selector: 'ngts-helper',
67
- template: `
68
- <ngt-object3D #helper />
69
- `,
70
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
71
- changeDetection: ChangeDetectionStrategy.OnPush,
72
- }]
73
- }], ctorParameters: () => [] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2Fic3RyYWN0aW9ucy9zcmMvbGliL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFHTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBSWpDLE1BQU0sVUFBVSxZQUFZLENBSTNCLE1BQWdFLEVBQ2hFLGlCQUFxQyxFQUNyQyxFQUNDLFFBQVEsRUFDUixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBZ0UsTUFDYSxFQUFFO0lBRTdGLE9BQU8sY0FBYyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ2xELE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUVoQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFM0IsTUFBTSxhQUFhLEdBQW9CLEtBQUssaUJBQWlCLEVBQVUsRUFBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sYUFBYSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTztZQUUzQixNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUV2QixNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTFCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDN0IsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLGFBQWE7Z0JBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFXRCxNQUFNLE9BQU8sVUFBVTtJQWtCdEI7UUFqQkEsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFDdEMsWUFBTyxHQUFHLEtBQUssQ0FDZCxFQUFnRSxDQUNoRSxDQUFDO1FBRUYsY0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQXVCLFFBQVEsQ0FBQyxDQUFDO1FBRXZELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBR3JFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQzsrR0FwQlcsVUFBVTttR0FBVixVQUFVLDBiQU5aOztFQUVUOzs0RkFJVyxVQUFVO2tCQVR0QixTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5cbnR5cGUgSGVscGVyQXJnczxUPiA9IFQgZXh0ZW5kcyBbaW5mZXIgXywgLi4uaW5mZXIgUl0gPyBSIDogbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIZWxwZXI8XG5cdFRDb25zdHJ1Y3RvciBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IE9iamVjdDNELFxuXHRUSGVscGVySW5zdGFuY2UgZXh0ZW5kcyBJbnN0YW5jZVR5cGU8VENvbnN0cnVjdG9yPiAmIHsgdXBkYXRlOiAoKSA9PiB2b2lkOyBkaXNwb3NlOiAoKSA9PiB2b2lkIH0sXG4+KFxuXHRvYmplY3Q6ICgpID0+IEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0QgfCB1bmRlZmluZWQgfCBudWxsLFxuXHRoZWxwZXJDb25zdHJ1Y3RvcjogKCkgPT4gVENvbnN0cnVjdG9yLFxuXHR7XG5cdFx0aW5qZWN0b3IsXG5cdFx0YXJncyA9ICgpID0+IFtdIGFzIHVua25vd24gYXMgSGVscGVyQXJnczxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VENvbnN0cnVjdG9yPj4sXG5cdH06IHsgaW5qZWN0b3I/OiBJbmplY3RvcjsgYXJncz86ICgpID0+IEhlbHBlckFyZ3M8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDb25zdHJ1Y3Rvcj4+IH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0SGVscGVyLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBzY2VuZSA9IHN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRcdGNvbnN0IGhlbHBlciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IG1heWJlT2JqZWN0M0QgPSBvYmplY3QoKTtcblx0XHRcdGlmICghbWF5YmVPYmplY3QzRCkgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IG9iamVjdDNEID0gcmVzb2x2ZVJlZihtYXliZU9iamVjdDNEKTtcblx0XHRcdGlmICghb2JqZWN0M0QpIHJldHVybiBudWxsO1xuXG5cdFx0XHRjb25zdCBjdXJyZW50SGVscGVyOiBUSGVscGVySW5zdGFuY2UgPSBuZXcgKGhlbHBlckNvbnN0cnVjdG9yKCkgYXMgYW55KShvYmplY3QzRCwgLi4uYXJncygpKTtcblx0XHRcdGN1cnJlbnRIZWxwZXIudHJhdmVyc2UoKGNoaWxkKSA9PiAoY2hpbGQucmF5Y2FzdCA9ICgpID0+IG51bGwpKTtcblx0XHRcdHJldHVybiBjdXJyZW50SGVscGVyO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnRIZWxwZXIgPSBoZWxwZXIoKTtcblx0XHRcdGlmICghY3VycmVudEhlbHBlcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBfc2NlbmUgPSBzY2VuZSgpO1xuXG5cdFx0XHRfc2NlbmUuYWRkKGN1cnJlbnRIZWxwZXIpO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRfc2NlbmUucmVtb3ZlKGN1cnJlbnRIZWxwZXIpO1xuXHRcdFx0XHRjdXJyZW50SGVscGVyLmRpc3Bvc2U/LigpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudEhlbHBlciA9IGhlbHBlcigpO1xuXHRcdFx0aWYgKGN1cnJlbnRIZWxwZXIpIGN1cnJlbnRIZWxwZXIudXBkYXRlKCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gaGVscGVyO1xuXHR9KTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnbmd0cy1oZWxwZXInLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb2JqZWN0M0QgI2hlbHBlciAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSGVscGVyPFRDb25zdHJ1Y3RvciBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IE9iamVjdDNEPiB7XG5cdHR5cGUgPSBpbnB1dC5yZXF1aXJlZDxUQ29uc3RydWN0b3I+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dDxIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pj4oXG5cdFx0W10gYXMgdW5rbm93biBhcyBIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pixcblx0KTtcblxuXHRoZWxwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdoZWxwZXInKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBoZWxwZXIgPSB0aGlzLmhlbHBlclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFoZWxwZXIpIHJldHVybjtcblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShoZWxwZXIpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXHRcdHJldHVybiBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXHR9KTtcblxuXHRoZWxwZXIgPSBpbmplY3RIZWxwZXIodGhpcy5wYXJlbnQsIHRoaXMudHlwZSwgeyBhcmdzOiB0aGlzLm9wdGlvbnMgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,123 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
2
- import { checkNeedsUpdate, injectStore, NgtArgs, omit, pick } from 'angular-three';
3
- import { mergeInputs } from 'ngxtension/inject-inputs';
4
- import { Color, Vector2, Vector3, Vector4 } from 'three';
5
- import { Line2, LineGeometry, LineMaterial, LineSegments2, LineSegmentsGeometry, } from 'three-stdlib';
6
- import * as i0 from "@angular/core";
7
- const defaultOptions = {
8
- lineWidth: 1,
9
- segments: false,
10
- color: 0xffffff,
11
- };
12
- export class NgtsLine {
13
- // NOTE: use attached event to call computeLineDistances to ensure the geometry has been attached
14
- onGeometryAttached({ parent }) {
15
- parent.computeLineDistances();
16
- }
17
- constructor() {
18
- this.points = input.required();
19
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
20
- this.parameters = omit(this.options, ['color', 'vertexColors', 'lineWidth', 'segments', 'linewidth', 'dashed']);
21
- this.lineRef = viewChild('line');
22
- this.store = injectStore();
23
- this.size = this.store.select('size');
24
- this.segments = pick(this.options, 'segments');
25
- this.vertexColors = pick(this.options, 'vertexColors');
26
- this.dashed = pick(this.options, 'dashed');
27
- this.color = pick(this.options, 'color');
28
- this.vertex = computed(() => Boolean(this.vertexColors()));
29
- this.resolution = computed(() => [this.size().width, this.size().height]);
30
- this.lineWidth = pick(this.options, 'lineWidth');
31
- this.linewidth = pick(this.options, 'linewidth');
32
- this.line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));
33
- this.lineMaterial = new LineMaterial();
34
- this.actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);
35
- this.itemSize = computed(() => (this.vertexColors()?.[0]?.length === 4 ? 4 : 3));
36
- this.lineGeometry = computed(() => {
37
- const geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();
38
- const pValues = this.points().map((p) => {
39
- const isArray = Array.isArray(p);
40
- return p instanceof Vector3 || p instanceof Vector4
41
- ? [p.x, p.y, p.z]
42
- : p instanceof Vector2
43
- ? [p.x, p.y, 0]
44
- : isArray && p.length === 3
45
- ? [p[0], p[1], p[2]]
46
- : isArray && p.length === 2
47
- ? [p[0], p[1], 0]
48
- : p;
49
- });
50
- geom.setPositions(pValues.flat());
51
- const vertexColors = this.vertexColors();
52
- if (vertexColors) {
53
- const cValues = vertexColors.map((c) => (c instanceof Color ? c.toArray() : c));
54
- // @ts-expect-error - flat() isn't defined
55
- geom.setColors(cValues.flat(), this.itemSize());
56
- }
57
- return geom;
58
- });
59
- effect(() => {
60
- const [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];
61
- if (dashed) {
62
- lineMaterial.defines['USE_DASH'] = '';
63
- }
64
- else {
65
- delete lineMaterial.defines['USE_DASH'];
66
- }
67
- checkNeedsUpdate(lineMaterial);
68
- });
69
- effect((onCleanup) => {
70
- const [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];
71
- onCleanup(() => {
72
- lineGeometry.dispose();
73
- lineMaterial.dispose();
74
- });
75
- });
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsLine, isStandalone: true, selector: "ngts-line", inputs: { points: { classPropertyName: "points", publicName: "points", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lineRef", first: true, predicate: ["line"], descendants: true, isSignal: true }], ngImport: i0, template: `
79
- <ngt-primitive *args="[line2()]" #line [parameters]="parameters()">
80
- <ngt-primitive *args="[lineGeometry()]" attach="geometry" (attached)="onGeometryAttached($any($event))" />
81
- <ngt-primitive
82
- *args="[lineMaterial]"
83
- attach="material"
84
- [color]="color()"
85
- [vertexColors]="vertex()"
86
- [resolution]="resolution()"
87
- [linewidth]="actualLineWidth()"
88
- [dashed]="dashed()"
89
- [transparent]="itemSize() === 4"
90
- [parameters]="parameters()"
91
- />
92
- <ng-content />
93
- </ngt-primitive>
94
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsLine, decorators: [{
97
- type: Component,
98
- args: [{
99
- selector: 'ngts-line',
100
- standalone: true,
101
- template: `
102
- <ngt-primitive *args="[line2()]" #line [parameters]="parameters()">
103
- <ngt-primitive *args="[lineGeometry()]" attach="geometry" (attached)="onGeometryAttached($any($event))" />
104
- <ngt-primitive
105
- *args="[lineMaterial]"
106
- attach="material"
107
- [color]="color()"
108
- [vertexColors]="vertex()"
109
- [resolution]="resolution()"
110
- [linewidth]="actualLineWidth()"
111
- [dashed]="dashed()"
112
- [transparent]="itemSize() === 4"
113
- [parameters]="parameters()"
114
- />
115
- <ng-content />
116
- </ngt-primitive>
117
- `,
118
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
119
- changeDetection: ChangeDetectionStrategy.OnPush,
120
- imports: [NgtArgs],
121
- }]
122
- }], ctorParameters: () => [] });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBa0IsT0FBTyxFQUFtQixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUF1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5RSxPQUFPLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixZQUFZLEVBRVosYUFBYSxFQUNiLG9CQUFvQixHQUNwQixNQUFNLGNBQWMsQ0FBQzs7QUFrQnRCLE1BQU0sY0FBYyxHQUFvQjtJQUN2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLFFBQVE7Q0FDZixDQUFDO0FBMEJGLE1BQU0sT0FBTyxRQUFRO0lBdURwQixpR0FBaUc7SUFDakcsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQXVEO1FBQ2pGLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDtRQTNEQSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUYsQ0FBQztRQUMzRyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFB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Q0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBOUVXLFFBQVE7bUdBQVIsUUFBUSwwYkFyQlY7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQsNERBR1MsT0FBTzs7NEZBRUwsUUFBUTtrQkF4QnBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCBpbmplY3RTdG9yZSwgTmd0QWZ0ZXJBdHRhY2gsIE5ndEFyZ3MsIE5ndE9iamVjdDNETm9kZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3IsIENvbG9yUmVwcmVzZW50YXRpb24sIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1xuXHRMaW5lMixcblx0TGluZUdlb21ldHJ5LFxuXHRMaW5lTWF0ZXJpYWwsXG5cdExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsXG5cdExpbmVTZWdtZW50czIsXG5cdExpbmVTZWdtZW50c0dlb21ldHJ5LFxufSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgdHlwZSBOZ3RMaW5lMiA9IE5ndE9iamVjdDNETm9kZTxMaW5lMiwgdHlwZW9mIExpbmUyPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVNYXRlcmlhbCA9IE5ndE9iamVjdDNETm9kZTxMaW5lTWF0ZXJpYWwsIFtMaW5lTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5cbmV4cG9ydCB0eXBlIE5ndHNMaW5lT3B0aW9ucyA9IE9taXQ8TGluZU1hdGVyaWFsUGFyYW1ldGVycywgJ3ZlcnRleENvbG9ycycgfCAnY29sb3InPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lMj4sICdfX25ndF9hcmdzX18nPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lTWF0ZXJpYWw+LCAnY29sb3InIHwgJ3ZlcnRleENvbG9ycycgfCAnX19uZ3RfYXJnc19fJz4gJiB7XG5cdFx0LyoqIEFycmF5IG9mIGNvbG9ycywgWzAsIDAsIDBdICovXG5cdFx0dmVydGV4Q29sb3JzPzogQXJyYXk8Q29sb3JSZXByZXNlbnRhdGlvbiB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdPjtcblx0XHQvKiogTGluZSB3aWR0aCwgMSAqL1xuXHRcdGxpbmVXaWR0aDogbnVtYmVyO1xuXHRcdC8qKiBTZWdtZW50cywgZmFsc2UgKi9cblx0XHRzZWdtZW50czogYm9vbGVhbjtcblx0XHQvKiogQ29sb3IgKi9cblx0XHRjb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdH07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTGluZU9wdGlvbnMgPSB7XG5cdGxpbmVXaWR0aDogMSxcblx0c2VnbWVudHM6IGZhbHNlLFxuXHRjb2xvcjogMHhmZmZmZmYsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWxpbmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2xpbmUyKCldXCIgI2xpbmUgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltsaW5lR2VvbWV0cnkoKV1cIiBhdHRhY2g9XCJnZW9tZXRyeVwiIChhdHRhY2hlZCk9XCJvbkdlb21ldHJ5QXR0YWNoZWQoJGFueSgkZXZlbnQpKVwiIC8+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0XHQqYXJncz1cIltsaW5lTWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRbY29sb3JdPVwiY29sb3IoKVwiXG5cdFx0XHRcdFt2ZXJ0ZXhDb2xvcnNdPVwidmVydGV4KClcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuXHRcdFx0XHRbbGluZXdpZHRoXT1cImFjdHVhbExpbmVXaWR0aCgpXCJcblx0XHRcdFx0W2Rhc2hlZF09XCJkYXNoZWQoKVwiXG5cdFx0XHRcdFt0cmFuc3BhcmVudF09XCJpdGVtU2l6ZSgpID09PSA0XCJcblx0XHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTGluZSB7XG5cdHBvaW50cyA9IGlucHV0LnJlcXVpcmVkPEFycmF5PFZlY3RvcjMgfCBWZWN0b3IyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgW251bWJlciwgbnVtYmVyXSB8IG51bWJlcj4+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2NvbG9yJywgJ3ZlcnRleENvbG9ycycsICdsaW5lV2lkdGgnLCAnc2VnbWVudHMnLCAnbGluZXdpZHRoJywgJ2Rhc2hlZCddKTtcblxuXHRsaW5lUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8TGluZTIgfCBMaW5lU2VnbWVudHMyPj4oJ2xpbmUnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIHNlZ21lbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdzZWdtZW50cycpO1xuXHRwcml2YXRlIHZlcnRleENvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAndmVydGV4Q29sb3JzJyk7XG5cblx0cHJvdGVjdGVkIGRhc2hlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGFzaGVkJyk7XG5cdHByb3RlY3RlZCBjb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sb3InKTtcblx0cHJvdGVjdGVkIHZlcnRleCA9IGNvbXB1dGVkKCgpID0+IEJvb2xlYW4odGhpcy52ZXJ0ZXhDb2xvcnMoKSkpO1xuXHRwcm90ZWN0ZWQgcmVzb2x1dGlvbiA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLnNpemUoKS53aWR0aCwgdGhpcy5zaXplKCkuaGVpZ2h0XSk7XG5cblx0cHJpdmF0ZSBsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRwcml2YXRlIGxpbmV3aWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZXdpZHRoJyk7XG5cblx0bGluZTIgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zZWdtZW50cygpID8gbmV3IExpbmVTZWdtZW50czIoKSA6IG5ldyBMaW5lMigpKSk7XG5cdGxpbmVNYXRlcmlhbCA9IG5ldyBMaW5lTWF0ZXJpYWwoKTtcblxuXHRwcm90ZWN0ZWQgYWN0dWFsTGluZVdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5saW5ld2lkdGgoKSA/PyB0aGlzLmxpbmVXaWR0aCgpID8/IDEpO1xuXHRwcm90ZWN0ZWQgaXRlbVNpemUgPSBjb21wdXRlZCgoKSA9PiAoKHRoaXMudmVydGV4Q29sb3JzKCk/LlswXSBhcyBudW1iZXJbXSB8IHVuZGVmaW5lZCk/Lmxlbmd0aCA9PT0gNCA/IDQgOiAzKSk7XG5cblx0bGluZUdlb21ldHJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGdlb20gPSB0aGlzLnNlZ21lbnRzKCkgPyBuZXcgTGluZVNlZ21lbnRzR2VvbWV0cnkoKSA6IG5ldyBMaW5lR2VvbWV0cnkoKTtcblx0XHRjb25zdCBwVmFsdWVzID0gdGhpcy5wb2ludHMoKS5tYXAoKHApID0+IHtcblx0XHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHApO1xuXHRcdFx0cmV0dXJuIHAgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHAgaW5zdGFuY2VvZiBWZWN0b3I0XG5cdFx0XHRcdD8gW3AueCwgcC55LCBwLnpdXG5cdFx0XHRcdDogcCBpbnN0YW5jZW9mIFZlY3RvcjJcblx0XHRcdFx0XHQ/IFtwLngsIHAueSwgMF1cblx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDNcblx0XHRcdFx0XHRcdD8gW3BbMF0sIHBbMV0sIHBbMl1dXG5cdFx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDJcblx0XHRcdFx0XHRcdFx0PyBbcFswXSwgcFsxXSwgMF1cblx0XHRcdFx0XHRcdFx0OiBwO1xuXHRcdH0pO1xuXG5cdFx0Z2VvbS5zZXRQb3NpdGlvbnMocFZhbHVlcy5mbGF0KCkpO1xuXG5cdFx0Y29uc3QgdmVydGV4Q29sb3JzID0gdGhpcy52ZXJ0ZXhDb2xvcnMoKTtcblxuXHRcdGlmICh2ZXJ0ZXhDb2xvcnMpIHtcblx0XHRcdGNvbnN0IGNWYWx1ZXMgPSB2ZXJ0ZXhDb2xvcnMubWFwKChjKSA9PiAoYyBpbnN0YW5jZW9mIENvbG9yID8gYy50b0FycmF5KCkgOiBjKSk7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gZmxhdCgpIGlzbid0IGRlZmluZWRcblx0XHRcdGdlb20uc2V0Q29sb3JzKGNWYWx1ZXMuZmxhdCgpLCB0aGlzLml0ZW1TaXplKCkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZW9tO1xuXHR9KTtcblxuXHQvLyBOT1RFOiB1c2UgYXR0YWNoZWQgZXZlbnQgdG8gY2FsbCBjb21wdXRlTGluZURpc3RhbmNlcyB0byBlbnN1cmUgdGhlIGdlb21ldHJ5IGhhcyBiZWVuIGF0dGFjaGVkXG5cdG9uR2VvbWV0cnlBdHRhY2hlZCh7IHBhcmVudCB9OiBOZ3RBZnRlckF0dGFjaDxMaW5lR2VvbWV0cnksIExpbmUyIHwgTGluZVNlZ21lbnRzMj4pIHtcblx0XHRwYXJlbnQuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbbGluZU1hdGVyaWFsLCBkYXNoZWRdID0gW3RoaXMubGluZU1hdGVyaWFsLCB0aGlzLmRhc2hlZCgpXTtcblx0XHRcdGlmIChkYXNoZWQpIHtcblx0XHRcdFx0bGluZU1hdGVyaWFsLmRlZmluZXNbJ1VTRV9EQVNIJ10gPSAnJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBsaW5lTWF0ZXJpYWwuZGVmaW5lc1snVVNFX0RBU0gnXTtcblx0XHRcdH1cblx0XHRcdGNoZWNrTmVlZHNVcGRhdGUobGluZU1hdGVyaWFsKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbbGluZUdlb21ldHJ5LCBsaW5lTWF0ZXJpYWxdID0gW3RoaXMubGluZUdlb21ldHJ5KCksIHRoaXMubGluZU1hdGVyaWFsXTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdGxpbmVHZW9tZXRyeS5kaXNwb3NlKCk7XG5cdFx0XHRcdGxpbmVNYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,46 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
2
- import { extend, NgtArgs } from 'angular-three';
3
- import { mergeInputs } from 'ngxtension/inject-inputs';
4
- import { ExtrudeGeometry, Shape, Vector2 } from 'three';
5
- import * as i0 from "@angular/core";
6
- const defaultOptions = {
7
- height: 1,
8
- bevelEnabled: false,
9
- };
10
- export class NgtsPrismGeometry {
11
- constructor() {
12
- this.attach = input('geometry');
13
- this.vertices = input.required();
14
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
15
- this.parameters = computed(() => ({ ...this.options(), depth: this.options().height }));
16
- this.shape = computed(() => {
17
- const vertices = this.vertices();
18
- const interpolatedVertices = vertices.map((v) => (v instanceof Vector2 ? v : new Vector2(...v)));
19
- return new Shape(interpolatedVertices);
20
- });
21
- this.geometryRef = viewChild('geometry');
22
- extend({ ExtrudeGeometry });
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsPrismGeometry, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsPrismGeometry, isStandalone: true, selector: "ngts-prism-geometry", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, vertices: { classPropertyName: "vertices", publicName: "vertices", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "geometryRef", first: true, predicate: ["geometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
26
- <ngt-extrude-geometry #geometry *args="[shape(), parameters()]" [attach]="attach()">
27
- <ng-content />
28
- </ngt-extrude-geometry>
29
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsPrismGeometry, decorators: [{
32
- type: Component,
33
- args: [{
34
- selector: 'ngts-prism-geometry',
35
- standalone: true,
36
- template: `
37
- <ngt-extrude-geometry #geometry *args="[shape(), parameters()]" [attach]="attach()">
38
- <ng-content />
39
- </ngt-extrude-geometry>
40
- `,
41
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
42
- changeDetection: ChangeDetectionStrategy.OnPush,
43
- imports: [NgtArgs],
44
- }]
45
- }], ctorParameters: () => [] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20tZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9saWIvcHJpc20tZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUV0QixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBMEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFPaEYsTUFBTSxjQUFjLEdBQTZCO0lBQ2hELE1BQU0sRUFBRSxDQUFDO0lBQ1QsWUFBWSxFQUFFLEtBQUs7Q0FDbkIsQ0FBQztBQWNGLE1BQU0sT0FBTyxpQkFBaUI7SUFjN0I7UUFiQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixVQUFVLENBQUMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25GLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLFNBQVMsQ0FBOEIsVUFBVSxDQUFDLENBQUM7UUFHaEUsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQWhCVyxpQkFBaUI7bUdBQWpCLGlCQUFpQiw2a0JBVG5COzs7O0VBSVQsNERBR1MsT0FBTzs7NEZBRUwsaUJBQWlCO2tCQVo3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MsIE5ndEF0dGFjaGFibGUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEV4dHJ1ZGVHZW9tZXRyeSwgRXh0cnVkZUdlb21ldHJ5T3B0aW9ucywgU2hhcGUsIFZlY3RvcjIgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1ByaXNtR2VvbWV0cnlPcHRpb25zIGV4dGVuZHMgT21pdDxFeHRydWRlR2VvbWV0cnlPcHRpb25zLCAnZGVwdGgnPiB7XG5cdC8qKiBIZWlnaHQgKi9cblx0aGVpZ2h0OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUHJpc21HZW9tZXRyeU9wdGlvbnMgPSB7XG5cdGhlaWdodDogMSxcblx0YmV2ZWxFbmFibGVkOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtcHJpc20tZ2VvbWV0cnknLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZXh0cnVkZS1nZW9tZXRyeSAjZ2VvbWV0cnkgKmFyZ3M9XCJbc2hhcGUoKSwgcGFyYW1ldGVycygpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZXh0cnVkZS1nZW9tZXRyeT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUHJpc21HZW9tZXRyeSB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdnZW9tZXRyeScpO1xuXHR2ZXJ0aWNlcyA9IGlucHV0LnJlcXVpcmVkPEFycmF5PFZlY3RvcjIgfCBbbnVtYmVyLCBudW1iZXJdPj4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHBhcmFtZXRlcnMgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi50aGlzLm9wdGlvbnMoKSwgZGVwdGg6IHRoaXMub3B0aW9ucygpLmhlaWdodCB9KSk7XG5cdHNoYXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHZlcnRpY2VzID0gdGhpcy52ZXJ0aWNlcygpO1xuXHRcdGNvbnN0IGludGVycG9sYXRlZFZlcnRpY2VzID0gdmVydGljZXMubWFwKCh2KSA9PiAodiBpbnN0YW5jZW9mIFZlY3RvcjIgPyB2IDogbmV3IFZlY3RvcjIoLi4udikpKTtcblx0XHRyZXR1cm4gbmV3IFNoYXBlKGludGVycG9sYXRlZFZlcnRpY2VzKTtcblx0fSk7XG5cblx0Z2VvbWV0cnlSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxFeHRydWRlR2VvbWV0cnk+PignZ2VvbWV0cnknKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBFeHRydWRlR2VvbWV0cnkgfSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,73 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';
2
- import { omit, pick } from 'angular-three';
3
- import { mergeInputs } from 'ngxtension/inject-inputs';
4
- import { QuadraticBezierCurve3, Vector3 } from 'three';
5
- import { NgtsLine } from './line';
6
- import * as i0 from "@angular/core";
7
- const defaultOptions = {
8
- lineWidth: 1,
9
- segments: 20,
10
- };
11
- export class NgtsQuadraticBezierLine {
12
- constructor() {
13
- this.start = input([0, 0, 0]);
14
- this.end = input([0, 0, 0]);
15
- this.mid = input();
16
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
17
- this.parameters = omit(this.options, ['segments']);
18
- this.segments = pick(this.options, 'segments');
19
- this.line = viewChild.required(NgtsLine);
20
- this.points = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));
21
- this.curve = new QuadraticBezierCurve3();
22
- }
23
- setPoints(start, end, mid) {
24
- const points = this.getPoints(start, end, mid);
25
- const geometry = this.line().lineGeometry();
26
- if (geometry)
27
- geometry.setPositions(points.map((p) => p.toArray()).flat());
28
- }
29
- getPoints(start, end, mid, segments = 20) {
30
- if (start instanceof Vector3)
31
- this.curve.v0.copy(start);
32
- else
33
- this.curve.v0.set(...start);
34
- if (end instanceof Vector3)
35
- this.curve.v2.copy(end);
36
- else
37
- this.curve.v2.set(...end);
38
- if (mid instanceof Vector3) {
39
- this.curve.v1.copy(mid);
40
- }
41
- else if (Array.isArray(mid)) {
42
- this.curve.v1.set(...mid);
43
- }
44
- else {
45
- this.curve.v1.copy(this.curve.v0
46
- .clone()
47
- .add(this.curve.v2.clone().sub(this.curve.v0))
48
- .add(new Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)));
49
- }
50
- return this.curve.getPoints(segments);
51
- }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsQuadraticBezierLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsQuadraticBezierLine, isStandalone: true, selector: "ngts-quadratic-bezier-line", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: false, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: false, transformFunction: null }, mid: { classPropertyName: "mid", publicName: "mid", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "line", first: true, predicate: NgtsLine, descendants: true, isSignal: true }], ngImport: i0, template: `
54
- <ngts-line [points]="points()" [options]="parameters()">
55
- <ng-content />
56
- </ngts-line>
57
- `, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsQuadraticBezierLine, decorators: [{
60
- type: Component,
61
- args: [{
62
- selector: 'ngts-quadratic-bezier-line',
63
- standalone: true,
64
- template: `
65
- <ngts-line [points]="points()" [options]="parameters()">
66
- <ng-content />
67
- </ngts-line>
68
- `,
69
- changeDetection: ChangeDetectionStrategy.OnPush,
70
- imports: [NgtsLine],
71
- }]
72
- }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhZHJhdGljLWJlemllci1saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2Fic3RyYWN0aW9ucy9zcmMvbGliL3F1YWRyYXRpYy1iZXppZXItbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQW1CLE1BQU0sUUFBUSxDQUFDOztBQU1uRCxNQUFNLGNBQWMsR0FBbUM7SUFDdEQsU0FBUyxFQUFFLENBQUM7SUFDWixRQUFRLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFhRixNQUFNLE9BQU8sdUJBQXVCO0lBWHBDO1FBWUMsVUFBSyxHQUFHLEtBQUssQ0FBcUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsUUFBRyxHQUFHLEtBQUssQ0FBcUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsUUFBRyxHQUFHLEtBQUssRUFBc0MsQ0FBQztRQUNsRCxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFdEMsYUFBUSxHQUFHLElBQUks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dEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IFF1YWRyYXRpY0JlemllckN1cnZlMywgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNMaW5lLCBOZ3RzTGluZU9wdGlvbnMgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNRdWFkcmF0aWNCZXppZXJMaW5lT3B0aW9ucyBleHRlbmRzIE9taXQ8Tmd0c0xpbmVPcHRpb25zLCAnc2VnbWVudHMnPiB7XG5cdHNlZ21lbnRzPzogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1F1YWRyYXRpY0JlemllckxpbmVPcHRpb25zID0ge1xuXHRsaW5lV2lkdGg6IDEsXG5cdHNlZ21lbnRzOiAyMCxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtcXVhZHJhdGljLWJlemllci1saW5lJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0cy1saW5lIFtwb2ludHNdPVwicG9pbnRzKClcIiBbb3B0aW9uc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3RzLWxpbmU+XG5cdGAsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c0xpbmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUXVhZHJhdGljQmV6aWVyTGluZSB7XG5cdHN0YXJ0ID0gaW5wdXQ8VmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4oWzAsIDAsIDBdKTtcblx0ZW5kID0gaW5wdXQ8VmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4oWzAsIDAsIDBdKTtcblx0bWlkID0gaW5wdXQ8VmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnc2VnbWVudHMnXSk7XG5cblx0cHJpdmF0ZSBzZWdtZW50cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2VnbWVudHMnKTtcblxuXHRsaW5lID0gdmlld0NoaWxkLnJlcXVpcmVkKE5ndHNMaW5lKTtcblxuXHRwb2ludHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdldFBvaW50cyh0aGlzLnN0YXJ0KCksIHRoaXMuZW5kKCksIHRoaXMubWlkKCksIHRoaXMuc2VnbWVudHMoKSkpO1xuXG5cdHByaXZhdGUgY3VydmUgPSBuZXcgUXVhZHJhdGljQmV6aWVyQ3VydmUzKCk7XG5cblx0c2V0UG9pbnRzKFxuXHRcdHN0YXJ0OiBWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuXHRcdGVuZDogVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcblx0XHRtaWQ6IFZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG5cdCkge1xuXHRcdGNvbnN0IHBvaW50cyA9IHRoaXMuZ2V0UG9pbnRzKHN0YXJ0LCBlbmQsIG1pZCk7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSB0aGlzLmxpbmUoKS5saW5lR2VvbWV0cnkoKTtcblx0XHRpZiAoZ2VvbWV0cnkpIGdlb21ldHJ5LnNldFBvc2l0aW9ucyhwb2ludHMubWFwKChwKSA9PiBwLnRvQXJyYXkoKSkuZmxhdCgpKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0UG9pbnRzKFxuXHRcdHN0YXJ0OiBWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuXHRcdGVuZDogVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcblx0XHRtaWQ/OiBWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuXHRcdHNlZ21lbnRzID0gMjAsXG5cdCkge1xuXHRcdGlmIChzdGFydCBpbnN0YW5jZW9mIFZlY3RvcjMpIHRoaXMuY3VydmUudjAuY29weShzdGFydCk7XG5cdFx0ZWxzZSB0aGlzLmN1cnZlLnYwLnNldCguLi4oc3RhcnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSk7XG5cdFx0aWYgKGVuZCBpbnN0YW5jZW9mIFZlY3RvcjMpIHRoaXMuY3VydmUudjIuY29weShlbmQpO1xuXHRcdGVsc2UgdGhpcy5jdXJ2ZS52Mi5zZXQoLi4uKGVuZCBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pKTtcblx0XHRpZiAobWlkIGluc3RhbmNlb2YgVmVjdG9yMykge1xuXHRcdFx0dGhpcy5jdXJ2ZS52MS5jb3B5KG1pZCk7XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1pZCkpIHtcblx0XHRcdHRoaXMuY3VydmUudjEuc2V0KC4uLihtaWQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY3VydmUudjEuY29weShcblx0XHRcdFx0dGhpcy5jdXJ2ZS52MFxuXHRcdFx0XHRcdC5jbG9uZSgpXG5cdFx0XHRcdFx0LmFkZCh0aGlzLmN1cnZlLnYyLmNsb25lKCkuc3ViKHRoaXMuY3VydmUudjApKVxuXHRcdFx0XHRcdC5hZGQobmV3IFZlY3RvcjMoMCwgdGhpcy5jdXJ2ZS52MC55IC0gdGhpcy5jdXJ2ZS52Mi55LCAwKSksXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jdXJ2ZS5nZXRQb2ludHMoc2VnbWVudHMpO1xuXHR9XG59XG4iXX0=