angular-three 2.0.0-beta.30 → 2.0.0-beta.300

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +221 -4
  2. package/esm2022/index.mjs +13 -13
  3. package/esm2022/lib/canvas.mjs +128 -200
  4. package/esm2022/lib/directives/args.mjs +46 -20
  5. package/esm2022/lib/directives/selection.mjs +65 -0
  6. package/esm2022/lib/dom/events.mjs +2 -2
  7. package/esm2022/lib/events.mjs +33 -31
  8. package/esm2022/lib/html.mjs +40 -0
  9. package/esm2022/lib/instance.mjs +43 -36
  10. package/esm2022/lib/loader.mjs +59 -32
  11. package/esm2022/lib/loop.mjs +28 -25
  12. package/esm2022/lib/pipes/hexify.mjs +67 -0
  13. package/esm2022/lib/portal.mjs +173 -193
  14. package/esm2022/lib/renderer/catalogue.mjs +2 -2
  15. package/esm2022/lib/renderer/constants.mjs +5 -6
  16. package/esm2022/lib/renderer/index.mjs +370 -232
  17. package/esm2022/lib/renderer/state.mjs +49 -0
  18. package/esm2022/lib/renderer/utils.mjs +83 -87
  19. package/esm2022/lib/roots.mjs +85 -61
  20. package/esm2022/lib/routed-scene.mjs +6 -7
  21. package/esm2022/lib/store.mjs +170 -194
  22. package/esm2022/lib/three-types.mjs +2 -2
  23. package/esm2022/lib/types.mjs +1 -1
  24. package/esm2022/lib/utils/apply-props.mjs +24 -28
  25. package/esm2022/lib/utils/attach.mjs +12 -9
  26. package/esm2022/lib/utils/before-render.mjs +12 -0
  27. package/esm2022/lib/utils/is.mjs +6 -5
  28. package/esm2022/lib/utils/make.mjs +19 -17
  29. package/esm2022/lib/utils/non-nullish.mjs +7 -0
  30. package/esm2022/lib/utils/object-events.mjs +92 -0
  31. package/esm2022/lib/utils/parameters.mjs +70 -0
  32. package/esm2022/lib/utils/resolve-ref.mjs +8 -0
  33. package/esm2022/lib/utils/signal-store.mjs +59 -60
  34. package/esm2022/lib/utils/update.mjs +8 -4
  35. package/esm2022/testing/angular-three-testing.mjs +5 -0
  36. package/esm2022/testing/index.mjs +3 -0
  37. package/esm2022/testing/lib/test-bed.mjs +130 -0
  38. package/esm2022/testing/lib/test-canvas.mjs +45 -0
  39. package/esm2022/testing/lib/utils/mock-canvas.mjs +37 -0
  40. package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +752 -0
  41. package/fesm2022/angular-three-testing.mjs +966 -0
  42. package/fesm2022/angular-three-testing.mjs.map +1 -0
  43. package/fesm2022/angular-three.mjs +2478 -2541
  44. package/fesm2022/angular-three.mjs.map +1 -1
  45. package/index.d.ts +14 -12
  46. package/lib/canvas.d.ts +366 -96
  47. package/lib/directives/args.d.ts +14 -7
  48. package/lib/directives/selection.d.ts +17 -0
  49. package/lib/dom/events.d.ts +2 -3
  50. package/lib/events.d.ts +4 -80
  51. package/lib/html.d.ts +17 -0
  52. package/lib/instance.d.ts +3 -35
  53. package/lib/loader.d.ts +18 -6
  54. package/lib/loop.d.ts +11 -59
  55. package/lib/pipes/hexify.d.ts +20 -0
  56. package/lib/portal.d.ts +54 -48
  57. package/lib/renderer/catalogue.d.ts +7 -3
  58. package/lib/renderer/constants.d.ts +4 -5
  59. package/lib/renderer/index.d.ts +64 -4
  60. package/lib/renderer/state.d.ts +24 -0
  61. package/lib/renderer/utils.d.ts +8 -26
  62. package/lib/roots.d.ts +9 -7
  63. package/lib/store.d.ts +13 -141
  64. package/lib/three-types.d.ts +500 -147
  65. package/lib/types.d.ts +291 -0
  66. package/lib/utils/apply-props.d.ts +1 -3
  67. package/lib/utils/attach.d.ts +3 -5
  68. package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
  69. package/lib/utils/is.d.ts +13 -14
  70. package/lib/utils/make.d.ts +7 -13
  71. package/lib/utils/non-nullish.d.ts +4 -0
  72. package/lib/utils/object-events.d.ts +34 -0
  73. package/lib/utils/parameters.d.ts +20 -0
  74. package/lib/utils/resolve-ref.d.ts +2 -0
  75. package/lib/utils/signal-store.d.ts +13 -4
  76. package/lib/utils/update.d.ts +1 -1
  77. package/metadata.json +1 -1
  78. package/package.json +36 -16
  79. package/plugin/generators.json +17 -29
  80. package/plugin/package.json +3 -12
  81. package/plugin/src/generators/add-soba/compat.js.map +1 -0
  82. package/plugin/src/generators/add-soba/generator.d.ts +3 -0
  83. package/plugin/src/generators/add-soba/generator.js +78 -0
  84. package/plugin/src/generators/add-soba/generator.js.map +1 -0
  85. package/plugin/src/generators/add-soba/schema.json +4 -0
  86. package/plugin/src/generators/gltf/compat.d.ts +2 -0
  87. package/plugin/src/generators/gltf/compat.js.map +1 -0
  88. package/plugin/src/generators/gltf/files/__fileName__.ts__tmpl__ +36 -0
  89. package/plugin/src/generators/gltf/generator.d.ts +12 -0
  90. package/plugin/src/generators/gltf/generator.js +125 -0
  91. package/plugin/src/generators/gltf/generator.js.map +1 -0
  92. package/plugin/src/generators/gltf/schema.json +58 -0
  93. package/plugin/src/generators/init/compat.d.ts +1 -3
  94. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +18 -7
  95. package/plugin/src/generators/init/generator.d.ts +5 -5
  96. package/plugin/src/generators/init/generator.js +100 -106
  97. package/plugin/src/generators/init/generator.js.map +1 -1
  98. package/plugin/src/generators/init/schema.json +8 -12
  99. package/plugin/src/generators/utils.js +4 -3
  100. package/plugin/src/generators/utils.js.map +1 -1
  101. package/plugin/src/generators/version.d.ts +16 -0
  102. package/plugin/src/generators/version.js +20 -0
  103. package/plugin/src/generators/version.js.map +1 -0
  104. package/plugin/src/index.d.ts +0 -3
  105. package/plugin/src/index.js +0 -9
  106. package/plugin/src/index.js.map +1 -1
  107. package/testing/README.md +3 -0
  108. package/testing/index.d.ts +2 -0
  109. package/testing/lib/test-bed.d.ts +38 -0
  110. package/testing/lib/test-canvas.d.ts +11 -0
  111. package/testing/lib/utils/mock-canvas.d.ts +5 -0
  112. package/testing/lib/utils/web-gl-rendering-context.d.ts +16 -0
  113. package/testing/package.json +3 -0
  114. package/web-types.json +1 -1
  115. package/esm2022/lib/before-render.mjs +0 -13
  116. package/esm2022/lib/directives/common.mjs +0 -41
  117. package/esm2022/lib/directives/key.mjs +0 -29
  118. package/esm2022/lib/directives/parent.mjs +0 -35
  119. package/esm2022/lib/ref.mjs +0 -48
  120. package/esm2022/lib/renderer/store.mjs +0 -408
  121. package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
  122. package/lib/directives/common.d.ts +0 -15
  123. package/lib/directives/key.d.ts +0 -10
  124. package/lib/directives/parent.d.ts +0 -11
  125. package/lib/ref.d.ts +0 -8
  126. package/lib/renderer/store.d.ts +0 -67
  127. package/lib/utils/safe-detect-changes.d.ts +0 -2
  128. package/plugin/migrations.json +0 -16
  129. package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
  130. package/plugin/src/generators/init-cannon/compat.js.map +0 -1
  131. package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
  132. package/plugin/src/generators/init-cannon/generator.js +0 -23
  133. package/plugin/src/generators/init-cannon/generator.js.map +0 -1
  134. package/plugin/src/generators/init-cannon/schema.json +0 -6
  135. package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
  136. package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
  137. package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
  138. package/plugin/src/generators/init-postprocessing/generator.js +0 -21
  139. package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
  140. package/plugin/src/generators/init-postprocessing/schema.json +0 -6
  141. package/plugin/src/generators/init-soba/compat.d.ts +0 -2
  142. package/plugin/src/generators/init-soba/compat.js +0 -6
  143. package/plugin/src/generators/init-soba/compat.js.map +0 -1
  144. package/plugin/src/generators/init-soba/generator.d.ts +0 -2
  145. package/plugin/src/generators/init-soba/generator.js +0 -27
  146. package/plugin/src/generators/init-soba/generator.js.map +0 -1
  147. package/plugin/src/generators/init-soba/schema.json +0 -6
  148. package/plugin/src/generators/versions.d.ts +0 -13
  149. package/plugin/src/generators/versions.js +0 -17
  150. package/plugin/src/generators/versions.js.map +0 -1
  151. package/plugin/src/migrations/migrate-to-ngxtension/compat.d.ts +0 -2
  152. package/plugin/src/migrations/migrate-to-ngxtension/compat.js +0 -6
  153. package/plugin/src/migrations/migrate-to-ngxtension/compat.js.map +0 -1
  154. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.d.ts +0 -2
  155. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js +0 -41
  156. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js.map +0 -1
  157. /package/plugin/src/generators/{init-cannon → add-soba}/compat.d.ts +0 -0
  158. /package/plugin/src/generators/{init-cannon → add-soba}/compat.js +0 -0
  159. /package/plugin/src/generators/{init-postprocessing → gltf}/compat.js +0 -0
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "angular-three",
3
- "version": "2.0.0-beta.30",
3
+ "version": "2.0.0-beta.300",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
+ "type": "module",
7
8
  "repository": {
8
9
  "type": "git",
9
- "url": "https://github.com/angular-threejs/angular-three/tree/main/libs/angular-three"
10
+ "url": "https://github.com/angular-threejs/angular-three/tree/main/libs/core"
10
11
  },
