angular-three-plugin 4.0.0-next.99 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -6
- package/package.json +3 -3
- package/src/generators/aux/aux.d.ts +21 -0
- package/src/generators/aux/aux.js +22 -0
- package/src/generators/aux/aux.js.map +1 -1
- package/src/generators/gltf/files/__fileName__.ts__tmpl__ +17 -15
- package/src/generators/gltf/generate-ngt.d.ts +45 -3
- package/src/generators/gltf/generate-ngt.js +45 -3
- package/src/generators/gltf/generate-ngt.js.map +1 -1
- package/src/generators/gltf/gltf.d.ts +50 -0
- package/src/generators/gltf/gltf.js +28 -0
- package/src/generators/gltf/gltf.js.map +1 -1
- package/src/generators/init/files/scene-graph.ts__tmpl__ +2 -2
- package/src/generators/init/init.d.ts +24 -0
- package/src/generators/init/init.js +20 -1
- package/src/generators/init/init.js.map +1 -1
- package/src/generators/init/schema.json +1 -1
- package/src/generators/init/utils.d.ts +22 -0
- package/src/generators/init/utils.js +22 -0
- package/src/generators/init/utils.js.map +1 -1
- package/src/generators/migrate-tweakpane/migrate-tweakpane.d.ts +20 -0
- package/src/generators/migrate-tweakpane/migrate-tweakpane.js +22 -0
- package/src/generators/migrate-tweakpane/migrate-tweakpane.js.map +1 -1
- package/src/utils.d.ts +7 -0
- package/src/utils.js +7 -0
- package/src/utils.js.map +1 -1
- package/src/versions.d.ts +12 -4
- package/src/versions.js +36 -21
- package/src/versions.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,87 @@
|
|
|
1
|
-
# plugin
|
|
1
|
+
# `angular-three-plugin`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Nx plugin for Angular Three providing generators and utilities for 3D application development.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Documentation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
All public APIs are documented with JSDoc comments. Your IDE will provide inline documentation, parameter hints, and examples as you code.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### Official Documentation
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Please visit [Angular Three Documentation](https://angularthree.netlify.app)
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -D angular-three-plugin
|
|
17
|
+
# yarn add -D angular-three-plugin
|
|
18
|
+
# pnpm add -D angular-three-plugin
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Generators
|
|
22
|
+
|
|
23
|
+
### `init`
|
|
24
|
+
|
|
25
|
+
Initializes Angular Three in your application. This generator:
|
|
26
|
+
|
|
27
|
+
- Installs `angular-three`, `three`, `@types/three`, and `ngxtension`
|
|
28
|
+
- Enables `skipLibCheck` in tsconfig for Three.js compatibility
|
|
29
|
+
- Adds `provideNgtRenderer()` to your application providers
|
|
30
|
+
- Optionally generates a starter SceneGraph component
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
nx g angular-three-plugin:init
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Options:
|
|
37
|
+
|
|
38
|
+
| Option | Description | Default |
|
|
39
|
+
| ------------ | ---------------------------------------- | ----------------- |
|
|
40
|
+
| `sceneGraph` | How to generate the SceneGraph component | `'generate-only'` |
|
|
41
|
+
|
|
42
|
+
SceneGraph options:
|
|
43
|
+
|
|
44
|
+
- `append` - Append to parent component template
|
|
45
|
+
- `replace` - Replace parent component template
|
|
46
|
+
- `generate-only` - Generate component but don't modify template
|
|
47
|
+
- `none` - Don't generate a SceneGraph component
|
|
48
|
+
|
|
49
|
+
### `aux`
|
|
50
|
+
|
|
51
|
+
Adds auxiliary Angular Three packages to your project:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
nx g angular-three-plugin:aux
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Available packages:
|
|
58
|
+
|
|
59
|
+
- `angular-three-soba` - Utilities and abstractions
|
|
60
|
+
- `angular-three-rapier` - Rapier physics engine
|
|
61
|
+
- `angular-three-postprocessing` - Post-processing effects
|
|
62
|
+
- `angular-three-cannon` - Cannon.js physics engine
|
|
63
|
+
- `angular-three-tweakpane` - Tweakpane UI controls
|
|
64
|
+
- `angular-three-theatre` - Theatre.js animation toolkit
|
|
65
|
+
|
|
66
|
+
### `gltf`
|
|
67
|
+
|
|
68
|
+
Generates an Angular component from a GLTF/GLB 3D model:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
nx g angular-three-plugin:gltf --modelPath=src/assets/model.glb --output=src/app/model.ts
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Options:
|
|
75
|
+
|
|
76
|
+
| Option | Description | Default |
|
|
77
|
+
| ---------------- | --------------------------------------- | --------- |
|
|
78
|
+
| `modelPath` | Path to GLTF/GLB model | Required |
|
|
79
|
+
| `output` | Output path for generated component | Required |
|
|
80
|
+
| `className` | Component class name | `'Model'` |
|
|
81
|
+
| `selectorPrefix` | Component selector prefix | `'app'` |
|
|
82
|
+
| `draco` | Use DracoLoader for compressed models | `null` |
|
|
83
|
+
| `shadows` | Enable shadow casting/receiving | `false` |
|
|
84
|
+
| `transform` | Transform meshes via gltf-transform | `false` |
|
|
85
|
+
| `instance` | Instance re-occurring geometry | `false` |
|
|
86
|
+
| `bones` | Layout bones declaratively | `false` |
|
|
87
|
+
| `console` | Print output to console instead of file | `false` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-plugin",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@nx/devkit": "^
|
|
22
|
+
"@nx/devkit": "^21.0.0",
|
|
23
23
|
"@rosskevin/gltfjsx": "^7.0.0",
|
|
24
24
|
"node-three-gltf": "^2.0.0",
|
|
25
|
-
"nx": "^
|
|
25
|
+
"nx": "^21.0.0",
|
|
26
26
|
"ts-morph": "^25.0.0",
|
|
27
27
|
"tslib": "^2.3.0"
|
|
28
28
|
},
|
|
@@ -1,3 +1,24 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Adds auxiliary Angular Three packages to an existing Angular Three project.
|
|
4
|
+
*
|
|
5
|
+
* This generator allows you to add optional packages like:
|
|
6
|
+
* - angular-three-soba: Utilities and abstractions for 3D scenes
|
|
7
|
+
* - angular-three-rapier: Rapier physics engine integration
|
|
8
|
+
* - angular-three-postprocessing: Post-processing effects
|
|
9
|
+
* - angular-three-cannon: Cannon.js physics engine integration
|
|
10
|
+
* - angular-three-tweakpane: Tweakpane UI controls
|
|
11
|
+
* - angular-three-theatre: Theatre.js animation toolkit
|
|
12
|
+
*
|
|
13
|
+
* Each package is installed with its required peer dependencies.
|
|
14
|
+
*
|
|
15
|
+
* @param tree - The Nx virtual file system tree
|
|
16
|
+
* @returns A function that triggers package installation, or void if no packages selected
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```bash
|
|
20
|
+
* nx g angular-three-plugin:aux
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
2
23
|
export declare function auxGenerator(tree: Tree): Promise<() => void>;
|
|
3
24
|
export default auxGenerator;
|
|
@@ -5,6 +5,27 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const enquirer_1 = require("enquirer");
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
7
|
const versions_1 = require("../../versions");
|
|
8
|
+
/**
|
|
9
|
+
* Adds auxiliary Angular Three packages to an existing Angular Three project.
|
|
10
|
+
*
|
|
11
|
+
* This generator allows you to add optional packages like:
|
|
12
|
+
* - angular-three-soba: Utilities and abstractions for 3D scenes
|
|
13
|
+
* - angular-three-rapier: Rapier physics engine integration
|
|
14
|
+
* - angular-three-postprocessing: Post-processing effects
|
|
15
|
+
* - angular-three-cannon: Cannon.js physics engine integration
|
|
16
|
+
* - angular-three-tweakpane: Tweakpane UI controls
|
|
17
|
+
* - angular-three-theatre: Theatre.js animation toolkit
|
|
18
|
+
*
|
|
19
|
+
* Each package is installed with its required peer dependencies.
|
|
20
|
+
*
|
|
21
|
+
* @param tree - The Nx virtual file system tree
|
|
22
|
+
* @returns A function that triggers package installation, or void if no packages selected
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```bash
|
|
26
|
+
* nx g angular-three-plugin:aux
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
8
29
|
async function auxGenerator(tree) {
|
|
9
30
|
devkit_1.logger.info('[NGT] Initialize auxiliary packages');
|
|
10
31
|
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
@@ -27,6 +48,7 @@ async function auxGenerator(tree) {
|
|
|
27
48
|
'angular-three-postprocessing',
|
|
28
49
|
'angular-three-cannon',
|
|
29
50
|
'angular-three-tweakpane',
|
|
51
|
+
'angular-three-theatre',
|
|
30
52
|
],
|
|
31
53
|
});
|
|
32
54
|
const packagesToAdd = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aux.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/aux/aux.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"aux.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/aux/aux.ts"],"names":[],"mappings":";;AA0BA,oCAiEC;AA3FD,uCAAoH;AACpH,uCAAkC;AAClC,uCAA8C;AAC9C,6CAAmD;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,YAAY,CAAC,IAAU;IAC5C,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,eAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO;IACR,CAAC;IAED,MAAM,UAAU,GACf,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAErG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO;IACR,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,iBAAM,EAAyB;QACzD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE;YACR,oBAAoB;YACpB,sBAAsB;YACtB,8BAA8B;YAC9B,sBAAsB;YACtB,yBAAyB;YACzB,uBAAuB;SACvB;KACD,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1F,IAAI,KAAK,EAAE,CAAC;YACX,eAAM,CAAC,IAAI,CAAC,SAAS,GAAG,iCAAiC,CAAC,CAAC;YAC3D,SAAS;QACV,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAEhC,IAAI,4BAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,OAAO,IAAI,4BAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,aAAa,CAAC,OAAO,CAAC,GAAG,4BAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAED,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YAClC,IAAA,uBAAe,EAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO;IACR,CAAC;IAED,IAAA,qCAA4B,EAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAExB,OAAO,GAAG,EAAE;QACX,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;AACH,CAAC;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
import type * as THREE from 'three';
|
|
9
9
|
import { Group<%= threeImports %> } from 'three';
|
|
10
|
-
import { extend, type NgtThreeElements, NgtObjectEvents<% if (args) { %>, NgtArgs<% } %> } from 'angular-three';
|
|
11
|
-
import { Component, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, ElementRef, inject
|
|
12
|
-
import {
|
|
10
|
+
import { extend, type NgtThreeElements, NgtElementEvents, NgtObjectEvents<% if (args) { %>, NgtArgs<% } %> } from 'angular-three';
|
|
11
|
+
import { Component, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, ElementRef, inject<% if (animations.length) { %>, effect, model<% } %> } from '@angular/core';
|
|
12
|
+
import { gltfResource } from 'angular-three-soba/loaders';
|
|
13
13
|
import type { GLTF } from 'three-stdlib';<% if (animations.length) { %>
|
|
14
|
-
import {
|
|
14
|
+
import { animations, type NgtsAnimationClips, type NgtsAnimationApi } from 'angular-three-soba/misc';<% } %><% if (perspective) { %>
|
|
15
15
|
import { NgtsPerspectiveCamera } from 'angular-three-soba/cameras';<% } %><% if (orthographic) { %>
|
|
16
16
|
import { NgtsOrthographicCamera } from 'angular-three-soba/cameras';<% } %>
|
|
17
17
|
<% if (useImportAttribute) { %>
|
|
@@ -19,7 +19,7 @@ import { NgtsOrthographicCamera } from 'angular-three-soba/cameras';<% } %>
|
|
|
19
19
|
import <%= gltfName %> from '<%= gltfPath %>' with { loader: 'file' };
|
|
20
20
|
<% } %>
|
|
21
21
|
<% if (preload) { %>
|
|
22
|
-
|
|
22
|
+
gltfResource.preload(<% if (useImportAttribute) { %><%= gltfName %><% } else { %>'<%= gltfPath %>'<% } %>);
|
|
23
23
|
<% } %>
|
|
24
24
|
<% if (animations.length) { %>
|
|
25
25
|
type ActionName = <% animations.map(clip => "\""+ clip.name + "\"").join(" | ") %>;
|
|
@@ -40,7 +40,7 @@ export type <%= gltfResultTypeName %> = GLTF & {
|
|
|
40
40
|
@Component({
|
|
41
41
|
selector: '<%= selector %>',
|
|
42
42
|
template: `
|
|
43
|
-
@if (gltf(); as gltf) {
|
|
43
|
+
@if (gltf.value(); as gltf) {
|
|
44
44
|
@let nodes = gltf.nodes;
|
|
45
45
|
@let materials = gltf.materials;
|
|
46
46
|
|
|
@@ -58,6 +58,10 @@ export type <%= gltfResultTypeName %> = GLTF & {
|
|
|
58
58
|
directive: NgtObjectEvents,
|
|
59
59
|
outputs: ['click', 'dblclick', 'contextmenu', 'pointerup', 'pointerdown', 'pointerover', 'pointerout', 'pointerenter', 'pointerleave', 'pointermove', 'pointermissed', 'pointercancel', 'wheel'],
|
|
60
60
|
},
|
|
61
|
+
{
|
|
62
|
+
directive: NgtElementEvents,
|
|
63
|
+
outputs: ['attached', 'updated', 'created', 'disposed']
|
|
64
|
+
}
|
|
61
65
|
],<% if (angularImports.length) { %>
|
|
62
66
|
imports: [<% angularImports.join(', ') %>]<% } %>
|
|
63
67
|
})
|
|
@@ -69,25 +73,23 @@ export class <%= className %> {
|
|
|
69
73
|
|
|
70
74
|
modelRef = viewChild<ElementRef<Group>>('model');
|
|
71
75
|
|
|
72
|
-
protected gltf =
|
|
76
|
+
protected gltf = gltfResource<<%= gltfResultTypeName %>>(() => <% if (useImportAttribute) { %> <%= gltfName %> <% } else { %> '<%= url %>' <% } %><% if (gltfOptions) { %>, <%= gltfOptions %><% } %>);
|
|
73
77
|
|
|
74
78
|
constructor() {
|
|
75
79
|
extend({ Group<%= threeImports %> });
|
|
76
80
|
|
|
77
81
|
<% if (animations.length) { %>
|
|
78
|
-
const
|
|
82
|
+
const _animations = animations(this.gltf, this.modelRef);
|
|
79
83
|
effect(() => {
|
|
80
|
-
if (!
|
|
81
|
-
this.animations.set(
|
|
84
|
+
if (!_animations.isReady) return;
|
|
85
|
+
this.animations.set(_animations);
|
|
82
86
|
});
|
|
83
87
|
<% } %>
|
|
84
88
|
|
|
85
89
|
const objectEvents = inject(NgtObjectEvents, { host: true });
|
|
86
|
-
|
|
87
|
-
const model = this.modelRef()?.nativeElement;
|
|
88
|
-
if (!model) return;
|
|
90
|
+
const elementEvents = inject(NgtElementEvents, { host: true });
|
|
89
91
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
objectEvents.events.set(this.modelRef);
|
|
93
|
+
elementEvents.events.set(this.modelRef);
|
|
92
94
|
}
|
|
93
95
|
}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import type { GltfGeneratorSchema } from './gltf';
|
|
2
|
+
/**
|
|
3
|
+
* Generates Angular Three template code from an analyzed GLTF model.
|
|
4
|
+
*
|
|
5
|
+
* This class traverses the GLTF scene graph and produces Angular template
|
|
6
|
+
* syntax with proper ngt-* elements, input bindings, and type information.
|
|
7
|
+
*/
|
|
2
8
|
export declare class GenerateNGT {
|
|
3
9
|
private analyzedGLTF;
|
|
4
10
|
private gltfjsxAPI;
|
|
5
11
|
private options;
|
|
12
|
+
/** Set of Three.js types used in the model, for generating imports */
|
|
6
13
|
ngtTypes: Set<string>;
|
|
14
|
+
/** Whether NgtArgs directive is needed (for primitives, bones, etc.) */
|
|
7
15
|
args: boolean;
|
|
8
16
|
constructor(analyzedGLTF: import('@rosskevin/gltfjsx').AnalyzedGLTF, gltfjsxAPI: typeof import('@rosskevin/gltfjsx'), options: GltfGeneratorSchema);
|
|
17
|
+
/**
|
|
18
|
+
* Generates the Angular template content for the GLTF scene.
|
|
19
|
+
*
|
|
20
|
+
* @returns Template string containing ngt-* elements for all scene children
|
|
21
|
+
*/
|
|
9
22
|
generate(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Collects and returns options needed for the template file generation.
|
|
25
|
+
*
|
|
26
|
+
* @returns Object containing imports, type definitions, and feature flags
|
|
27
|
+
*/
|
|
10
28
|
getGenerateOptions(): {
|
|
11
29
|
animations: import("three").AnimationClip[];
|
|
12
30
|
extras: string;
|
|
@@ -19,14 +37,38 @@ export declare class GenerateNGT {
|
|
|
19
37
|
materialsTypes: string;
|
|
20
38
|
angularImports: any[];
|
|
21
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* Filters ngtTypes to only include types that need explicit imports.
|
|
42
|
+
* Excludes Group (always top-level), cameras (use ngts-* components), Bone, and Object3D.
|
|
43
|
+
*/
|
|
22
44
|
private get ngtTypesArr();
|
|
45
|
+
/**
|
|
46
|
+
* Recursively prints an Object3D and its children as Angular template elements.
|
|
47
|
+
*
|
|
48
|
+
* @param obj - The Three.js Object3D to convert
|
|
49
|
+
* @returns Template string for this object and its descendants
|
|
50
|
+
*/
|
|
23
51
|
private print;
|
|
52
|
+
/**
|
|
53
|
+
* Converts Object3D properties to Angular input binding syntax.
|
|
54
|
+
*
|
|
55
|
+
* @param obj - The Object3D to extract properties from
|
|
56
|
+
* @param skipName - Whether to skip the name property
|
|
57
|
+
* @returns String of Angular input bindings (e.g., '[position]="..." [rotation]="..."')
|
|
58
|
+
*/
|
|
24
59
|
private handleAngularInputs;
|
|
60
|
+
/**
|
|
61
|
+
* Determines the type name for an Object3D, handling special cases.
|
|
62
|
+
*
|
|
63
|
+
* @param obj - The Object3D to get the type for
|
|
64
|
+
* @returns Lowercase type name (e.g., 'mesh', 'group', 'PerspectiveCamera')
|
|
65
|
+
*/
|
|
25
66
|
private getType;
|
|
26
67
|
/**
|
|
27
|
-
* Transforms a type
|
|
28
|
-
*
|
|
29
|
-
* @
|
|
68
|
+
* Transforms a type name into its Angular Three element selector.
|
|
69
|
+
*
|
|
70
|
+
* @param type - The type name (e.g., 'mesh', 'perspectiveCamera')
|
|
71
|
+
* @returns The Angular Three element selector (e.g., 'ngt-mesh', 'ngts-perspective-camera')
|
|
30
72
|
*/
|
|
31
73
|
private getAngularThreeElement;
|
|
32
74
|
}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GenerateNGT = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generates Angular Three template code from an analyzed GLTF model.
|
|
6
|
+
*
|
|
7
|
+
* This class traverses the GLTF scene graph and produces Angular template
|
|
8
|
+
* syntax with proper ngt-* elements, input bindings, and type information.
|
|
9
|
+
*/
|
|
4
10
|
class GenerateNGT {
|
|
5
11
|
analyzedGLTF;
|
|
6
12
|
gltfjsxAPI;
|
|
7
13
|
options;
|
|
14
|
+
/** Set of Three.js types used in the model, for generating imports */
|
|
8
15
|
ngtTypes = new Set();
|
|
16
|
+
/** Whether NgtArgs directive is needed (for primitives, bones, etc.) */
|
|
9
17
|
args = false;
|
|
10
18
|
constructor(
|
|
11
19
|
// @ts-expect-error - type only import
|
|
@@ -16,9 +24,19 @@ class GenerateNGT {
|
|
|
16
24
|
this.gltfjsxAPI = gltfjsxAPI;
|
|
17
25
|
this.options = options;
|
|
18
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Generates the Angular template content for the GLTF scene.
|
|
29
|
+
*
|
|
30
|
+
* @returns Template string containing ngt-* elements for all scene children
|
|
31
|
+
*/
|
|
19
32
|
generate() {
|
|
20
33
|
return this.analyzedGLTF.gltf.scene.children.map((child) => this.print(child)).join('\n');
|
|
21
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Collects and returns options needed for the template file generation.
|
|
37
|
+
*
|
|
38
|
+
* @returns Object containing imports, type definitions, and feature flags
|
|
39
|
+
*/
|
|
22
40
|
getGenerateOptions() {
|
|
23
41
|
const perspective = this.ngtTypes.has('PerspectiveCamera');
|
|
24
42
|
const orthographic = this.ngtTypes.has('OrthographicCamera');
|
|
@@ -64,6 +82,10 @@ class GenerateNGT {
|
|
|
64
82
|
angularImports,
|
|
65
83
|
};
|
|
66
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Filters ngtTypes to only include types that need explicit imports.
|
|
87
|
+
* Excludes Group (always top-level), cameras (use ngts-* components), Bone, and Object3D.
|
|
88
|
+
*/
|
|
67
89
|
get ngtTypesArr() {
|
|
68
90
|
return Array.from(this.ngtTypes).filter((t) =>
|
|
69
91
|
// group always is the top-level object
|
|
@@ -77,6 +99,12 @@ class GenerateNGT {
|
|
|
77
99
|
// we don't render ngt-object3D
|
|
78
100
|
t !== 'Object3D');
|
|
79
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Recursively prints an Object3D and its children as Angular template elements.
|
|
104
|
+
*
|
|
105
|
+
* @param obj - The Three.js Object3D to convert
|
|
106
|
+
* @returns Template string for this object and its descendants
|
|
107
|
+
*/
|
|
80
108
|
print(obj) {
|
|
81
109
|
const { nodeName, isRemoved, isTargetedLight, isInstancedMesh, sanitizeName } = this.gltfjsxAPI;
|
|
82
110
|
let result = '';
|
|
@@ -140,6 +168,13 @@ class GenerateNGT {
|
|
|
140
168
|
}
|
|
141
169
|
return result;
|
|
142
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Converts Object3D properties to Angular input binding syntax.
|
|
173
|
+
*
|
|
174
|
+
* @param obj - The Object3D to extract properties from
|
|
175
|
+
* @param skipName - Whether to skip the name property
|
|
176
|
+
* @returns String of Angular input bindings (e.g., '[position]="..." [rotation]="..."')
|
|
177
|
+
*/
|
|
143
178
|
handleAngularInputs(obj, skipName = false) {
|
|
144
179
|
const properties = this.analyzedGLTF.calculateProps(obj);
|
|
145
180
|
let propertiesString = '';
|
|
@@ -160,6 +195,12 @@ class GenerateNGT {
|
|
|
160
195
|
}
|
|
161
196
|
return propertiesString;
|
|
162
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Determines the type name for an Object3D, handling special cases.
|
|
200
|
+
*
|
|
201
|
+
* @param obj - The Object3D to get the type for
|
|
202
|
+
* @returns Lowercase type name (e.g., 'mesh', 'group', 'PerspectiveCamera')
|
|
203
|
+
*/
|
|
163
204
|
getType(obj) {
|
|
164
205
|
let type = obj.type.charAt(0).toLowerCase() + obj.type.slice(1);
|
|
165
206
|
if (type === 'object3D') {
|
|
@@ -174,9 +215,10 @@ class GenerateNGT {
|
|
|
174
215
|
return type;
|
|
175
216
|
}
|
|
176
217
|
/**
|
|
177
|
-
* Transforms a type
|
|
178
|
-
*
|
|
179
|
-
* @
|
|
218
|
+
* Transforms a type name into its Angular Three element selector.
|
|
219
|
+
*
|
|
220
|
+
* @param type - The type name (e.g., 'mesh', 'perspectiveCamera')
|
|
221
|
+
* @returns The Angular Three element selector (e.g., 'ngt-mesh', 'ngts-perspective-camera')
|
|
180
222
|
*/
|
|
181
223
|
getAngularThreeElement(type) {
|
|
182
224
|
if (type === 'object3D') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-ngt.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/gltf/generate-ngt.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"generate-ngt.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/gltf/generate-ngt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,82 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Schema options for the GLTF generator.
|
|
4
|
+
*/
|
|
2
5
|
export interface GltfGeneratorSchema {
|
|
6
|
+
/** Path to the GLTF/GLB model file */
|
|
3
7
|
modelPath: string;
|
|
8
|
+
/** Output path for the generated component */
|
|
4
9
|
output: string;
|
|
10
|
+
/** Name for the generated component class */
|
|
5
11
|
className: string;
|
|
12
|
+
/** Prefix for the component selector */
|
|
6
13
|
selectorPrefix: string;
|
|
14
|
+
/** Whether to use DracoLoader for compressed models */
|
|
7
15
|
draco: boolean;
|
|
16
|
+
/** Whether to layout bones declaratively */
|
|
8
17
|
bones: boolean;
|
|
18
|
+
/** Whether to include metadata as userData */
|
|
9
19
|
meta: boolean;
|
|
20
|
+
/** Whether meshes should cast and receive shadows */
|
|
10
21
|
shadows: boolean;
|
|
22
|
+
/** Number of fractional digits for numeric values */
|
|
11
23
|
precision: number;
|
|
24
|
+
/** Whether to print output to console instead of file */
|
|
12
25
|
console: boolean;
|
|
26
|
+
/** Whether to instance re-occurring geometry */
|
|
13
27
|
instance: boolean;
|
|
28
|
+
/** Whether to instance every geometry */
|
|
14
29
|
instanceAll: boolean;
|
|
30
|
+
/** Whether to transform meshes via gltf-transform */
|
|
15
31
|
transform: boolean;
|
|
32
|
+
/** Degrade meshes via gltf-transform */
|
|
16
33
|
degrade: string;
|
|
34
|
+
/** Resolution for mesh degradation */
|
|
17
35
|
degradeResolution: number;
|
|
36
|
+
/** Resolution for texture resizing */
|
|
18
37
|
resolution: number;
|
|
38
|
+
/** Whether to keep meshes separate (don't join) */
|
|
19
39
|
keepMeshes: boolean;
|
|
40
|
+
/** Whether to keep materials separate (don't palette join) */
|
|
20
41
|
keepMaterials: boolean;
|
|
42
|
+
/** Whether to keep unused vertex attributes */
|
|
21
43
|
keepAttributes: boolean;
|
|
44
|
+
/** Whether to keep object names */
|
|
22
45
|
keepNames: boolean;
|
|
46
|
+
/** Whether to keep groups */
|
|
23
47
|
keepGroups: boolean;
|
|
48
|
+
/** Texture format for transformed models */
|
|
24
49
|
format: 'jpeg' | 'png' | 'webp' | 'avif';
|
|
50
|
+
/** Whether to simplify meshes */
|
|
25
51
|
simplify: boolean;
|
|
52
|
+
/** Simplifier ratio */
|
|
26
53
|
ratio: number;
|
|
54
|
+
/** Simplifier error threshold */
|
|
27
55
|
error: number;
|
|
56
|
+
/** Custom header to add to generated file */
|
|
28
57
|
header: string;
|
|
58
|
+
/** Whether to enable verbose logging */
|
|
29
59
|
verbose: boolean;
|
|
30
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Generates an Angular component from a GLTF/GLB 3D model file.
|
|
63
|
+
*
|
|
64
|
+
* This generator uses gltfjsx to analyze the model and creates a fully-typed
|
|
65
|
+
* Angular component with:
|
|
66
|
+
* - Proper Three.js type definitions for nodes, materials, and bones
|
|
67
|
+
* - Animation support with typed animation clips and API
|
|
68
|
+
* - Optional mesh transformation and optimization via gltf-transform
|
|
69
|
+
* - Draco compression support
|
|
70
|
+
* - Shadow casting/receiving configuration
|
|
71
|
+
*
|
|
72
|
+
* @param tree - The Nx virtual file system tree
|
|
73
|
+
* @param options - Generator options for model processing and output
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```bash
|
|
77
|
+
* nx g angular-three-plugin:gltf --modelPath=src/assets/model.glb --output=src/app/model.ts
|
|
78
|
+
* nx g angular-three-plugin:gltf path/to/model.gltf --output=src/app/model.ts --transform --shadows
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
31
81
|
export declare function gltfGenerator(tree: Tree, options: GltfGeneratorSchema): Promise<never>;
|
|
32
82
|
export default gltfGenerator;
|
|
@@ -4,6 +4,14 @@ exports.gltfGenerator = gltfGenerator;
|
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
const generate_ngt_1 = require("./generate-ngt");
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes and processes generator options into a format suitable for gltfjsx.
|
|
9
|
+
*
|
|
10
|
+
* @param tree - The Nx virtual file system tree
|
|
11
|
+
* @param options - Raw generator options
|
|
12
|
+
* @param gltfJsx - The gltfjsx library module
|
|
13
|
+
* @returns Normalized options including paths, names, and configuration objects
|
|
14
|
+
*/
|
|
7
15
|
// @ts-expect-error - type only import
|
|
8
16
|
function normalizeOptions(tree, options, gltfJsx) {
|
|
9
17
|
const { Log } = gltfJsx;
|
|
@@ -58,6 +66,26 @@ function normalizeOptions(tree, options, gltfJsx) {
|
|
|
58
66
|
gltfResultTypeName,
|
|
59
67
|
};
|
|
60
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Generates an Angular component from a GLTF/GLB 3D model file.
|
|
71
|
+
*
|
|
72
|
+
* This generator uses gltfjsx to analyze the model and creates a fully-typed
|
|
73
|
+
* Angular component with:
|
|
74
|
+
* - Proper Three.js type definitions for nodes, materials, and bones
|
|
75
|
+
* - Animation support with typed animation clips and API
|
|
76
|
+
* - Optional mesh transformation and optimization via gltf-transform
|
|
77
|
+
* - Draco compression support
|
|
78
|
+
* - Shadow casting/receiving configuration
|
|
79
|
+
*
|
|
80
|
+
* @param tree - The Nx virtual file system tree
|
|
81
|
+
* @param options - Generator options for model processing and output
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```bash
|
|
85
|
+
* nx g angular-three-plugin:gltf --modelPath=src/assets/model.glb --output=src/app/model.ts
|
|
86
|
+
* nx g angular-three-plugin:gltf path/to/model.gltf --output=src/app/model.ts --transform --shadows
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
61
89
|
async function gltfGenerator(tree, options) {
|
|
62
90
|
const gltfjsx = await import('@rosskevin/gltfjsx');
|
|
63
91
|
const { loadGLTF, AnalyzedGLTF, gltfTransform, compareFileSizes } = gltfjsx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/gltf/gltf.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"gltf.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/gltf/gltf.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CUSTOM_ELEMENTS_SCHEMA, Component, viewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { extend,
|
|
2
|
+
import { extend, beforeRender } from 'angular-three';
|
|
3
3
|
import { Mesh, BoxGeometry, MeshBasicMaterial } from 'three';
|
|
4
4
|
|
|
5
5
|
@Component({
|
|
@@ -19,7 +19,7 @@ export class SceneGraph {
|
|
|
19
19
|
constructor() {
|
|
20
20
|
extend({ Mesh, BoxGeometry, MeshBasicMaterial });
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
beforeRender(({ delta }) => {
|
|
23
23
|
const mesh = this.meshRef().nativeElement;
|
|
24
24
|
mesh.rotation.x += delta;
|
|
25
25
|
mesh.rotation.y += delta;
|
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Schema options for the init generator.
|
|
4
|
+
*/
|
|
2
5
|
export interface InitGeneratorSchema {
|
|
6
|
+
/** How to handle SceneGraph component generation */
|
|
3
7
|
sceneGraph: 'append' | 'replace' | 'generate-only' | 'none';
|
|
4
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Initializes Angular Three in an Angular application.
|
|
11
|
+
*
|
|
12
|
+
* This generator performs the following steps:
|
|
13
|
+
* 1. Installs angular-three, three, @types/three, and ngxtension dependencies
|
|
14
|
+
* 2. Enables skipLibCheck in tsconfig for Three.js compatibility
|
|
15
|
+
* 3. Adds metadata.json to VSCode settings for template IntelliSense
|
|
16
|
+
* 4. Adds provideNgtRenderer() to the application's providers
|
|
17
|
+
* 5. Optionally generates a starter SceneGraph component
|
|
18
|
+
*
|
|
19
|
+
* @param tree - The Nx virtual file system tree
|
|
20
|
+
* @param options - Generator options including sceneGraph generation mode
|
|
21
|
+
* @returns A function that triggers package installation, or void if already installed
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```bash
|
|
25
|
+
* nx g angular-three-plugin:init
|
|
26
|
+
* nx g angular-three-plugin:init --sceneGraph=append
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
5
29
|
export declare function initGenerator(tree: Tree, options: InitGeneratorSchema): Promise<() => void>;
|
|
6
30
|
export default initGenerator;
|
|
@@ -8,7 +8,26 @@ const ts_morph_1 = require("ts-morph");
|
|
|
8
8
|
const utils_1 = require("../../utils");
|
|
9
9
|
const versions_1 = require("../../versions");
|
|
10
10
|
const utils_2 = require("./utils");
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Initializes Angular Three in an Angular application.
|
|
13
|
+
*
|
|
14
|
+
* This generator performs the following steps:
|
|
15
|
+
* 1. Installs angular-three, three, @types/three, and ngxtension dependencies
|
|
16
|
+
* 2. Enables skipLibCheck in tsconfig for Three.js compatibility
|
|
17
|
+
* 3. Adds metadata.json to VSCode settings for template IntelliSense
|
|
18
|
+
* 4. Adds provideNgtRenderer() to the application's providers
|
|
19
|
+
* 5. Optionally generates a starter SceneGraph component
|
|
20
|
+
*
|
|
21
|
+
* @param tree - The Nx virtual file system tree
|
|
22
|
+
* @param options - Generator options including sceneGraph generation mode
|
|
23
|
+
* @returns A function that triggers package installation, or void if already installed
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```bash
|
|
27
|
+
* nx g angular-three-plugin:init
|
|
28
|
+
* nx g angular-three-plugin:init --sceneGraph=append
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
12
31
|
async function initGenerator(tree, options) {
|
|
13
32
|
devkit_1.logger.log('[NGT] Initializing Angular Three...');
|
|
14
33
|
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/init/init.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/init/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { ObjectLiteralExpression, SourceFile } from 'ts-morph';
|
|
3
|
+
/**
|
|
4
|
+
* Logs an error message and gracefully stops the setup process.
|
|
5
|
+
*
|
|
6
|
+
* @param tree - The Nx virtual file system tree
|
|
7
|
+
* @param message - Error message to display
|
|
8
|
+
* @returns A function that triggers package installation
|
|
9
|
+
*/
|
|
3
10
|
export declare function stopSetup(tree: Tree, message: string): Promise<() => void>;
|
|
11
|
+
/**
|
|
12
|
+
* Completes the setup process by formatting files and returning a package installation task.
|
|
13
|
+
*
|
|
14
|
+
* @param tree - The Nx virtual file system tree
|
|
15
|
+
* @returns A function that triggers package installation
|
|
16
|
+
*/
|
|
4
17
|
export declare function finishSetup(tree: Tree): Promise<() => void>;
|
|
18
|
+
/**
|
|
19
|
+
* Modifies the application config to add provideNgtRenderer() to the providers array.
|
|
20
|
+
* Handles both inline config objects and external app.config.ts files.
|
|
21
|
+
*
|
|
22
|
+
* @param tree - The Nx virtual file system tree
|
|
23
|
+
* @param config - The ObjectLiteralExpression representing the app config
|
|
24
|
+
* @param sf - The ts-morph SourceFile containing the config
|
|
25
|
+
* @returns A save promise, or a function to stop setup if providers array is invalid
|
|
26
|
+
*/
|
|
5
27
|
export declare function handleAppConfig(tree: Tree, config: ObjectLiteralExpression, sf: SourceFile): Promise<void | (() => Promise<() => void>)>;
|
|
@@ -5,16 +5,38 @@ exports.finishSetup = finishSetup;
|
|
|
5
5
|
exports.handleAppConfig = handleAppConfig;
|
|
6
6
|
const devkit_1 = require("@nx/devkit");
|
|
7
7
|
const ts_morph_1 = require("ts-morph");
|
|
8
|
+
/**
|
|
9
|
+
* Logs an error message and gracefully stops the setup process.
|
|
10
|
+
*
|
|
11
|
+
* @param tree - The Nx virtual file system tree
|
|
12
|
+
* @param message - Error message to display
|
|
13
|
+
* @returns A function that triggers package installation
|
|
14
|
+
*/
|
|
8
15
|
async function stopSetup(tree, message) {
|
|
9
16
|
devkit_1.logger.info(`[NGT] ${message}. Stopping setup`);
|
|
10
17
|
return await finishSetup(tree);
|
|
11
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Completes the setup process by formatting files and returning a package installation task.
|
|
21
|
+
*
|
|
22
|
+
* @param tree - The Nx virtual file system tree
|
|
23
|
+
* @returns A function that triggers package installation
|
|
24
|
+
*/
|
|
12
25
|
async function finishSetup(tree) {
|
|
13
26
|
await (0, devkit_1.formatFiles)(tree);
|
|
14
27
|
return () => {
|
|
15
28
|
(0, devkit_1.installPackagesTask)(tree);
|
|
16
29
|
};
|
|
17
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Modifies the application config to add provideNgtRenderer() to the providers array.
|
|
33
|
+
* Handles both inline config objects and external app.config.ts files.
|
|
34
|
+
*
|
|
35
|
+
* @param tree - The Nx virtual file system tree
|
|
36
|
+
* @param config - The ObjectLiteralExpression representing the app config
|
|
37
|
+
* @param sf - The ts-morph SourceFile containing the config
|
|
38
|
+
* @returns A save promise, or a function to stop setup if providers array is invalid
|
|
39
|
+
*/
|
|
18
40
|
async function handleAppConfig(tree, config, sf) {
|
|
19
41
|
// add angular-three/dom import
|
|
20
42
|
sf.addImportDeclaration({ moduleSpecifier: 'angular-three/dom', namedImports: ['provideNgtRenderer'] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/init/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/init/utils.ts"],"names":[],"mappings":";;AAUA,8BAGC;AAQD,kCAKC;AAWD,0CAyBC;AA9DD,uCAA4E;AAC5E,uCAAqG;AAErG;;;;;;GAMG;AACI,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAAe;IAC1D,eAAM,CAAC,IAAI,CAAC,SAAS,OAAO,kBAAkB,CAAC,CAAC;IAChD,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,WAAW,CAAC,IAAU;IAC3C,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACX,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,MAA+B,EAAE,EAAc;IAChG,+BAA+B;IAC/B,EAAE,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAExG,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAkC,EAAE;QACzF,OAAO,eAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,MAAM,CAAC,qBAAqB,CAAC;YAC5B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,wBAAwB;SACrC,CAAC,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,cAAc,GAAI,iBAAwC,CAAC,oBAAoB,CACpF,qBAAU,CAAC,sBAAsB,CACjC,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAClD,OAAO,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Schema options for the migrate-tweakpane generator.
|
|
4
|
+
*/
|
|
2
5
|
export interface MigrateTweakpaneGeneratorSchema {
|
|
6
|
+
/** Optional project name to limit migration scope */
|
|
3
7
|
project?: string;
|
|
4
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Migrates old NgtTweak* components to the new Tweakpane* naming convention.
|
|
11
|
+
*
|
|
12
|
+
* This generator performs the following replacements across all files:
|
|
13
|
+
* - `ngt-tweak*` selectors → `tweakpane*`
|
|
14
|
+
* - `NgtTweak*` class names → `Tweakpane*`
|
|
15
|
+
*
|
|
16
|
+
* @param tree - The Nx virtual file system tree
|
|
17
|
+
* @param options - Generator options, optionally limiting to a specific project
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```bash
|
|
21
|
+
* nx g angular-three-plugin:migrate-tweakpane
|
|
22
|
+
* nx g angular-three-plugin:migrate-tweakpane --project=my-app
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
5
25
|
export declare function migrateTweakpane(tree: Tree, options: MigrateTweakpaneGeneratorSchema): Promise<void>;
|
|
6
26
|
export default migrateTweakpane;
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.migrateTweakpane = migrateTweakpane;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
/**
|
|
6
|
+
* Migrates old NgtTweak* components to the new Tweakpane* naming convention.
|
|
7
|
+
*
|
|
8
|
+
* This generator performs the following replacements across all files:
|
|
9
|
+
* - `ngt-tweak*` selectors → `tweakpane*`
|
|
10
|
+
* - `NgtTweak*` class names → `Tweakpane*`
|
|
11
|
+
*
|
|
12
|
+
* @param tree - The Nx virtual file system tree
|
|
13
|
+
* @param options - Generator options, optionally limiting to a specific project
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```bash
|
|
17
|
+
* nx g angular-three-plugin:migrate-tweakpane
|
|
18
|
+
* nx g angular-three-plugin:migrate-tweakpane --project=my-app
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
5
21
|
async function migrateTweakpane(tree, options) {
|
|
6
22
|
if (options.project) {
|
|
7
23
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
@@ -18,6 +34,12 @@ async function migrateTweakpane(tree, options) {
|
|
|
18
34
|
}
|
|
19
35
|
await (0, devkit_1.formatFiles)(tree);
|
|
20
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Performs the actual file migration for a given project root.
|
|
39
|
+
*
|
|
40
|
+
* @param tree - The Nx virtual file system tree
|
|
41
|
+
* @param root - The root path of the project to migrate
|
|
42
|
+
*/
|
|
21
43
|
function migrateByPath(tree, root) {
|
|
22
44
|
(0, devkit_1.visitNotIgnoredFiles)(tree, root, (path) => {
|
|
23
45
|
const fileContent = tree.read(path, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-tweakpane.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/migrate-tweakpane/migrate-tweakpane.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"migrate-tweakpane.js","sourceRoot":"","sources":["../../../../../../libs/plugin/src/generators/migrate-tweakpane/migrate-tweakpane.ts"],"names":[],"mappings":";;AA0BA,4CAgBC;AA1CD,uCAA4G;AAU5G;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,OAAwC;IAC1F,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACP,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa;gBAAE,SAAS;YAE7B,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAU,EAAE,IAAY;IAC9C,IAAA,6BAAoB,EAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,cAAc,GAAG,WAAW;iBAChC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC;iBACpC,OAAO,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
|
package/src/utils.d.ts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
import { type Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Adds a metadata JSON file path to VSCode's html.customData settings.
|
|
4
|
+
* This enables TypeScript type definitions and IntelliSense for Angular Three elements in templates.
|
|
5
|
+
*
|
|
6
|
+
* @param tree - The Nx virtual file system tree
|
|
7
|
+
* @param metadataJsonPath - Path to the metadata JSON file (e.g., 'angular-three/metadata.json')
|
|
8
|
+
*/
|
|
2
9
|
export declare function addMetadataJson(tree: Tree, metadataJsonPath: string): void;
|
package/src/utils.js
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addMetadataJson = addMetadataJson;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
/**
|
|
6
|
+
* Adds a metadata JSON file path to VSCode's html.customData settings.
|
|
7
|
+
* This enables TypeScript type definitions and IntelliSense for Angular Three elements in templates.
|
|
8
|
+
*
|
|
9
|
+
* @param tree - The Nx virtual file system tree
|
|
10
|
+
* @param metadataJsonPath - Path to the metadata JSON file (e.g., 'angular-three/metadata.json')
|
|
11
|
+
*/
|
|
5
12
|
function addMetadataJson(tree, metadataJsonPath) {
|
|
6
13
|
if (!metadataJsonPath.includes('node_modules')) {
|
|
7
14
|
metadataJsonPath = `./node_modules/${metadataJsonPath}`;
|
package/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../libs/plugin/src/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../libs/plugin/src/utils.ts"],"names":[],"mappings":";;AASA,0CAoCC;AA7CD,uCAAsE;AAEtE;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,IAAU,EAAE,gBAAwB;IACnE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAChD,gBAAgB,GAAG,kBAAkB,gBAAgB,EAAE,CAAC;IACzD,CAAC;IAED,iDAAiD;IACjD,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;IAEnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,eAAM,CAAC,IAAI,CACjB;gCAC6B,gBAAgB;;CAE/C,CACE,CAAC;IACH,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAE5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,IAAA,kBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAA,mBAAU,EAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7C,IACC,IAAI,CAAC,iBAAiB,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAClD,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/src/versions.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
export declare const
|
|
1
|
+
/** Default version of angular-three to install */
|
|
2
|
+
export declare const ANGULAR_THREE_VERSION = "^4.0.0";
|
|
3
|
+
/** Default version of three to install */
|
|
4
|
+
export declare const THREE_VERSION = "^0.182.0";
|
|
5
|
+
/** Default version of @types/three to install */
|
|
6
|
+
export declare const THREE_TYPE_VERSION = "^0.182.0";
|
|
7
|
+
/** Default version of ngxtension to install */
|
|
8
|
+
export declare const NGXTENSION_VERSION = "^7.0.0";
|
|
9
|
+
/**
|
|
10
|
+
* Peer dependencies for each auxiliary Angular Three package.
|
|
11
|
+
* These are installed alongside the main package when using the aux generator.
|
|
12
|
+
*/
|
|
5
13
|
export declare const PEER_DEPENDENCIES: Record<string, Record<string, string>>;
|
package/src/versions.js
CHANGED
|
@@ -1,39 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PEER_DEPENDENCIES = exports.NGXTENSION_VERSION = exports.THREE_TYPE_VERSION = exports.THREE_VERSION = exports.ANGULAR_THREE_VERSION = void 0;
|
|
4
|
-
|
|
5
|
-
exports.
|
|
6
|
-
|
|
7
|
-
exports.
|
|
4
|
+
/** Default version of angular-three to install */
|
|
5
|
+
exports.ANGULAR_THREE_VERSION = '^4.0.0';
|
|
6
|
+
/** Default version of three to install */
|
|
7
|
+
exports.THREE_VERSION = '^0.182.0';
|
|
8
|
+
/** Default version of @types/three to install */
|
|
9
|
+
exports.THREE_TYPE_VERSION = '^0.182.0';
|
|
10
|
+
/** Default version of ngxtension to install */
|
|
11
|
+
exports.NGXTENSION_VERSION = '^7.0.0';
|
|
12
|
+
/**
|
|
13
|
+
* Peer dependencies for each auxiliary Angular Three package.
|
|
14
|
+
* These are installed alongside the main package when using the aux generator.
|
|
15
|
+
*/
|
|
8
16
|
exports.PEER_DEPENDENCIES = {
|
|
9
17
|
'angular-three-soba': {
|
|
10
|
-
'three-stdlib': '^2.
|
|
11
|
-
'@pmndrs/vanilla': '^1.
|
|
12
|
-
'@monogrid/gainmap-js': '^3.
|
|
13
|
-
'camera-controls': '^2.
|
|
14
|
-
'hls.js': '^1.
|
|
15
|
-
maath: '
|
|
16
|
-
meshline: '^3.
|
|
17
|
-
'stats-gl': '^
|
|
18
|
-
'three-custom-shader-material': '
|
|
19
|
-
'three-mesh-bvh': '
|
|
20
|
-
'troika-three-text': '
|
|
18
|
+
'three-stdlib': '^2.36.0',
|
|
19
|
+
'@pmndrs/vanilla': '^1.25.0',
|
|
20
|
+
'@monogrid/gainmap-js': '^3.4.0',
|
|
21
|
+
'camera-controls': '^2.10.0',
|
|
22
|
+
'hls.js': '^1.6.0',
|
|
23
|
+
maath: '^0.10.8',
|
|
24
|
+
meshline: '^3.3.0',
|
|
25
|
+
'stats-gl': '^3.8.0',
|
|
26
|
+
'three-custom-shader-material': '^6.4.0',
|
|
27
|
+
'three-mesh-bvh': '^0.9.0',
|
|
28
|
+
'troika-three-text': '^0.52.0',
|
|
21
29
|
},
|
|
22
30
|
'angular-three-rapier': {
|
|
23
|
-
'@dimforge/rapier3d-compat': '
|
|
31
|
+
'@dimforge/rapier3d-compat': '^0.19.0',
|
|
32
|
+
'three-stdlib': '^2.36.0',
|
|
24
33
|
},
|
|
25
34
|
'angular-three-postprocessing': {
|
|
26
|
-
maath: '
|
|
27
|
-
n8ao: '
|
|
28
|
-
postprocessing: '^6.
|
|
35
|
+
maath: '^0.10.8',
|
|
36
|
+
n8ao: '^1.10.0',
|
|
37
|
+
postprocessing: '^6.38.0',
|
|
38
|
+
'three-stdlib': '^2.36.0',
|
|
29
39
|
},
|
|
30
40
|
'angular-three-cannon': {
|
|
31
|
-
'@pmndrs/cannon-worker-api': '^2.
|
|
41
|
+
'@pmndrs/cannon-worker-api': '^2.4.0',
|
|
32
42
|
'cannon-es': '^0.20.0',
|
|
33
43
|
'cannon-es-debugger': '^1.0.0',
|
|
34
44
|
},
|
|
35
45
|
'angular-three-tweakpane': {
|
|
36
|
-
tweakpane: '^
|
|
46
|
+
'@tweakpane/core': '^2.0.5',
|
|
47
|
+
tweakpane: '^4.0.5',
|
|
48
|
+
},
|
|
49
|
+
'angular-three-theatre': {
|
|
50
|
+
'@theatre/core': '^0.7.2',
|
|
51
|
+
'@theatre/studio': '^0.7.2',
|
|
37
52
|
},
|
|
38
53
|
};
|
|
39
54
|
//# sourceMappingURL=versions.js.map
|
package/src/versions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../libs/plugin/src/versions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../libs/plugin/src/versions.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AACrC,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AAC9C,0CAA0C;AAC7B,QAAA,aAAa,GAAG,UAAU,CAAC;AACxC,iDAAiD;AACpC,QAAA,kBAAkB,GAAG,UAAU,CAAC;AAC7C,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;;GAGG;AACU,QAAA,iBAAiB,GAA2C;IACxE,oBAAoB,EAAE;QACrB,cAAc,EAAE,SAAS;QACzB,iBAAiB,EAAE,SAAS;QAC5B,sBAAsB,EAAE,QAAQ;QAChC,iBAAiB,EAAE,SAAS;QAC5B,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,QAAQ;QACpB,8BAA8B,EAAE,QAAQ;QACxC,gBAAgB,EAAE,QAAQ;QAC1B,mBAAmB,EAAE,SAAS;KAC9B;IACD,sBAAsB,EAAE;QACvB,2BAA2B,EAAE,SAAS;QACtC,cAAc,EAAE,SAAS;KACzB;IACD,8BAA8B,EAAE;QAC/B,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;KACzB;IACD,sBAAsB,EAAE;QACvB,2BAA2B,EAAE,QAAQ;QACrC,WAAW,EAAE,SAAS;QACtB,oBAAoB,EAAE,QAAQ;KAC9B;IACD,yBAAyB,EAAE;QAC1B,iBAAiB,EAAE,QAAQ;QAC3B,SAAS,EAAE,QAAQ;KACnB;IACD,uBAAuB,EAAE;QACxB,eAAe,EAAE,QAAQ;QACzB,iBAAiB,EAAE,QAAQ;KAC3B;CACD,CAAC"}
|