angular-three-soba 4.2.1 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-three-soba-abstractions.mjs +98 -98
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +26 -26
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +32 -32
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +119 -119
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +6 -6
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +75 -75
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +70 -70
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +67 -67
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +257 -257
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +5 -5
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/package.json +3 -2
- package/types/angular-three-soba-misc.d.ts +6 -1
- package/types/angular-three-soba-staging.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\n/**\n * Configuration options for the NgtsBillboard component.\n */\nexport interface NgtsBillboardOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/**\n\t * Whether the billboard should follow (face) the camera.\n\t * @default true\n\t */\n\tfollow?: boolean;\n\t/**\n\t * Lock rotation on the X axis, preventing the billboard from rotating around X.\n\t * @default false\n\t */\n\tlockX?: boolean;\n\t/**\n\t * Lock rotation on the Y axis, preventing the billboard from rotating around Y.\n\t * @default false\n\t */\n\tlockY?: boolean;\n\t/**\n\t * Lock rotation on the Z axis, preventing the billboard from rotating around Z.\n\t * @default false\n\t */\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n/**\n * A component that rotates its contents to always face the camera (billboarding effect).\n * Useful for sprites, labels, or any content that should always face the viewer.\n *\n * @example\n * ```html\n * <ngts-billboard [options]=\"{ follow: true, lockY: true }\">\n * <ngt-mesh>\n * <ngt-plane-geometry />\n * <ngt-mesh-basic-material />\n * </ngt-mesh>\n * </ngts-billboard>\n * ```\n */\n@Component({\n\tselector: 'ngts-billboard',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new THREE.Quaternion();\n\t\tbeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group || !inner) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = inner.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) inner.rotation.x = prevRotation.x;\n\t\t\tif (lockY) inner.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) inner.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, is, NgtAfterAttach, NgtArgs, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\n/**\n * Type definition for the Line2 Three.js element.\n */\nexport type NgtLine2 = NgtThreeElement<typeof Line2>;\n\n/**\n * Type definition for the LineMaterial Three.js element.\n */\nexport type NgtLineMaterial = NgtThreeElement<typeof LineMaterial>;\n\n/**\n * Configuration options for the NgtsLine component.\n */\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/**\n\t\t * Array of colors for vertex coloring. Each color can be a ColorRepresentation,\n\t\t * RGB tuple, or RGBA tuple (for transparency support).\n\t\t * @default undefined\n\t\t */\n\t\tvertexColors?: Array<THREE.ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/**\n\t\t * Width of the line in pixels.\n\t\t * @default 1\n\t\t */\n\t\tlineWidth: number;\n\t\t/**\n\t\t * Whether to render as line segments instead of a continuous line.\n\t\t * @default false\n\t\t */\n\t\tsegments: boolean;\n\t\t/**\n\t\t * Color of the line.\n\t\t * @default 0xffffff\n\t\t */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n/**\n * A component for rendering lines with configurable width and styling using Line2 from three-stdlib.\n * Supports both continuous lines and line segments, with optional vertex coloring.\n *\n * @example\n * ```html\n * <ngts-line\n * [points]=\"[[0, 0, 0], [1, 1, 1], [2, 0, 0]]\"\n * [options]=\"{ color: 'red', lineWidth: 2 }\"\n * />\n * ```\n *\n * @example\n * ```html\n * <!-- With vertex colors -->\n * <ngts-line\n * [points]=\"points\"\n * [options]=\"{ vertexColors: ['red', 'green', 'blue'], lineWidth: 3 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-line',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\t/**\n\t * Array of points defining the line path. Accepts Vector3, Vector2, coordinate tuples, or flat numbers.\n\t */\n\tpoints =\n\t\tinput.required<Array<THREE.Vector3 | THREE.Vector2 | [number, number, number] | [number, number] | number>>();\n\n\t/**\n\t * Configuration options for the line appearance and behavior.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'color',\n\t\t'vertexColors',\n\t\t'lineWidth',\n\t\t'segments',\n\t\t'linewidth',\n\t\t'dashed',\n\t]);\n\n\t/**\n\t * Reference to the underlying Line2 or LineSegments2 Three.js object.\n\t */\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tprotected line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tprotected lineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\t/**\n\t * Computed LineGeometry or LineSegmentsGeometry based on the points and vertex colors.\n\t * Other line components (like NgtsQuadraticBezierLine) access this to update positions.\n\t */\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\n\t\t\tif (is.three<THREE.Vector3>(p, 'isVector3')) {\n\t\t\t\treturn [p.x, p.y, p.z];\n\t\t\t}\n\n\t\t\treturn is.three<THREE.Vector3>(p, 'isVector3') || is.three<THREE.Vector4>(p, 'isVector4')\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: is.three<THREE.Vector2>(p, 'isVector2')\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (is.three<THREE.Color>(c, 'isColor') ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t/**\n\t * Callback invoked when geometry is attached to the line.\n\t * Computes line distances required for dashed lines to render correctly.\n\t *\n\t * @param event - The attach event containing the parent Line2 or LineSegments2\n\t */\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsCatmullRomLine component.\n */\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * The type of Catmull-Rom curve interpolation.\n\t * - 'centripetal': Produces smoother curves, avoids cusps and self-intersections\n\t * - 'chordal': Uses chord length parameterization\n\t * - 'catmullrom': Standard Catmull-Rom spline\n\t * @default 'centripetal'\n\t */\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\t/**\n\t * Tension parameter for the curve (0 to 1). Higher values create tighter curves.\n\t * @default 0.5\n\t */\n\ttension: number;\n\t/**\n\t * Number of segments to divide the curve into for rendering.\n\t * @default 20\n\t */\n\tsegments: number;\n\t/**\n\t * Whether the curve should be closed (connect end to start).\n\t * @default false\n\t */\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n/**\n * A line component that renders a smooth Catmull-Rom spline curve through given points.\n * Supports vertex color interpolation and various curve parameterizations.\n *\n * @example\n * ```html\n * <ngts-catmull-rom-line\n * [points]=\"[[0, 0, 0], [1, 2, 0], [3, 1, 0], [4, 0, 0]]\"\n * [options]=\"{ curveType: 'centripetal', tension: 0.5, closed: false, color: 'hotpink' }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<THREE.Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tis.three<THREE.Vector3>(pt, 'isVector3') ? pt : new THREE.Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new THREE.CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tprotected segmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tis.three<THREE.Color>(color, 'isColor') ? color : new THREE.Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: THREE.Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsCubicBezierLine component.\n */\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * Number of segments to divide the Bezier curve into for rendering.\n\t * @default 20\n\t */\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n/**\n * A line component that renders a cubic Bezier curve defined by start, end, and two control points.\n * Uses THREE.CubicBezierCurve3 internally for smooth curve interpolation.\n *\n * @example\n * ```html\n * <ngts-cubic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[10, 0, 0]\"\n * [midA]=\"[2, 5, 0]\"\n * [midB]=\"[8, 5, 0]\"\n * [options]=\"{ color: 'red', lineWidth: 2 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<THREE.Vector3 | [number, number, number]>();\n\tend = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidA = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidB = input.required<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tprotected points = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [\n\t\t\tthis.start(),\n\t\t\tthis.end(),\n\t\t\tthis.midA(),\n\t\t\tthis.midB(),\n\t\t\tthis.segments(),\n\t\t];\n\t\tconst startV = is.three<THREE.Vector3>(start, 'isVector3') ? start : new THREE.Vector3(...start);\n\t\tconst endV = is.three<THREE.Vector3>(end, 'isVector3') ? end : new THREE.Vector3(...end);\n\t\tconst midAV = is.three<THREE.Vector3>(midA, 'isVector3') ? midA : new THREE.Vector3(...midA);\n\t\tconst midBV = is.three<THREE.Vector3>(midB, 'isVector3') ? midB : new THREE.Vector3(...midB);\n\t\treturn new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getInstanceState, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\n/**\n * Configuration options for the NgtsEdges component.\n * Combines mesh properties, line material parameters, and edge-specific options.\n */\nexport type NgtsEdgesOptions = Partial<NgtThreeElements['ngt-mesh']> & {\n\t/**\n\t * Angle threshold in degrees for edge detection.\n\t * Edges with angles greater than this value will be rendered.\n\t * @default 15\n\t */\n\tthreshold?: number;\n\t/**\n\t * Width of the edge lines.\n\t * @default 1\n\t */\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\t/**\n\t\t * Optional geometry to compute edges from. If not provided, uses parent mesh geometry.\n\t\t */\n\t\tgeometry?: THREE.BufferGeometry;\n\t\t/**\n\t\t * Color of the edge lines.\n\t\t */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n/**\n * A component that renders the edges of a mesh geometry as lines.\n * Must be placed as a child of a mesh to automatically detect its geometry.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-box-geometry />\n * <ngt-mesh-basic-material />\n * <ngts-edges [options]=\"{ color: 'black', threshold: 15 }\" />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-edges',\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), segments: true, raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: THREE.BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getInstanceState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as unknown as THREE.Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (\n\t\t\t\tnew THREE.EdgesGeometry(geometry, threshold).attributes['position'] as THREE.BufferAttribute\n\t\t\t).array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDOCUMENT,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CanvasTexture } from 'three';\n\n/**\n * Configuration options for the NgtsGradientTexture component.\n */\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtThreeElements['ngt-canvas-texture'], 'type'>> {\n\t/**\n\t * Height of the gradient texture canvas in pixels.\n\t * @default 1024\n\t */\n\tsize: number;\n\t/**\n\t * Width of the gradient texture canvas in pixels.\n\t * @default 16\n\t */\n\twidth: number;\n\t/**\n\t * Type of gradient to generate.\n\t * - 'linear': Creates a linear gradient from top to bottom\n\t * - 'radial': Creates a radial gradient from center outward\n\t * @default 'linear'\n\t */\n\ttype: 'linear' | 'radial';\n\t/**\n\t * Inner circle radius for radial gradients (only applies when type is 'radial').\n\t * @default 0\n\t */\n\tinnerCircleRadius: number;\n\t/**\n\t * Outer circle radius for radial gradients. Use 'auto' to calculate based on canvas size.\n\t * @default 'auto'\n\t */\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n/**\n * A texture component that generates a gradient from an array of colors and stops.\n * Supports both linear and radial gradients, useful for backgrounds, skyboxes, or material maps.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-plane-geometry />\n * <ngt-mesh-basic-material>\n * <ngts-gradient-texture\n * [stops]=\"[0, 0.5, 1]\"\n * [colors]=\"['red', 'green', 'blue']\"\n * [options]=\"{ type: 'linear' }\"\n * />\n * </ngt-mesh-basic-material>\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-gradient-texture',\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"outputColorSpace()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<THREE.ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprotected outputColorSpace = this.store.gl.outputColorSpace;\n\n\tprotected canvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new THREE.Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, PlaneGeometry } from 'three';\n\n/**\n * Configuration options for the NgtsGrid component.\n * Combines mesh properties, grid material options, and plane geometry arguments.\n */\nexport type NgtsGridOptions = Partial<NgtThreeElements['ngt-mesh']> &\n\tGridMaterialOptions & {\n\t\t/**\n\t\t * Arguments passed to THREE.PlaneGeometry constructor [width, height, widthSegments, heightSegments].\n\t\t * @default []\n\t\t */\n\t\tplaneArgs: ConstructorParameters<typeof THREE.PlaneGeometry>;\n\t};\n\nconst defaultOptions: NgtsGridOptions = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: THREE.BackSide,\n};\n\n/**\n * A configurable infinite grid component with customizable cells and sections.\n * Features distance-based fading and optional camera following.\n *\n * @example\n * ```html\n * <ngts-grid\n * [options]=\"{\n * cellSize: 1,\n * cellColor: '#6f6f6f',\n * sectionSize: 3,\n * sectionColor: '#9d4b4b',\n * fadeDistance: 50,\n * infiniteGrid: true\n * }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-grid',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material transparent [side]=\"side()\" [parameters]=\"uniforms()\" extensions.derivatives />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate plane = new THREE.Plane();\n\tprivate upVector = new THREE.Vector3(0, 1, 0);\n\tprivate zeroVector = new THREE.Vector3(0, 0, 0);\n\n\tprotected planeArgs = pick(this.options, 'planeArgs');\n\tprotected side = pick(this.options, 'side');\n\n\tprivate cellSize = pick(this.options, 'cellSize');\n\tprivate sectionSize = pick(this.options, 'sectionSize');\n\tprivate cellColor = pick(this.options, 'cellColor');\n\tprivate sectionColor = pick(this.options, 'sectionColor');\n\tprivate cellThickness = pick(this.options, 'cellThickness');\n\tprivate sectionThickness = pick(this.options, 'sectionThickness');\n\tprivate fadeDistance = pick(this.options, 'fadeDistance');\n\tprivate fadeStrength = pick(this.options, 'fadeStrength');\n\tprivate fadeFrom = pick(this.options, 'fadeFrom');\n\tprivate infiniteGrid = pick(this.options, 'infiniteGrid');\n\tprivate followCamera = pick(this.options, 'followCamera');\n\n\tprotected uniforms = computed(() => {\n\t\tconst [\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t] = [\n\t\t\tthis.cellSize(),\n\t\t\tthis.sectionSize(),\n\t\t\tthis.cellColor(),\n\t\t\tthis.sectionColor(),\n\t\t\tthis.cellThickness(),\n\t\t\tthis.sectionThickness(),\n\t\t\tthis.fadeDistance(),\n\t\t\tthis.fadeStrength(),\n\t\t\tthis.fadeFrom(),\n\t\t\tthis.infiniteGrid(),\n\t\t\tthis.followCamera(),\n\t\t];\n\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tbeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as THREE.ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as THREE.Uniform<THREE.Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as THREE.Uniform<THREE.Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, getInstanceState, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\n\n/**\n * Extracts helper constructor arguments, excluding the first argument (the object being helped).\n */\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\n/**\n * Creates a Three.js helper object for the given object and manages its lifecycle.\n * The helper is automatically added to the scene, updated on each frame, and disposed on cleanup.\n *\n * @param object - Function returning the target object to attach the helper to\n * @param helperConstructor - Function returning the helper class constructor\n * @param options - Optional configuration object\n * @param options.injector - Optional injector for dependency injection context\n * @param options.args - Function returning additional constructor arguments for the helper\n * @returns Signal containing the helper instance or null\n *\n * @example\n * ```typescript\n * // In a component\n * meshRef = viewChild<ElementRef<Mesh>>('mesh');\n *\n * boxHelper = helper(\n * () => this.meshRef(),\n * () => BoxHelper,\n * { args: () => ['red'] }\n * );\n * ```\n */\nexport function helper<\n\tTConstructor extends new (...args: any[]) => THREE.Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<THREE.Object3D> | THREE.Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(helper, injector, () => {\n\t\tconst store = injectStore();\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst scene = store.scene();\n\n\t\t\tscene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tscene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tbeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n/**\n * @deprecated Use `helper` function instead. Will be removed in v5.0.0.\n * @since v4.0.0\n */\nexport const injectHelper = helper;\n\n/**\n * A component wrapper for attaching Three.js helper objects to their parent mesh.\n * Automatically detects the parent object and creates the specified helper type.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-box-geometry />\n * <ngt-mesh-basic-material />\n * <ngts-helper [type]=\"BoxHelper\" [options]=\"['royalblue']\" />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => THREE.Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<THREE.Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst instanceState = getInstanceState(helper);\n\t\tif (!instanceState) return;\n\t\treturn instanceState.parent() as unknown as THREE.Object3D;\n\t});\n\n\thelper = helper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry } from 'three';\n\n/**\n * Configuration options for the NgtsPrismGeometry component.\n * Extends Three.js ExtrudeGeometryOptions but replaces 'depth' with 'height'.\n */\nexport interface NgtsPrismGeometryOptions extends Omit<THREE.ExtrudeGeometryOptions, 'depth'> {\n\t/**\n\t * Height of the prism extrusion.\n\t * @default 1\n\t */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n/**\n * A component that creates a prism geometry by extruding a shape defined by vertices.\n * Useful for creating custom prismatic shapes like triangular prisms, hexagonal prisms, etc.\n *\n * @example\n * ```html\n * <!-- Triangular prism -->\n * <ngt-mesh>\n * <ngts-prism-geometry\n * [vertices]=\"[[0, 1], [-1, -1], [1, -1]]\"\n * [options]=\"{ height: 2 }\"\n * />\n * <ngt-mesh-standard-material />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-prism-geometry',\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\t/**\n\t * Defines how the geometry attaches to its parent.\n\t * @default 'geometry'\n\t */\n\tattach = input<NgtAttachable>('geometry');\n\n\t/**\n\t * Array of 2D vertices defining the base shape of the prism.\n\t * Accepts Vector2 instances or [x, y] tuples.\n\t */\n\tvertices = input.required<Array<THREE.Vector2 | [number, number]>>();\n\n\t/**\n\t * Configuration options for the prism geometry.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tprotected shape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) =>\n\t\t\tis.three<THREE.Vector2>(v, 'isVector2') ? v : new THREE.Vector2(...v),\n\t\t);\n\t\treturn new THREE.Shape(interpolatedVertices);\n\t});\n\n\t/**\n\t * Reference to the underlying ExtrudeGeometry Three.js object.\n\t */\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsQuadraticBezierLine component.\n * Extends NgtsLineOptions but replaces boolean 'segments' with a number for curve resolution.\n */\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * Number of segments used to approximate the quadratic bezier curve.\n\t * Higher values produce smoother curves.\n\t * @default 20\n\t */\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n/**\n * A component for rendering quadratic bezier curves as lines.\n * Creates smooth curves between start and end points with an optional control point.\n *\n * @example\n * ```html\n * <ngts-quadratic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[2, 2, 0]\"\n * [options]=\"{ color: 'blue', lineWidth: 2 }\"\n * />\n * ```\n *\n * @example\n * ```html\n * <!-- With custom midpoint control -->\n * <ngts-quadratic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[2, 0, 0]\"\n * [mid]=\"[1, 2, 0]\"\n * [options]=\"{ segments: 50 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\t/**\n\t * Starting point of the bezier curve.\n\t * @default [0, 0, 0]\n\t */\n\tstart = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\n\t/**\n\t * Ending point of the bezier curve.\n\t * @default [0, 0, 0]\n\t */\n\tend = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\n\t/**\n\t * Control point for the quadratic bezier curve.\n\t * If not provided, automatically calculated based on start and end points.\n\t */\n\tmid = input<THREE.Vector3 | [number, number, number]>();\n\n\t/**\n\t * Configuration options for the line appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\t/**\n\t * Reference to the underlying NgtsLine component.\n\t */\n\tline = viewChild.required(NgtsLine);\n\n\tprotected points = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new THREE.QuadraticBezierCurve3();\n\n\t/**\n\t * Imperatively updates the bezier curve points.\n\t * Useful for animations or dynamic updates without triggering full re-renders.\n\t *\n\t * @param start - Starting point of the curve\n\t * @param end - Ending point of the curve\n\t * @param mid - Optional control point for the curve\n\t */\n\tsetPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (is.three<THREE.Vector3>(start, 'isVector3')) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(end, 'isVector3')) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(mid, 'isVector3')) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new THREE.Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtObjectEvents, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry, Mesh } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\n/**\n * Creates a rounded rectangle shape for extrusion.\n *\n * @param width - Width of the rectangle\n * @param height - Height of the rectangle\n * @param radius0 - Corner radius\n * @returns A THREE.Shape representing the rounded rectangle\n */\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new THREE.Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\n/**\n * Configuration options for the NgtsRoundedBox component.\n */\nexport interface NgtsRoundedBoxOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\t/**\n\t * Width of the box (X-axis).\n\t * @default 1\n\t */\n\twidth: number;\n\t/**\n\t * Height of the box (Y-axis).\n\t * @default 1\n\t */\n\theight: number;\n\t/**\n\t * Depth of the box (Z-axis).\n\t * @default 1\n\t */\n\tdepth: number;\n\t/**\n\t * Radius of the rounded corners.\n\t * @default 0.05\n\t */\n\tradius: number;\n\t/**\n\t * Number of curve segments for corner smoothness.\n\t * @default 4\n\t */\n\tsmoothness: number;\n\t/**\n\t * Number of bevel segments.\n\t * @default 4\n\t */\n\tbevelSegments: number;\n\t/**\n\t * Number of extrusion steps.\n\t * @default 1\n\t */\n\tsteps: number;\n\t/**\n\t * Angle threshold for creased normals calculation (in radians).\n\t * @default 0.4\n\t */\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n/**\n * A component that renders a box with rounded edges.\n * Creates smooth, beveled corners on all edges of the box.\n *\n * @example\n * ```html\n * <ngts-rounded-box [options]=\"{ width: 2, height: 1, depth: 1, radius: 0.1 }\">\n * <ngt-mesh-standard-material color=\"orange\" />\n * </ngts-rounded-box>\n * ```\n *\n * @example\n * ```html\n * <!-- With higher smoothness for smoother corners -->\n * <ngts-rounded-box\n * [options]=\"{ width: 1, height: 1, depth: 1, radius: 0.2, smoothness: 8 }\"\n * (click)=\"onClick($event)\"\n * >\n * <ngt-mesh-basic-material color=\"blue\" />\n * </ngts-rounded-box>\n * ```\n */\n@Component({\n\tselector: 'ngts-rounded-box',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), geometryParameters()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\t/**\n\t * Configuration options for the rounded box dimensions and appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\t/**\n\t * Reference to the underlying Mesh Three.js object.\n\t */\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\t/**\n\t * Reference to the underlying ExtrudeGeometry Three.js object.\n\t */\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected geometryParameters = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\t\tobjectEvents.events.set(this.meshRef);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtObjectEvents, NgtThreeElements, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\n/**\n * Configuration options for the NgtsText component.\n * Uses troika-three-text for high-quality SDF text rendering.\n */\nexport interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\t/**\n\t * Characters to pre-render for the font. Improves performance for known character sets.\n\t */\n\tcharacters?: string;\n\t/**\n\t * Color of the text.\n\t */\n\tcolor?: THREE.ColorRepresentation;\n\t/**\n\t * Font size in world units.\n\t * @default 1\n\t */\n\tfontSize: number;\n\t/**\n\t * Font weight (numeric or string like 'bold').\n\t */\n\tfontWeight?: number | string;\n\t/**\n\t * Font style.\n\t */\n\tfontStyle?: 'italic' | 'normal';\n\t/**\n\t * Maximum width for text wrapping in world units.\n\t */\n\tmaxWidth?: number;\n\t/**\n\t * Line height multiplier.\n\t */\n\tlineHeight?: number;\n\t/**\n\t * Letter spacing in world units.\n\t */\n\tletterSpacing?: number;\n\t/**\n\t * Text alignment within the bounding box.\n\t */\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\t/**\n\t * URL to the font file (supports .ttf, .otf, .woff).\n\t */\n\tfont?: string;\n\t/**\n\t * Horizontal anchor point for positioning.\n\t * @default 'center'\n\t */\n\tanchorX: number | 'left' | 'center' | 'right';\n\t/**\n\t * Vertical anchor point for positioning.\n\t * @default 'middle'\n\t */\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\t/**\n\t * Clipping rectangle [minX, minY, maxX, maxY].\n\t */\n\tclipRect?: [number, number, number, number];\n\t/**\n\t * Depth offset for z-fighting prevention.\n\t */\n\tdepthOffset?: number;\n\t/**\n\t * Text direction for bidirectional text.\n\t */\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\t/**\n\t * How to handle text overflow and wrapping.\n\t */\n\toverflowWrap?: 'normal' | 'break-word';\n\t/**\n\t * Whitespace handling mode.\n\t */\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\t/**\n\t * Width of the text outline.\n\t */\n\toutlineWidth?: number | string;\n\t/**\n\t * Horizontal offset for the outline.\n\t */\n\toutlineOffsetX?: number | string;\n\t/**\n\t * Vertical offset for the outline.\n\t */\n\toutlineOffsetY?: number | string;\n\t/**\n\t * Blur radius for the outline.\n\t */\n\toutlineBlur?: number | string;\n\t/**\n\t * Color of the text outline.\n\t */\n\toutlineColor?: THREE.ColorRepresentation;\n\t/**\n\t * Opacity of the text outline (0-1).\n\t */\n\toutlineOpacity?: number;\n\t/**\n\t * Width of the text stroke.\n\t */\n\tstrokeWidth?: number | string;\n\t/**\n\t * Color of the text stroke.\n\t */\n\tstrokeColor?: THREE.ColorRepresentation;\n\t/**\n\t * Opacity of the text stroke (0-1).\n\t */\n\tstrokeOpacity?: number;\n\t/**\n\t * Opacity of the text fill (0-1).\n\t */\n\tfillOpacity?: number;\n\t/**\n\t * Size of the SDF glyph texture. Higher values improve quality but use more memory.\n\t * @default 64\n\t */\n\tsdfGlyphSize: number;\n\t/**\n\t * Enable debug visualization of the SDF texture.\n\t */\n\tdebugSDF?: boolean;\n\t/**\n\t * Detail level for glyph geometry.\n\t */\n\tglyphGeometryDetail?: number;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n/**\n * A component for rendering high-quality 2D text in 3D scenes using troika-three-text.\n * Supports SDF (Signed Distance Field) rendering for crisp text at any scale.\n *\n * @example\n * ```html\n * <ngts-text text=\"Hello World\" [options]=\"{ fontSize: 0.5, color: 'white' }\" />\n * ```\n *\n * @example\n * ```html\n * <!-- With custom font and styling -->\n * <ngts-text\n * text=\"Custom Font\"\n * [options]=\"{\n * font: '/fonts/roboto.woff',\n * fontSize: 1,\n * color: '#ff0000',\n * outlineWidth: 0.02,\n * outlineColor: 'black'\n * }\"\n * (synced)=\"onTextReady($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-text',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t#textPrimitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsText {\n\t/**\n\t * The text string to render.\n\t */\n\ttext = input.required<string>();\n\n\t/**\n\t * Configuration options for text appearance and behavior.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\t/**\n\t * Emitted when the text has been synced and is ready for rendering.\n\t * Returns the Troika Text mesh instance.\n\t */\n\tsynced = output<Text>();\n\n\tprivate objectEvents = inject(NgtObjectEvents, { host: true });\n\tprivate store = injectStore();\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tprotected font = pick(this.options, 'font');\n\tprotected anchorX = pick(this.options, 'anchorX');\n\tprotected anchorY = pick(this.options, 'anchorY');\n\tprotected sdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tprotected fontSize = pick(this.options, 'fontSize');\n\n\t/**\n\t * The underlying Troika Text mesh instance.\n\t */\n\ttroikaMesh = new Text();\n\n\t// TODO: (chau) we currently need to use this with NgtObjectEvents\n\t// to make sure `ngt-primitive` is instantitated before `injectObjectEvents`\n\tprivate textPrimitiveRef = viewChild<ElementRef<Text>>('textPrimitive');\n\tprivate textPrimitive = computed(() => this.textPrimitiveRef()?.nativeElement);\n\n\tconstructor() {\n\t\tthis.objectEvents.events.set(this.textPrimitive);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.store.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElement, NgtThreeElements, omit, pick } from 'angular-three';\nimport { fontResource, type NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\n/**\n * Configuration options for the NgtsText3D component.\n * Controls the geometry generation for 3D extruded text.\n */\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\t/**\n\t * Number of bevel segments for smoother beveled edges.\n\t * @default 4\n\t */\n\tbevelSegments: number;\n\t/**\n\t * Threshold for merging vertices to create smooth normals.\n\t * When set, vertices closer than this value are merged.\n\t */\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n/**\n * A component for rendering 3D extruded text geometry.\n * Creates text with depth using Three.js TextGeometry with support for beveling and smooth normals.\n *\n * @example\n * ```html\n * <ngts-text-3d\n * font=\"/fonts/helvetiker_regular.typeface.json\"\n * text=\"Hello\"\n * [options]=\"{ size: 0.5, height: 0.2 }\"\n * >\n * <ngt-mesh-standard-material color=\"gold\" />\n * </ngts-text-3d>\n * ```\n *\n * @example\n * ```html\n * <!-- With beveling and smooth normals -->\n * <ngts-text-3d\n * font=\"/fonts/font.json\"\n * text=\"3D Text\"\n * [options]=\"{\n * size: 1,\n * height: 0.5,\n * bevelEnabled: true,\n * bevelSize: 0.02,\n * smooth: 0.01\n * }\"\n * >\n * <ngt-mesh-normal-material />\n * </ngts-text-3d>\n * ```\n */\n@Component({\n\tselector: 'ngts-text-3d,ngts-text-3D',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\t/**\n\t * Font source for the text. Can be a URL to a typeface.json file or a preloaded font object.\n\t */\n\tfont = input.required<NgtsFontInput>();\n\n\t/**\n\t * The text string to render as 3D geometry.\n\t */\n\ttext = input.required<string>();\n\n\t/**\n\t * Configuration options for the 3D text appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\t/**\n\t * Reference to the underlying Mesh Three.js object.\n\t */\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tprivate loadedFont = fontResource(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\tprotected textArgs = computed(() => {\n\t\tconst font = this.loadedFont.value();\n\t\tif (!font) return null;\n\n\t\tconst [text, textOptions] = [this.text(), this.textOptions()];\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Type definition for the TextGeometry Three.js element.\n */\nexport type NgtTextGeometry = NgtThreeElement<typeof TextGeometry>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-extrude-geometry\n\t\t * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing\n\t\t */\n\t\t'ngt-text-geometry': NgtTextGeometry;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\n/**\n * Configuration options for the NgtsBillboard component.\n */\nexport interface NgtsBillboardOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/**\n\t * Whether the billboard should follow (face) the camera.\n\t * @default true\n\t */\n\tfollow?: boolean;\n\t/**\n\t * Lock rotation on the X axis, preventing the billboard from rotating around X.\n\t * @default false\n\t */\n\tlockX?: boolean;\n\t/**\n\t * Lock rotation on the Y axis, preventing the billboard from rotating around Y.\n\t * @default false\n\t */\n\tlockY?: boolean;\n\t/**\n\t * Lock rotation on the Z axis, preventing the billboard from rotating around Z.\n\t * @default false\n\t */\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n/**\n * A component that rotates its contents to always face the camera (billboarding effect).\n * Useful for sprites, labels, or any content that should always face the viewer.\n *\n * @example\n * ```html\n * <ngts-billboard [options]=\"{ follow: true, lockY: true }\">\n * <ngt-mesh>\n * <ngt-plane-geometry />\n * <ngt-mesh-basic-material />\n * </ngt-mesh>\n * </ngts-billboard>\n * ```\n */\n@Component({\n\tselector: 'ngts-billboard',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new THREE.Quaternion();\n\t\tbeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group || !inner) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = inner.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) inner.rotation.x = prevRotation.x;\n\t\t\tif (lockY) inner.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) inner.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, is, NgtAfterAttach, NgtArgs, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\n/**\n * Type definition for the Line2 Three.js element.\n */\nexport type NgtLine2 = NgtThreeElement<typeof Line2>;\n\n/**\n * Type definition for the LineMaterial Three.js element.\n */\nexport type NgtLineMaterial = NgtThreeElement<typeof LineMaterial>;\n\n/**\n * Configuration options for the NgtsLine component.\n */\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/**\n\t\t * Array of colors for vertex coloring. Each color can be a ColorRepresentation,\n\t\t * RGB tuple, or RGBA tuple (for transparency support).\n\t\t * @default undefined\n\t\t */\n\t\tvertexColors?: Array<THREE.ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/**\n\t\t * Width of the line in pixels.\n\t\t * @default 1\n\t\t */\n\t\tlineWidth: number;\n\t\t/**\n\t\t * Whether to render as line segments instead of a continuous line.\n\t\t * @default false\n\t\t */\n\t\tsegments: boolean;\n\t\t/**\n\t\t * Color of the line.\n\t\t * @default 0xffffff\n\t\t */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n/**\n * A component for rendering lines with configurable width and styling using Line2 from three-stdlib.\n * Supports both continuous lines and line segments, with optional vertex coloring.\n *\n * @example\n * ```html\n * <ngts-line\n * [points]=\"[[0, 0, 0], [1, 1, 1], [2, 0, 0]]\"\n * [options]=\"{ color: 'red', lineWidth: 2 }\"\n * />\n * ```\n *\n * @example\n * ```html\n * <!-- With vertex colors -->\n * <ngts-line\n * [points]=\"points\"\n * [options]=\"{ vertexColors: ['red', 'green', 'blue'], lineWidth: 3 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-line',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\t/**\n\t * Array of points defining the line path. Accepts Vector3, Vector2, coordinate tuples, or flat numbers.\n\t */\n\tpoints =\n\t\tinput.required<Array<THREE.Vector3 | THREE.Vector2 | [number, number, number] | [number, number] | number>>();\n\n\t/**\n\t * Configuration options for the line appearance and behavior.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'color',\n\t\t'vertexColors',\n\t\t'lineWidth',\n\t\t'segments',\n\t\t'linewidth',\n\t\t'dashed',\n\t]);\n\n\t/**\n\t * Reference to the underlying Line2 or LineSegments2 Three.js object.\n\t */\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tprotected line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tprotected lineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\t/**\n\t * Computed LineGeometry or LineSegmentsGeometry based on the points and vertex colors.\n\t * Other line components (like NgtsQuadraticBezierLine) access this to update positions.\n\t */\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\n\t\t\tif (is.three<THREE.Vector3>(p, 'isVector3')) {\n\t\t\t\treturn [p.x, p.y, p.z];\n\t\t\t}\n\n\t\t\treturn is.three<THREE.Vector3>(p, 'isVector3') || is.three<THREE.Vector4>(p, 'isVector4')\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: is.three<THREE.Vector2>(p, 'isVector2')\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (is.three<THREE.Color>(c, 'isColor') ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t/**\n\t * Callback invoked when geometry is attached to the line.\n\t * Computes line distances required for dashed lines to render correctly.\n\t *\n\t * @param event - The attach event containing the parent Line2 or LineSegments2\n\t */\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsCatmullRomLine component.\n */\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * The type of Catmull-Rom curve interpolation.\n\t * - 'centripetal': Produces smoother curves, avoids cusps and self-intersections\n\t * - 'chordal': Uses chord length parameterization\n\t * - 'catmullrom': Standard Catmull-Rom spline\n\t * @default 'centripetal'\n\t */\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\t/**\n\t * Tension parameter for the curve (0 to 1). Higher values create tighter curves.\n\t * @default 0.5\n\t */\n\ttension: number;\n\t/**\n\t * Number of segments to divide the curve into for rendering.\n\t * @default 20\n\t */\n\tsegments: number;\n\t/**\n\t * Whether the curve should be closed (connect end to start).\n\t * @default false\n\t */\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n/**\n * A line component that renders a smooth Catmull-Rom spline curve through given points.\n * Supports vertex color interpolation and various curve parameterizations.\n *\n * @example\n * ```html\n * <ngts-catmull-rom-line\n * [points]=\"[[0, 0, 0], [1, 2, 0], [3, 1, 0], [4, 0, 0]]\"\n * [options]=\"{ curveType: 'centripetal', tension: 0.5, closed: false, color: 'hotpink' }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<THREE.Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tis.three<THREE.Vector3>(pt, 'isVector3') ? pt : new THREE.Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new THREE.CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tprotected segmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tis.three<THREE.Color>(color, 'isColor') ? color : new THREE.Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: THREE.Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsCubicBezierLine component.\n */\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * Number of segments to divide the Bezier curve into for rendering.\n\t * @default 20\n\t */\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n/**\n * A line component that renders a cubic Bezier curve defined by start, end, and two control points.\n * Uses THREE.CubicBezierCurve3 internally for smooth curve interpolation.\n *\n * @example\n * ```html\n * <ngts-cubic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[10, 0, 0]\"\n * [midA]=\"[2, 5, 0]\"\n * [midB]=\"[8, 5, 0]\"\n * [options]=\"{ color: 'red', lineWidth: 2 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<THREE.Vector3 | [number, number, number]>();\n\tend = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidA = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidB = input.required<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tprotected points = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [\n\t\t\tthis.start(),\n\t\t\tthis.end(),\n\t\t\tthis.midA(),\n\t\t\tthis.midB(),\n\t\t\tthis.segments(),\n\t\t];\n\t\tconst startV = is.three<THREE.Vector3>(start, 'isVector3') ? start : new THREE.Vector3(...start);\n\t\tconst endV = is.three<THREE.Vector3>(end, 'isVector3') ? end : new THREE.Vector3(...end);\n\t\tconst midAV = is.three<THREE.Vector3>(midA, 'isVector3') ? midA : new THREE.Vector3(...midA);\n\t\tconst midBV = is.three<THREE.Vector3>(midB, 'isVector3') ? midB : new THREE.Vector3(...midB);\n\t\treturn new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getInstanceState, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\n/**\n * Configuration options for the NgtsEdges component.\n * Combines mesh properties, line material parameters, and edge-specific options.\n */\nexport type NgtsEdgesOptions = Partial<NgtThreeElements['ngt-mesh']> & {\n\t/**\n\t * Angle threshold in degrees for edge detection.\n\t * Edges with angles greater than this value will be rendered.\n\t * @default 15\n\t */\n\tthreshold?: number;\n\t/**\n\t * Width of the edge lines.\n\t * @default 1\n\t */\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\t/**\n\t\t * Optional geometry to compute edges from. If not provided, uses parent mesh geometry.\n\t\t */\n\t\tgeometry?: THREE.BufferGeometry;\n\t\t/**\n\t\t * Color of the edge lines.\n\t\t */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n/**\n * A component that renders the edges of a mesh geometry as lines.\n * Must be placed as a child of a mesh to automatically detect its geometry.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-box-geometry />\n * <ngt-mesh-basic-material />\n * <ngts-edges [options]=\"{ color: 'black', threshold: 15 }\" />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-edges',\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), segments: true, raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: THREE.BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getInstanceState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as unknown as THREE.Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (\n\t\t\t\tnew THREE.EdgesGeometry(geometry, threshold).attributes['position'] as THREE.BufferAttribute\n\t\t\t).array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDOCUMENT,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CanvasTexture } from 'three';\n\n/**\n * Configuration options for the NgtsGradientTexture component.\n */\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtThreeElements['ngt-canvas-texture'], 'type'>> {\n\t/**\n\t * Height of the gradient texture canvas in pixels.\n\t * @default 1024\n\t */\n\tsize: number;\n\t/**\n\t * Width of the gradient texture canvas in pixels.\n\t * @default 16\n\t */\n\twidth: number;\n\t/**\n\t * Type of gradient to generate.\n\t * - 'linear': Creates a linear gradient from top to bottom\n\t * - 'radial': Creates a radial gradient from center outward\n\t * @default 'linear'\n\t */\n\ttype: 'linear' | 'radial';\n\t/**\n\t * Inner circle radius for radial gradients (only applies when type is 'radial').\n\t * @default 0\n\t */\n\tinnerCircleRadius: number;\n\t/**\n\t * Outer circle radius for radial gradients. Use 'auto' to calculate based on canvas size.\n\t * @default 'auto'\n\t */\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n/**\n * A texture component that generates a gradient from an array of colors and stops.\n * Supports both linear and radial gradients, useful for backgrounds, skyboxes, or material maps.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-plane-geometry />\n * <ngt-mesh-basic-material>\n * <ngts-gradient-texture\n * [stops]=\"[0, 0.5, 1]\"\n * [colors]=\"['red', 'green', 'blue']\"\n * [options]=\"{ type: 'linear' }\"\n * />\n * </ngt-mesh-basic-material>\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-gradient-texture',\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"outputColorSpace()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<THREE.ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprotected outputColorSpace = this.store.gl.outputColorSpace;\n\n\tprotected canvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new THREE.Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, PlaneGeometry } from 'three';\n\n/**\n * Configuration options for the NgtsGrid component.\n * Combines mesh properties, grid material options, and plane geometry arguments.\n */\nexport type NgtsGridOptions = Partial<NgtThreeElements['ngt-mesh']> &\n\tGridMaterialOptions & {\n\t\t/**\n\t\t * Arguments passed to THREE.PlaneGeometry constructor [width, height, widthSegments, heightSegments].\n\t\t * @default []\n\t\t */\n\t\tplaneArgs: ConstructorParameters<typeof THREE.PlaneGeometry>;\n\t};\n\nconst defaultOptions: NgtsGridOptions = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: THREE.BackSide,\n};\n\n/**\n * A configurable infinite grid component with customizable cells and sections.\n * Features distance-based fading and optional camera following.\n *\n * @example\n * ```html\n * <ngts-grid\n * [options]=\"{\n * cellSize: 1,\n * cellColor: '#6f6f6f',\n * sectionSize: 3,\n * sectionColor: '#9d4b4b',\n * fadeDistance: 50,\n * infiniteGrid: true\n * }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-grid',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material transparent [side]=\"side()\" [parameters]=\"uniforms()\" extensions.derivatives />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate plane = new THREE.Plane();\n\tprivate upVector = new THREE.Vector3(0, 1, 0);\n\tprivate zeroVector = new THREE.Vector3(0, 0, 0);\n\n\tprotected planeArgs = pick(this.options, 'planeArgs');\n\tprotected side = pick(this.options, 'side');\n\n\tprivate cellSize = pick(this.options, 'cellSize');\n\tprivate sectionSize = pick(this.options, 'sectionSize');\n\tprivate cellColor = pick(this.options, 'cellColor');\n\tprivate sectionColor = pick(this.options, 'sectionColor');\n\tprivate cellThickness = pick(this.options, 'cellThickness');\n\tprivate sectionThickness = pick(this.options, 'sectionThickness');\n\tprivate fadeDistance = pick(this.options, 'fadeDistance');\n\tprivate fadeStrength = pick(this.options, 'fadeStrength');\n\tprivate fadeFrom = pick(this.options, 'fadeFrom');\n\tprivate infiniteGrid = pick(this.options, 'infiniteGrid');\n\tprivate followCamera = pick(this.options, 'followCamera');\n\n\tprotected uniforms = computed(() => {\n\t\tconst [\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t] = [\n\t\t\tthis.cellSize(),\n\t\t\tthis.sectionSize(),\n\t\t\tthis.cellColor(),\n\t\t\tthis.sectionColor(),\n\t\t\tthis.cellThickness(),\n\t\t\tthis.sectionThickness(),\n\t\t\tthis.fadeDistance(),\n\t\t\tthis.fadeStrength(),\n\t\t\tthis.fadeFrom(),\n\t\t\tthis.infiniteGrid(),\n\t\t\tthis.followCamera(),\n\t\t];\n\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tbeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as THREE.ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as THREE.Uniform<THREE.Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as THREE.Uniform<THREE.Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, getInstanceState, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\n\n/**\n * Extracts helper constructor arguments, excluding the first argument (the object being helped).\n */\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\n/**\n * Creates a Three.js helper object for the given object and manages its lifecycle.\n * The helper is automatically added to the scene, updated on each frame, and disposed on cleanup.\n *\n * @param object - Function returning the target object to attach the helper to\n * @param helperConstructor - Function returning the helper class constructor\n * @param options - Optional configuration object\n * @param options.injector - Optional injector for dependency injection context\n * @param options.args - Function returning additional constructor arguments for the helper\n * @returns Signal containing the helper instance or null\n *\n * @example\n * ```typescript\n * // In a component\n * meshRef = viewChild<ElementRef<Mesh>>('mesh');\n *\n * boxHelper = helper(\n * () => this.meshRef(),\n * () => BoxHelper,\n * { args: () => ['red'] }\n * );\n * ```\n */\nexport function helper<\n\tTConstructor extends new (...args: any[]) => THREE.Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<THREE.Object3D> | THREE.Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(helper, injector, () => {\n\t\tconst store = injectStore();\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst scene = store.scene();\n\n\t\t\tscene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tscene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tbeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n/**\n * @deprecated Use `helper` function instead. Will be removed in v5.0.0.\n * @since v4.0.0\n */\nexport const injectHelper = helper;\n\n/**\n * A component wrapper for attaching Three.js helper objects to their parent mesh.\n * Automatically detects the parent object and creates the specified helper type.\n *\n * @example\n * ```html\n * <ngt-mesh>\n * <ngt-box-geometry />\n * <ngt-mesh-basic-material />\n * <ngts-helper [type]=\"BoxHelper\" [options]=\"['royalblue']\" />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => THREE.Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<THREE.Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst instanceState = getInstanceState(helper);\n\t\tif (!instanceState) return;\n\t\treturn instanceState.parent() as unknown as THREE.Object3D;\n\t});\n\n\thelper = helper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry } from 'three';\n\n/**\n * Configuration options for the NgtsPrismGeometry component.\n * Extends Three.js ExtrudeGeometryOptions but replaces 'depth' with 'height'.\n */\nexport interface NgtsPrismGeometryOptions extends Omit<THREE.ExtrudeGeometryOptions, 'depth'> {\n\t/**\n\t * Height of the prism extrusion.\n\t * @default 1\n\t */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n/**\n * A component that creates a prism geometry by extruding a shape defined by vertices.\n * Useful for creating custom prismatic shapes like triangular prisms, hexagonal prisms, etc.\n *\n * @example\n * ```html\n * <!-- Triangular prism -->\n * <ngt-mesh>\n * <ngts-prism-geometry\n * [vertices]=\"[[0, 1], [-1, -1], [1, -1]]\"\n * [options]=\"{ height: 2 }\"\n * />\n * <ngt-mesh-standard-material />\n * </ngt-mesh>\n * ```\n */\n@Component({\n\tselector: 'ngts-prism-geometry',\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\t/**\n\t * Defines how the geometry attaches to its parent.\n\t * @default 'geometry'\n\t */\n\tattach = input<NgtAttachable>('geometry');\n\n\t/**\n\t * Array of 2D vertices defining the base shape of the prism.\n\t * Accepts Vector2 instances or [x, y] tuples.\n\t */\n\tvertices = input.required<Array<THREE.Vector2 | [number, number]>>();\n\n\t/**\n\t * Configuration options for the prism geometry.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tprotected shape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) =>\n\t\t\tis.three<THREE.Vector2>(v, 'isVector2') ? v : new THREE.Vector2(...v),\n\t\t);\n\t\treturn new THREE.Shape(interpolatedVertices);\n\t});\n\n\t/**\n\t * Reference to the underlying ExtrudeGeometry Three.js object.\n\t */\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\n/**\n * Configuration options for the NgtsQuadraticBezierLine component.\n * Extends NgtsLineOptions but replaces boolean 'segments' with a number for curve resolution.\n */\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\t/**\n\t * Number of segments used to approximate the quadratic bezier curve.\n\t * Higher values produce smoother curves.\n\t * @default 20\n\t */\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n/**\n * A component for rendering quadratic bezier curves as lines.\n * Creates smooth curves between start and end points with an optional control point.\n *\n * @example\n * ```html\n * <ngts-quadratic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[2, 2, 0]\"\n * [options]=\"{ color: 'blue', lineWidth: 2 }\"\n * />\n * ```\n *\n * @example\n * ```html\n * <!-- With custom midpoint control -->\n * <ngts-quadratic-bezier-line\n * [start]=\"[0, 0, 0]\"\n * [end]=\"[2, 0, 0]\"\n * [mid]=\"[1, 2, 0]\"\n * [options]=\"{ segments: 50 }\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\t/**\n\t * Starting point of the bezier curve.\n\t * @default [0, 0, 0]\n\t */\n\tstart = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\n\t/**\n\t * Ending point of the bezier curve.\n\t * @default [0, 0, 0]\n\t */\n\tend = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\n\t/**\n\t * Control point for the quadratic bezier curve.\n\t * If not provided, automatically calculated based on start and end points.\n\t */\n\tmid = input<THREE.Vector3 | [number, number, number]>();\n\n\t/**\n\t * Configuration options for the line appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\t/**\n\t * Reference to the underlying NgtsLine component.\n\t */\n\tline = viewChild.required(NgtsLine);\n\n\tprotected points = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new THREE.QuadraticBezierCurve3();\n\n\t/**\n\t * Imperatively updates the bezier curve points.\n\t * Useful for animations or dynamic updates without triggering full re-renders.\n\t *\n\t * @param start - Starting point of the curve\n\t * @param end - Ending point of the curve\n\t * @param mid - Optional control point for the curve\n\t */\n\tsetPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (is.three<THREE.Vector3>(start, 'isVector3')) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(end, 'isVector3')) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(mid, 'isVector3')) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new THREE.Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtObjectEvents, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry, Mesh } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\n/**\n * Creates a rounded rectangle shape for extrusion.\n *\n * @param width - Width of the rectangle\n * @param height - Height of the rectangle\n * @param radius0 - Corner radius\n * @returns A THREE.Shape representing the rounded rectangle\n */\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new THREE.Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\n/**\n * Configuration options for the NgtsRoundedBox component.\n */\nexport interface NgtsRoundedBoxOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\t/**\n\t * Width of the box (X-axis).\n\t * @default 1\n\t */\n\twidth: number;\n\t/**\n\t * Height of the box (Y-axis).\n\t * @default 1\n\t */\n\theight: number;\n\t/**\n\t * Depth of the box (Z-axis).\n\t * @default 1\n\t */\n\tdepth: number;\n\t/**\n\t * Radius of the rounded corners.\n\t * @default 0.05\n\t */\n\tradius: number;\n\t/**\n\t * Number of curve segments for corner smoothness.\n\t * @default 4\n\t */\n\tsmoothness: number;\n\t/**\n\t * Number of bevel segments.\n\t * @default 4\n\t */\n\tbevelSegments: number;\n\t/**\n\t * Number of extrusion steps.\n\t * @default 1\n\t */\n\tsteps: number;\n\t/**\n\t * Angle threshold for creased normals calculation (in radians).\n\t * @default 0.4\n\t */\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n/**\n * A component that renders a box with rounded edges.\n * Creates smooth, beveled corners on all edges of the box.\n *\n * @example\n * ```html\n * <ngts-rounded-box [options]=\"{ width: 2, height: 1, depth: 1, radius: 0.1 }\">\n * <ngt-mesh-standard-material color=\"orange\" />\n * </ngts-rounded-box>\n * ```\n *\n * @example\n * ```html\n * <!-- With higher smoothness for smoother corners -->\n * <ngts-rounded-box\n * [options]=\"{ width: 1, height: 1, depth: 1, radius: 0.2, smoothness: 8 }\"\n * (click)=\"onClick($event)\"\n * >\n * <ngt-mesh-basic-material color=\"blue\" />\n * </ngts-rounded-box>\n * ```\n */\n@Component({\n\tselector: 'ngts-rounded-box',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), geometryParameters()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\t/**\n\t * Configuration options for the rounded box dimensions and appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\t/**\n\t * Reference to the underlying Mesh Three.js object.\n\t */\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\t/**\n\t * Reference to the underlying ExtrudeGeometry Three.js object.\n\t */\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected geometryParameters = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\t\tobjectEvents.events.set(this.meshRef);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtObjectEvents, NgtThreeElements, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\n/**\n * Configuration options for the NgtsText component.\n * Uses troika-three-text for high-quality SDF text rendering.\n */\nexport interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\t/**\n\t * Characters to pre-render for the font. Improves performance for known character sets.\n\t */\n\tcharacters?: string;\n\t/**\n\t * Color of the text.\n\t */\n\tcolor?: THREE.ColorRepresentation;\n\t/**\n\t * Font size in world units.\n\t * @default 1\n\t */\n\tfontSize: number;\n\t/**\n\t * Font weight (numeric or string like 'bold').\n\t */\n\tfontWeight?: number | string;\n\t/**\n\t * Font style.\n\t */\n\tfontStyle?: 'italic' | 'normal';\n\t/**\n\t * Maximum width for text wrapping in world units.\n\t */\n\tmaxWidth?: number;\n\t/**\n\t * Line height multiplier.\n\t */\n\tlineHeight?: number;\n\t/**\n\t * Letter spacing in world units.\n\t */\n\tletterSpacing?: number;\n\t/**\n\t * Text alignment within the bounding box.\n\t */\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\t/**\n\t * URL to the font file (supports .ttf, .otf, .woff).\n\t */\n\tfont?: string;\n\t/**\n\t * Horizontal anchor point for positioning.\n\t * @default 'center'\n\t */\n\tanchorX: number | 'left' | 'center' | 'right';\n\t/**\n\t * Vertical anchor point for positioning.\n\t * @default 'middle'\n\t */\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\t/**\n\t * Clipping rectangle [minX, minY, maxX, maxY].\n\t */\n\tclipRect?: [number, number, number, number];\n\t/**\n\t * Depth offset for z-fighting prevention.\n\t */\n\tdepthOffset?: number;\n\t/**\n\t * Text direction for bidirectional text.\n\t */\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\t/**\n\t * How to handle text overflow and wrapping.\n\t */\n\toverflowWrap?: 'normal' | 'break-word';\n\t/**\n\t * Whitespace handling mode.\n\t */\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\t/**\n\t * Width of the text outline.\n\t */\n\toutlineWidth?: number | string;\n\t/**\n\t * Horizontal offset for the outline.\n\t */\n\toutlineOffsetX?: number | string;\n\t/**\n\t * Vertical offset for the outline.\n\t */\n\toutlineOffsetY?: number | string;\n\t/**\n\t * Blur radius for the outline.\n\t */\n\toutlineBlur?: number | string;\n\t/**\n\t * Color of the text outline.\n\t */\n\toutlineColor?: THREE.ColorRepresentation;\n\t/**\n\t * Opacity of the text outline (0-1).\n\t */\n\toutlineOpacity?: number;\n\t/**\n\t * Width of the text stroke.\n\t */\n\tstrokeWidth?: number | string;\n\t/**\n\t * Color of the text stroke.\n\t */\n\tstrokeColor?: THREE.ColorRepresentation;\n\t/**\n\t * Opacity of the text stroke (0-1).\n\t */\n\tstrokeOpacity?: number;\n\t/**\n\t * Opacity of the text fill (0-1).\n\t */\n\tfillOpacity?: number;\n\t/**\n\t * Size of the SDF glyph texture. Higher values improve quality but use more memory.\n\t * @default 64\n\t */\n\tsdfGlyphSize: number;\n\t/**\n\t * Enable debug visualization of the SDF texture.\n\t */\n\tdebugSDF?: boolean;\n\t/**\n\t * Detail level for glyph geometry.\n\t */\n\tglyphGeometryDetail?: number;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n/**\n * A component for rendering high-quality 2D text in 3D scenes using troika-three-text.\n * Supports SDF (Signed Distance Field) rendering for crisp text at any scale.\n *\n * @example\n * ```html\n * <ngts-text text=\"Hello World\" [options]=\"{ fontSize: 0.5, color: 'white' }\" />\n * ```\n *\n * @example\n * ```html\n * <!-- With custom font and styling -->\n * <ngts-text\n * text=\"Custom Font\"\n * [options]=\"{\n * font: '/fonts/roboto.woff',\n * fontSize: 1,\n * color: '#ff0000',\n * outlineWidth: 0.02,\n * outlineColor: 'black'\n * }\"\n * (synced)=\"onTextReady($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-text',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t#textPrimitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsText {\n\t/**\n\t * The text string to render.\n\t */\n\ttext = input.required<string>();\n\n\t/**\n\t * Configuration options for text appearance and behavior.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\t/**\n\t * Emitted when the text has been synced and is ready for rendering.\n\t * Returns the Troika Text mesh instance.\n\t */\n\tsynced = output<Text>();\n\n\tprivate objectEvents = inject(NgtObjectEvents, { host: true });\n\tprivate store = injectStore();\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tprotected font = pick(this.options, 'font');\n\tprotected anchorX = pick(this.options, 'anchorX');\n\tprotected anchorY = pick(this.options, 'anchorY');\n\tprotected sdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tprotected fontSize = pick(this.options, 'fontSize');\n\n\t/**\n\t * The underlying Troika Text mesh instance.\n\t */\n\ttroikaMesh = new Text();\n\n\t// TODO: (chau) we currently need to use this with NgtObjectEvents\n\t// to make sure `ngt-primitive` is instantitated before `injectObjectEvents`\n\tprivate textPrimitiveRef = viewChild<ElementRef<Text>>('textPrimitive');\n\tprivate textPrimitive = computed(() => this.textPrimitiveRef()?.nativeElement);\n\n\tconstructor() {\n\t\tthis.objectEvents.events.set(this.textPrimitive);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.store.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElement, NgtThreeElements, omit, pick } from 'angular-three';\nimport { fontResource, type NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\n/**\n * Configuration options for the NgtsText3D component.\n * Controls the geometry generation for 3D extruded text.\n */\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\t/**\n\t * Number of bevel segments for smoother beveled edges.\n\t * @default 4\n\t */\n\tbevelSegments: number;\n\t/**\n\t * Threshold for merging vertices to create smooth normals.\n\t * When set, vertices closer than this value are merged.\n\t */\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n/**\n * A component for rendering 3D extruded text geometry.\n * Creates text with depth using Three.js TextGeometry with support for beveling and smooth normals.\n *\n * @example\n * ```html\n * <ngts-text-3d\n * font=\"/fonts/helvetiker_regular.typeface.json\"\n * text=\"Hello\"\n * [options]=\"{ size: 0.5, height: 0.2 }\"\n * >\n * <ngt-mesh-standard-material color=\"gold\" />\n * </ngts-text-3d>\n * ```\n *\n * @example\n * ```html\n * <!-- With beveling and smooth normals -->\n * <ngts-text-3d\n * font=\"/fonts/font.json\"\n * text=\"3D Text\"\n * [options]=\"{\n * size: 1,\n * height: 0.5,\n * bevelEnabled: true,\n * bevelSize: 0.02,\n * smooth: 0.01\n * }\"\n * >\n * <ngt-mesh-normal-material />\n * </ngts-text-3d>\n * ```\n */\n@Component({\n\tselector: 'ngts-text-3d,ngts-text-3D',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\t/**\n\t * Font source for the text. Can be a URL to a typeface.json file or a preloaded font object.\n\t */\n\tfont = input.required<NgtsFontInput>();\n\n\t/**\n\t * The text string to render as 3D geometry.\n\t */\n\ttext = input.required<string>();\n\n\t/**\n\t * Configuration options for the 3D text appearance.\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\t/**\n\t * Reference to the underlying Mesh Three.js object.\n\t */\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tprivate loadedFont = fontResource(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\tprotected textArgs = computed(() => {\n\t\tconst font = this.loadedFont.value();\n\t\tif (!font) return null;\n\n\t\tconst [text, textOptions] = [this.text(), this.textOptions()];\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Type definition for the TextGeometry Three.js element.\n */\nexport type NgtTextGeometry = NgtThreeElement<typeof TextGeometry>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-extrude-geometry\n\t\t * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing\n\t\t */\n\t\t'ngt-text-geometry': NgtTextGeometry;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|