11
12
  "author": {
12
13
  "name": "Chau Tran",
@@ -21,29 +22,41 @@
21
22
  ],
22
23
  "license": "MIT",
23
24
  "peerDependencies": {
24
- "@angular/common": "^16.0.0",
25
- "@angular/core": "^16.0.0",
26
- "ngxtension": "^0.1.0",
27
- "three": ">=0.148.0",
28
- "@angular/router": "16.2.3",
29
- "rxjs": "7.8.1"
25
+ "@angular/common": ">=18.0.0 <19.0.0",
26
+ "@angular/core": ">=18.0.0 <19.0.0",
27
+ "ngxtension": ">=3.0.0",
28
+ "three": ">=0.148.0 <0.168.0"
30
29
  },
31
30
  "dependencies": {
32
31
  "tslib": "^2.3.0",
33
- "@nx/devkit": "^16.0.0",
32
+ "@nx/devkit": "^19.0.0",
34
33
  "@phenomnomnominal/tsquery": "^6.0.0",
35
- "nx": "^16.0.0"
34
+ "nx": "^19.0.0"
36
35
  },
37
- "sideEffects": false,
38
36
  "generators": "./plugin/generators.json",
39
37
  "schematics": "./plugin/generators.json",
40
38
  "nx-migrations": {
41
- "migrations": "./migrations.json"
39
+ "migrations": "./plugin/migrations.json",
40
+ "packageGroup": [
41
+ "angular-three-soba",
42
+ "angular-three-postprocessing",
43
+ "angular-three-cannon",
44
+ "angular-three-rapier"
45
+ ]
42
46
  },
43
47
  "ng-update": {
44
- "migrations": "./migrations.json"
48
+ "migrations": "./plugin/migrations.json",
49
+ "packageGroup": [
50
+ "angular-three-soba",
51
+ "angular-three-postprocessing",
52
+ "angular-three-cannon",
53
+ "angular-three-rapier"
54
+ ]
45
55
  },
46
- "web-types": "./web-types.json",
56
+ "web-types": [
57
+ "./web-types.json",
58
+ "../../node_modules/angular-three/web-types.json"
59
+ ],
47
60
  "module": "fesm2022/angular-three.mjs",
48
61
  "typings": "index.d.ts",
49
62
  "exports": {
@@ -55,6 +68,13 @@
55
68
  "esm2022": "./esm2022/angular-three.mjs",
56
69
  "esm": "./esm2022/angular-three.mjs",
57
70
  "default": "./fesm2022/angular-three.mjs"
71
+ },
72
+ "./testing": {
73
+ "types": "./testing/index.d.ts",
74
+ "esm2022": "./esm2022/testing/angular-three-testing.mjs",
75
+ "esm": "./esm2022/testing/angular-three-testing.mjs",
76
+ "default": "./fesm2022/angular-three-testing.mjs"
58
77
  }
59
- }
60
- }
78
+ },
79
+ "sideEffects": false
80
+ }
@@ -1,27 +1,20 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
3
2
  "name": "angular-three-plugin",
4
- "version": "0.0.1",
5
3
  "generators": {
6
4
  "init": {
7
5
  "factory": "./src/generators/init/generator",
8
6
  "schema": "./src/generators/init/schema.json",
9
7
  "description": "Init Angular Three with proper packages and config"
10
8
  },
11
- "soba": {
12
- "factory": "./src/generators/init-soba/generator",
13
- "schema": "./src/generators/init-soba/schema.json",
14
- "description": "Init Angular Three Soba with proper packages "
9
+ "add-soba": {
10
+ "factory": "./src/generators/add-soba/generator",
11
+ "schema": "./src/generators/add-soba/schema.json",
12
+ "description": "Add angular-three-soba to your project"
15
13
  },
16
- "postprocessing": {
17
- "factory": "./src/generators/init-postprocessing/generator",
18
- "schema": "./src/generators/init-postprocessing/schema.json",
19
- "description": "Init Angular Three Postprocessing with proper packages "
20
- },
21
- "cannon": {
22
- "factory": "./src/generators/init-cannon/generator",
23
- "schema": "./src/generators/init-cannon/schema.json",
24
- "description": "Init Angular Three cannon with proper packages "
14
+ "gltf": {
15
+ "factory": "./src/generators/gltf/generator",
16
+ "schema": "./src/generators/gltf/schema.json",
17
+ "description": "gltf generator"
25
18
  }
26
19
  },
27
20
  "schematics": {
@@ -30,20 +23,15 @@
30
23
  "schema": "./src/generators/init/schema.json",
31
24
  "description": "Add Angular Three with proper packages and config"
32
25
  },
33
- "soba": {
34
- "factory": "./src/generators/init-soba/compat",
35
- "schema": "./src/generators/init-soba/schema.json",
36
- "description": "Init Angular Three Soba with proper packages "
37
- },
38
- "postprocessing": {
39
- "factory": "./src/generators/init-postprocessing/compat",
40
- "schema": "./src/generators/init-postprocessing/schema.json",
41
- "description": "Init Angular Three Postprocessing with proper packages "
26
+ "add-soba": {
27
+ "factory": "./src/generators/add-soba/compat",
28
+ "schema": "./src/generators/add-soba/schema.json",
29
+ "description": "Add angular-three-soba to your project"
42
30
  },
43
- "cannon": {
44
- "factory": "./src/generators/init-cannon/compat",
45
- "schema": "./src/generators/init-cannon/schema.json",
46
- "description": "Init Angular Three cannon with proper packages "
47
- }
31
+ "gltf": {
32
+ "factory": "./src/generators/gltf/compat",
33
+ "schema": "./src/generators/gltf/schema.json",
34
+ "description": "gltf generator"
35
+ }
48
36
  }
49
37
  }
@@ -1,15 +1,6 @@
1
1
  {
2
+ "name": "plugin",
2
3
  "type": "commonjs",
3
- "generators": "./generators.json",
4
- "nx-migrations": {
5
- "migrations": "./migrations.json"
6
- },
7
- "ng-update": {
8
- "migrations": "./migrations.json"
9
- },
10
- "dependencies": {
11
- "@nx/devkit": "16.8.1"
12
- },
13
4
  "main": "./src/index.js",
14
- "version": "2.0.0-beta.30"
15
- }
5
+ "types": "./src/index.d.ts"
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/add-soba/compat.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,2CAAkC;AAElC,kBAAe,IAAA,2BAAkB,EAAC,mBAAO,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function addSobaGenerator(tree: Tree): Promise<() => void>;
3
+ export default addSobaGenerator;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addSobaGenerator = addSobaGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const enquirer_1 = require("enquirer");
6
+ const utils_1 = require("../utils");
7
+ const version_1 = require("../version");
8
+ const ENTRY_POINTS = {
9
+ abstractions: ['troika-three-text'],
10
+ controls: ['camera-controls', 'maath'],
11
+ materials: ['three-custom-shader-material', 'three-mesh-bvh'],
12
+ staging: ['troika-three-text', '@monogrid/gainmap-js'],
13
+ stats: ['stats-gl'],
14
+ };
15
+ async function addSobaGenerator(tree) {
16
+ const packagesToAdd = ['three-stdlib', '@pmndrs/vanilla'];
17
+ const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
18
+ const ngtVersion = packageJson['dependencies']['angular-three'] || packageJson['devDependencies']['angular-three'];
19
+ if (!ngtVersion) {
20
+ devkit_1.logger.error('angular-three is not installed.');
21
+ return;
22
+ }
23
+ devkit_1.logger.info('Adding angular-three-soba...');
24
+ (0, utils_1.addMetadataJson)(tree, 'angular-three-soba/metadata.json');
25
+ const { peerDependencies } = await (0, enquirer_1.prompt)({
26
+ type: 'multiselect',
27
+ name: 'peerDependencies',
28
+ message: `To know which peer dependencies we need to add, please select the secondary entry points you are planning to use:`,
29
+ choices: [
30
+ ...Object.entries(ENTRY_POINTS).map(([entryPoint, deps]) => ({
31
+ value: deps,
32
+ name: `angular-three-soba/${entryPoint}`,
33
+ message: entryPoint,
34
+ })),
35
+ {
36
+ value: [
37
+ 'troika-three-text',
38
+ 'three-custom-shader-material',
39
+ 'three-mesh-bvh',
40
+ '@monogrid/gainmap-js',
41
+ 'camera-controls',
42
+ 'maath',
43
+ 'stats-gl',
44
+ ],
45
+ name: 'All',
46
+ message: 'I am not sure. Let me add all the peer dependencies.',
47
+ },
48
+ ],
49
+ // @ts-expect-error - result is typed for single select but we're using multi select
50
+ result(values) {
51
+ const mapped = this.map(values);
52
+ return values.flatMap((value) => mapped[value]);
53
+ },
54
+ });
55
+ // flatten, dedupe peerDependencies, add to packagesToAdd
56
+ peerDependencies
57
+ .filter((item, index, array) => array.indexOf(item) === index)
58
+ .forEach((item) => {
59
+ if (!packagesToAdd.includes(item)) {
60
+ packagesToAdd.push(item);
61
+ }
62
+ });
63
+ const depsToAdd = packagesToAdd.reduce((acc, item) => {
64
+ if (version_1.SOBA_PEER_DEPENDENCIES[item]) {
65
+ acc[item] = version_1.SOBA_PEER_DEPENDENCIES[item];
66
+ }
67
+ return acc;
68
+ }, {});
69
+ // add deps to package.json
70
+ devkit_1.logger.info('Adding dependencies to package.json...');
71
+ (0, devkit_1.addDependenciesToPackageJson)(tree, depsToAdd, {});
72
+ await (0, devkit_1.formatFiles)(tree);
73
+ return () => {
74
+ (0, devkit_1.installPackagesTask)(tree);
75
+ };
76
+ }
77
+ exports.default = addSobaGenerator;
78
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/add-soba/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "$id": "AddSoba",
3
+ "title": "Add Soba"
4
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (generatorOptions: import("./generator").GltfGeneratorSchema) => (tree: any, context: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/gltf/compat.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,2CAAwC;AAExC,kBAAe,IAAA,2BAAkB,EAAC,mBAAa,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { extend, NgtGroup } from 'angular-three';
3
+ import { injectGLTF } from 'angular-three-soba/loaders';
4
+ import * as THREE from 'three';
5
+ import { GLTF } from 'three-stdlib';
6
+
7
+ interface <%= className %>GLTFResult extends GLTF {
8
+ nodes: {},
9
+ materials: {}
10
+ }
11
+
12
+ interface <%= className %>Options extends Partial<NgtGroup> {
13
+ /* more options */
14
+ }
15
+
16
+ @Component({
17
+ selector: '<%= selector %>',
18
+ standalone: true,
19
+ template: `
20
+ @if (gltf(); as gltf) {
21
+ <ngt-group [dispose]="null" [parameters]="options()">
22
+ </ngt-group>
23
+ }
24
+ `,
25
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
26
+ changeDetection: ChangeDetectionStrategy.OnPush,
27
+ })
28
+ export class <%= className %> {
29
+ options = input({} as <%= className %>Options);
30
+
31
+ gltf = injectGLTF(() => '<%= runtimeGltfPath %>') as Signal<<%= className %>GLTFResult | null>;
32
+
33
+ constructor() {
34
+ extend({ Group: THREE.Group });
35
+ }
36
+ }
@@ -0,0 +1,12 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export interface GltfGeneratorSchema {
3
+ gltfPath: string;
4
+ project: string;
5
+ console: boolean;
6
+ modelName: string;
7
+ meshopt: boolean;
8
+ outputPath?: string;
9
+ draco?: boolean | string;
10
+ }
11
+ export declare function gltfGenerator(tree: Tree, options: GltfGeneratorSchema): Promise<void>;
12
+ export default gltfGenerator;
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gltfGenerator = gltfGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const enquirer_1 = require("enquirer");
6
+ const node_fs_1 = require("node:fs");
7
+ const three_stdlib_1 = require("three-stdlib");
8
+ const generator_1 = require("../add-soba/generator");
9
+ function normalizeOptions(options) {
10
+ let { gltfPath, project, console, modelName, outputPath, draco, meshopt } = options;
11
+ if (draco == null) {
12
+ draco = true;
13
+ }
14
+ return { gltfPath, project, console, modelName, outputPath, draco, meshopt };
15
+ }
16
+ function buildSelector(fileName, prefix) {
17
+ return `${prefix}-${fileName}`;
18
+ }
19
+ function toArrayBuffer(buf) {
20
+ const ab = new ArrayBuffer(buf.length);
21
+ const view = new Uint8Array(ab);
22
+ for (let i = 0; i < buf.length; ++i)
23
+ view[i] = buf[i];
24
+ return ab;
25
+ }
26
+ let dracoLoader = null;
27
+ let decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';
28
+ const loader = new three_stdlib_1.GLTFLoader();
29
+ function load(input, draco, meshopt) {
30
+ if (draco) {
31
+ if (!dracoLoader) {
32
+ dracoLoader = new three_stdlib_1.DRACOLoader();
33
+ }
34
+ dracoLoader.setDecoderPath(typeof draco === 'string' ? draco : decoderPath);
35
+ loader.setDRACOLoader(dracoLoader);
36
+ }
37
+ if (meshopt) {
38
+ loader.setMeshoptDecoder(typeof three_stdlib_1.MeshoptDecoder === 'function' ? (0, three_stdlib_1.MeshoptDecoder)() : three_stdlib_1.MeshoptDecoder);
39
+ }
40
+ const data = input.startsWith('http')
41
+ ? null
42
+ : (() => {
43
+ const fileContent = (0, node_fs_1.readFileSync)(input);
44
+ return toArrayBuffer(fileContent);
45
+ })();
46
+ const operationFactory = (onLoad, onError) => {
47
+ return input.startsWith('http')
48
+ ? loader.load.call(loader, input, onLoad, () => { }, onError)
49
+ : loader.parse.call(loader, data, input, onLoad, onError);
50
+ };
51
+ return new Promise((resolve, reject) => {
52
+ operationFactory(resolve, reject);
53
+ });
54
+ }
55
+ async function gltfGenerator(tree, options) {
56
+ const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
57
+ const hasAngularThreeSoba = packageJson['dependencies']['angular-three-soba'] || packageJson['devDependencies']['angular-three-soba'];
58
+ if (!hasAngularThreeSoba) {
59
+ devkit_1.logger.warn(`[NGT] angular-three-soba must be installed to use the GLTF generator`);
60
+ const { initSoba } = await (0, enquirer_1.prompt)({
61
+ type: 'confirm',
62
+ name: 'initSoba',
63
+ message: 'Would you like to initialize angular-three-soba?',
64
+ initial: true,
65
+ });
66
+ if (!initSoba)
67
+ return;
68
+ await (0, generator_1.addSobaGenerator)(tree);
69
+ }
70
+ try {
71
+ // const injectGLTF = await loadEsmModule<typeof import('angular-three-soba/loaders')>(
72
+ // 'angular-three-soba/loaders',
73
+ // ).then((m) => m.injectGLTF);
74
+ // // const injectGLTF = await import('angular-three-soba/loaders').then((m) => m.injectGLTF);
75
+ // const injectGLTF = require('angular-three-soba/loaders').injectGLTF;
76
+ const { gltfPath, project, console: toConsole, modelName, outputPath, draco, meshopt } = normalizeOptions(options);
77
+ let runtimeGltfPath;
78
+ if (!gltfPath.startsWith('http')) {
79
+ const { path } = await (0, enquirer_1.prompt)({
80
+ type: 'input',
81
+ name: 'path',
82
+ message: 'What is the path to the asset file to be used at runtime (with injectGLTF)?',
83
+ required: true,
84
+ });
85
+ runtimeGltfPath = path;
86
+ }
87
+ else {
88
+ runtimeGltfPath = gltfPath;
89
+ }
90
+ await load(runtimeGltfPath, draco, meshopt);
91
+ // injectGLTF.preload(() => runtimeGltfPath, {
92
+ // useDraco: draco,
93
+ // useMeshOpt: meshopt,
94
+ // onLoad: (data) => {
95
+ // console.log('data', data);
96
+ // },
97
+ // });
98
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, project);
99
+ const modelNames = (0, devkit_1.names)(modelName);
100
+ const tmpPath = `${devkit_1.workspaceRoot}/tmp/ngt-gltf/${modelNames.fileName}`;
101
+ const output = toConsole ? tmpPath : (outputPath ?? (projectConfig.sourceRoot || `${projectConfig.root}/src`));
102
+ // NOTE: even if user passes in "console", we still generate the files.
103
+ // But we generate them to a temporary destination then we'll remove them printing to console.
104
+ // generateFiles(tree, 'files', output, {
105
+ // tmpl: '',
106
+ // fileName: modelNames.fileName,
107
+ // className: modelNames.className,
108
+ // selector: buildSelector(
109
+ // modelNames.fileName,
110
+ // 'prefix' in projectConfig && typeof projectConfig.prefix === 'string' ? projectConfig.prefix : 'app',
111
+ // ),
112
+ // runtimeGltfPath,
113
+ // });
114
+ await (0, devkit_1.formatFiles)(tree);
115
+ if (toConsole) {
116
+ // print to console
117
+ // delete the files in tmp
118
+ }
119
+ }
120
+ catch (e) {
121
+ devkit_1.logger.error(`[NGT] Error generating GLTF files: ${e}`);
122
+ }
123
+ }
124
+ exports.default = gltfGenerator;
125
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/gltf/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "Gltf",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "gltfPath": {
8
+ "type": "string",
9
+ "description": "",
10
+ "$default": {
11
+ "$source": "argv",
12
+ "index": 0
13
+ },
14
+ "x-prompt": "Where is your gltf file located?"
15
+ },
16
+ "project": {
17
+ "type": "string",
18
+ "description": "The name of the project to generate the model component for.",
19
+ "x-prompt": "What project would you like to generate the model component for?",
20
+ "pattern": "(?:^@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*\\/[a-zA-Z0-9-~][a-zA-Z0-9-._~]*|^[a-zA-Z][^:]*)$",
21
+ "x-dropdown": "projects",
22
+ "x-priority": "important"
23
+ },
24
+ "console": {
25
+ "type": "boolean",
26
+ "description": "Print to console instead of writing to file",
27
+ "default": false
28
+ },
29
+ "modelName": {
30
+ "type": "string",
31
+ "description": "Name of the model",
32
+ "default": "Model"
33
+ },
34
+ "outputPath": {
35
+ "type": "string",
36
+ "description": "The output path of the generated component",
37
+ "alias": ["o", "output"]
38
+ },
39
+ "draco": {
40
+ "oneOf": [
41
+ {
42
+ "type": "boolean",
43
+ "description": "Use Draco compression"
44
+ },
45
+ {
46
+ "type": "string",
47
+ "description": "Use Draco compression with a specific path"
48
+ }
49
+ ]
50
+ },
51
+ "meshopt": {
52
+ "type": "boolean",
53
+ "description": "Use Meshopt compression",
54
+ "default": true
55
+ }
56
+ },
57
+ "required": ["gltfPath", "project"]
58
+ }
@@ -1,4 +1,2 @@
1
- declare const _default: (generatorOptions: {
2
- project?: string;
3
- }) => (tree: any, context: any) => Promise<any>;
1
+ declare const _default: (generatorOptions: Partial<import("./generator").InitGeneratorOptions>) => (tree: any, context: any) => Promise<any>;
4
2
  export default _default;
@@ -1,18 +1,29 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
2
- import { extend, type NgtBeforeRenderEvent } from 'angular-three';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, viewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';
2
+ import { extend, injectBeforeRender } from 'angular-three';
3
3
  import { Mesh, BoxGeometry, MeshBasicMaterial } from 'three';
4
4
 
5
5
  extend({ Mesh, BoxGeometry, MeshBasicMaterial });
6
6
 
7
7
  @Component({
8
8
  standalone: true,
9
- templateUrl: './experience.component.html',
10
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
9
+ template: `
10
+ <ngt-mesh #mesh>
11
+ <ngt-box-geometry />
12
+ <ngt-mesh-basic-material color="hotpink" />
13
+ </ngt-mesh>
14
+ `,
15
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
16
+ changeDetection: ChangeDetectionStrategy.OnPush,
11
17
  })
12
18
  export class Experience {
13
- onBeforeRender({ object, state: { delta }}: NgtBeforeRenderEvent<Mesh>) {
14
- object.rotation.x += delta;
15
- object.rotation.y += delta;
19
+ meshRef = viewChild.required<ElementRef<Mesh>>('mesh');
20
+
21
+ constructor() {
22
+ injectBeforeRender(({ delta }) => {
23
+ const mesh = this.meshRef().nativeElement;
24
+ mesh.rotation.x += delta;
25
+ mesh.rotation.y += delta;
26
+ })
16
27
  }
17
28
  }
18
29
 
@@ -1,6 +1,6 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- type Schema = {
3
- project?: string;
4
- };
5
- export default function (tree: Tree, { project }: Schema): Promise<() => void>;
6
- export {};
2
+ export interface InitGeneratorOptions {
3
+ skipGenerateExperience: boolean;
4
+ }
5
+ export declare function initGenerator(tree: Tree, { skipGenerateExperience }?: Partial<InitGeneratorOptions>): Promise<() => void>;
6
+ export default initGenerator;