diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 3c3629e6..00000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index 78563e61..00000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "root": true,
- "ignorePatterns": ["**/*"],
- "plugins": ["@nx"],
- "overrides": [
- {
- "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
- "rules": {
- "@nx/enforce-module-boundaries": [
- "error",
- {
- "enforceBuildableLibDependency": true,
- "allow": [],
- "depConstraints": [
- {
- "sourceTag": "*",
- "onlyDependOnLibsWithTags": ["*"]
- }
- ]
- }
- ]
- }
- },
- {
- "files": ["*.ts", "*.tsx"],
- "extends": ["plugin:@nx/typescript"],
- "rules": {
- "@typescript-eslint/no-extra-semi": "error",
- "no-extra-semi": "off"
- }
- },
- {
- "files": ["*.js", "*.jsx"],
- "extends": ["plugin:@nx/javascript"],
- "rules": {
- "@typescript-eslint/no-extra-semi": "error",
- "no-extra-semi": "off"
- }
- },
- {
- "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
- "env": {
- "jest": true
- },
- "rules": {}
- },
- {
- "files": "*.json",
- "parser": "jsonc-eslint-parser",
- "rules": {}
- }
- ]
-}
diff --git a/.gitignore b/.gitignore
index 3ba476b0..9bc7b66c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,4 +42,7 @@ Thumbs.db
.env
.nx/cache
-.nx/workspace-data
\ No newline at end of file
+.nx/workspace-data
+
+vite.config.*.timestamp*
+vitest.config.*.timestamp*
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
index 938b61cd..e8c9c5a4 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -5,12 +5,12 @@
"printWidth": 120,
"plugins": ["prettier-plugin-organize-imports"],
"htmlWhitespaceSensitivity": "ignore",
- "overrides": [
- {
- "files": "*.analog",
- "options": {
- "parser": "angular"
- }
- }
- ]
+ "overrides": [
+ {
+ "files": "*.analog",
+ "options": {
+ "parser": "angular"
+ }
+ }
+ ]
}
diff --git a/.release-it.json b/.release-it.json
deleted file mode 100644
index 6ba0a3b0..00000000
--- a/.release-it.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "plugins": {
- "@release-it/conventional-changelog": {
- "preset": {
- "name": "conventionalcommits",
- "types": [
- {
- "type": "feat",
- "section": "Features"
- },
- {
- "type": "fix",
- "section": "Bug Fixes"
- },
- {
- "type": "cleanup",
- "section": "Cleanup"
- },
- {
- "type": "docs",
- "section": "Documentations"
- }
- ]
- },
- "infile": "CHANGELOG.md"
- },
- "@release-it/bumper": {
- "in": "libs/core/version.json",
- "out": ["libs/core/version.json", "dist/libs/**/package.json"]
- }
- },
- "git": {
- "commitMessage": "chore: release ${version}"
- },
- "npm": {
- "publish": false
- },
- "github": {
- "release": true,
- "releaseName": "Release ${version}"
- },
- "hooks": {
- "before:bump": "pnpm exec nx package core",
- "after:bump": "git checkout -- package.json"
- }
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d9bc3106..f7504d53 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,7 +1,4 @@
{
"eslint.validate": ["json"],
- "html.customData": [
- "./node_modules/angular-three/metadata.json",
- "./node_modules/angular-three-soba/metadata.json"
- ]
+ "html.customData": ["./node_modules/angular-three/metadata.json", "./node_modules/angular-three-soba/metadata.json"]
}
diff --git a/.ws-context b/.ws-context
index 6d4035d9..ae16dc48 100644
--- a/.ws-context
+++ b/.ws-context
@@ -1,9 +1,9 @@
{
"framework": "angular",
- "angular-template-syntax": "V_17",
+ "angular-template-syntax": "V_18_1",
"apps/**/*.analog": {
"framework": "angular",
- "angular-template-syntax": "V_17"
+ "angular-template-syntax": "V_18_1"
}
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 478798fd..3dab0f78 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,663 @@
+## 3.7.2 (2025-02-01)
+
+### 🩹 Fixes
+
+- **core:** make sure getAttribute is configurable ([48e64797](https://github.com/angular-threejs/angular-three/commit/48e64797))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.7.1 (2025-01-26)
+
+This was a version bump only, there were no code changes.
+
+## 3.7.0 (2025-01-18)
+
+### 🚀 Features
+
+- **core:** expose rendered output with the component ref ([f4bc584](https://github.com/angular-threejs/angular-three/commit/f4bc584))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.6.1 (2025-01-18)
+
+### 🩹 Fixes
+
+- **core:** add dummy getAttribute fn to rendererNode for ssr ([1a37c1a](https://github.com/angular-threejs/angular-three/commit/1a37c1a))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.6.0 (2025-01-11)
+
+### 🚀 Features
+
+- **cannon:** bump three 172 ([126b126](https://github.com/angular-threejs/angular-three/commit/126b126))
+- **core:** bump three 172 ([fbb1531](https://github.com/angular-threejs/angular-three/commit/fbb1531))
+- **postprocessing:** bump three 172 ([28de882](https://github.com/angular-threejs/angular-three/commit/28de882))
+- **rapier:** bump three 172 ([580972f](https://github.com/angular-threejs/angular-three/commit/580972f))
+- **soba:** bump three 172 ([ef5655a](https://github.com/angular-threejs/angular-three/commit/ef5655a))
+
+### 🩹 Fixes
+
+- **core:** loosen instanceof check ([b7650b2](https://github.com/angular-threejs/angular-three/commit/b7650b2))
+- **core:** null check first before isTexture ([ebd3c3a](https://github.com/angular-threejs/angular-three/commit/ebd3c3a))
+- **soba:** dispose texture on environment cube destroyed ([4a23c73](https://github.com/angular-threejs/angular-three/commit/4a23c73))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.5.0 (2025-01-11)
+
+### 🚀 Features
+
+- **soba:** add isReady getter for animation api to help with type-narrow ([3ca940d](https://github.com/angular-threejs/angular-three/commit/3ca940d))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.4.1 (2025-01-08)
+
+### 🩹 Fixes
+
+- **postprocessing:** ngtp tone mapping selector ([e816059](https://github.com/angular-threejs/angular-three/commit/e816059))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.4.0 (2025-01-08)
+
+### 🚀 Features
+
+- **core:** add parent directive for special attach case ([7f78a4c](https://github.com/angular-threejs/angular-three/commit/7f78a4c))
+
+### 🩹 Fixes
+
+- **core:** make sure previousAttach exists before invoking ([b5d3ae6](https://github.com/angular-threejs/angular-three/commit/b5d3ae6))
+- **core:** adjust NgtRouterOutlet to make a new env injector with parent ([ae16c92](https://github.com/angular-threejs/angular-three/commit/ae16c92))
+- **core:** move resolve parent to the directive itself ([0ec724a](https://github.com/angular-threejs/angular-three/commit/0ec724a))
+- **postprocessing:** update tonemapping to not use CONVOLUTION ([a6a7567](https://github.com/angular-threejs/angular-three/commit/a6a7567))
+- **postprocessing:** export name for tone mapping ([abe0100](https://github.com/angular-threejs/angular-three/commit/abe0100))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.3.0 (2025-01-07)
+
+### 🩹 Fixes
+
+- **soba:** adjust injectGLTF generics ([41b95c4](https://github.com/angular-threejs/angular-three/commit/41b95c4))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.2.4 (2025-01-07)
+
+### 🩹 Fixes
+
+- **core:** get parent in removeChild from parentNode; do not remove children if oldChild is scene ([2807f68](https://github.com/angular-threejs/angular-three/commit/2807f68))
+- **soba:** move makeDefault up for controls ([9d05d0c](https://github.com/angular-threejs/angular-three/commit/9d05d0c))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.2.3 (2025-01-06)
+
+### 🩹 Fixes
+
+- **core:** check against previous args and do nothing if they're the same references ([d24c136](https://github.com/angular-threejs/angular-three/commit/d24c136))
+- **core:** use custom equality fn for parameters ([3c0cdfe](https://github.com/angular-threejs/angular-three/commit/3c0cdfe))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.2.2 (2025-01-05)
+
+### 🩹 Fixes
+
+- **core:** null check remove call ([065efff](https://github.com/angular-threejs/angular-three/commit/065efff))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.2.1 (2025-01-05)
+
+### 🩹 Fixes
+
+- **core:** check for lS.parent before calling untracked on it ([b4bf14d](https://github.com/angular-threejs/angular-three/commit/b4bf14d))
+- **soba:** setPoints should receive optional mid in quadratic bezier line ([909b27c](https://github.com/angular-threejs/angular-three/commit/909b27c))
+- **soba:** bind offset to position on pivot controls instead of effect ([c4128ed](https://github.com/angular-threejs/angular-three/commit/c4128ed))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.2.0 (2025-01-05)
+
+### 🩹 Fixes
+
+- **cannon:** remove standalone: true ([b5e56e7](https://github.com/angular-threejs/angular-three/commit/b5e56e7))
+- **cannon:** remove unnecessary untracked ([de8a3e9](https://github.com/angular-threejs/angular-three/commit/de8a3e9))
+- **core:** remove standalone true ([0a38f33](https://github.com/angular-threejs/angular-three/commit/0a38f33))
+- **core:** remove unnecessary untracked ([a837583](https://github.com/angular-threejs/angular-three/commit/a837583))
+- **postprocessing:** remove standalone true ([195ea58](https://github.com/angular-threejs/angular-three/commit/195ea58))
+- **rapier:** remove standalone true ([fa304b9](https://github.com/angular-threejs/angular-three/commit/fa304b9))
+- **rapier:** remove unnecessary untracked ([f994937](https://github.com/angular-threejs/angular-three/commit/f994937))
+- **soba:** remove standalone true ([f894178](https://github.com/angular-threejs/angular-three/commit/f894178))
+- **soba:** remove unnecessary untracked ([5a976ef](https://github.com/angular-threejs/angular-three/commit/5a976ef))
+
+### ❤️ Thank You
+
+- nartc
+
+## 3.1.0 (2025-01-05)
+
+### 🩹 Fixes
+
+- **core:** adjust versions for generator ([746039b](https://github.com/angular-threejs/angular-three/commit/746039b))
+
+### ❤️ Thank You
+
+- nartc
+
+# 3.0.0 (2025-01-05)
+
+### 🚀 Features
+
+- ⚠️ **core:** remove NgtObjectEventsHostDirective short-cut ([0ab2a6e](https://github.com/angular-threejs/angular-three/commit/0ab2a6e))
+- **core:** promote core/testing to stable ([d6c5421](https://github.com/angular-threejs/angular-three/commit/d6c5421))
+- ⚠️ **rapier:** remove deprecated properties ([be09add](https://github.com/angular-threejs/angular-three/commit/be09add))
+- **repo:** migrate nx and angular ([f91595c](https://github.com/angular-threejs/angular-three/commit/f91595c))
+- **repo:** bump peer deps ([21a5f61](https://github.com/angular-threejs/angular-three/commit/21a5f61))
+- ⚠️ **soba:** remove ngtspivotcontrols export from controls entry point ([0db0b1e](https://github.com/angular-threejs/angular-three/commit/0db0b1e))
+
+### 🩹 Fixes
+
+- **core:** routed scene should work ([6e76304](https://github.com/angular-threejs/angular-three/commit/6e76304))
+- **soba:** set up an effect for setting position of gizmo instead ([05ad6dc](https://github.com/angular-threejs/angular-three/commit/05ad6dc))
+
+### ⚠️ Breaking Changes
+
+- **rapier:** remove `erp` from physics options
+- **core:** use host directive `NgtObjectEvents` explicitly
+- **soba:** use `NgtsPivotControls` from `gizmos` entry point
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.14.0 (2025-01-02)
+
+### 🚀 Features
+
+- **repo:** bump peer deps on angular ([4027049](https://github.com/angular-threejs/angular-three/commit/4027049))
+
+### 🩹 Fixes
+
+- **core:** make sure camera and dpr is set correctly initially ([ae5ec13](https://github.com/angular-threejs/angular-three/commit/ae5ec13))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.13.0 (2025-01-02)
+
+### 🚀 Features
+
+- **cannon:** clean up cannon usages ([23f00ca](https://github.com/angular-threejs/angular-three/commit/23f00ca))
+- **postprocessing:** adjust postprocessing usages ([da5de36](https://github.com/angular-threejs/angular-three/commit/da5de36))
+- **postprocessing:** make sure effect w/ ngt-primitive are disposed ([e8510b9](https://github.com/angular-threejs/angular-three/commit/e8510b9))
+- **rapier:** adjust rapier effect usages ([3fcd150](https://github.com/angular-threejs/angular-three/commit/3fcd150))
+- **soba:** adjust abstractions ([5aa1b0c](https://github.com/angular-threejs/angular-three/commit/5aa1b0c))
+- **soba:** adjust cameras ([6b61706](https://github.com/angular-threejs/angular-three/commit/6b61706))
+- **soba:** controls ([a88606b](https://github.com/angular-threejs/angular-three/commit/a88606b))
+- **soba:** gizmos ([03dcfb8](https://github.com/angular-threejs/angular-three/commit/03dcfb8))
+- **soba:** loaders ([b4690fc](https://github.com/angular-threejs/angular-three/commit/b4690fc))
+- **soba:** materials ([affed6c](https://github.com/angular-threejs/angular-three/commit/affed6c))
+- **soba:** misc ([bf543ca](https://github.com/angular-threejs/angular-three/commit/bf543ca))
+- **soba:** staging ([3c18936](https://github.com/angular-threejs/angular-three/commit/3c18936))
+
+### 🩹 Fixes
+
+- **core:** warn about 'routed' scenegraph ([59db3ae](https://github.com/angular-threejs/angular-three/commit/59db3ae))
+- **core:** adjust effect usage in core canvas ([5e45354](https://github.com/angular-threejs/angular-three/commit/5e45354))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.12.0 (2024-12-02)
+
+### 🚀 Features
+
+- **core:** deprecate outputs and inputs shortcut for ObjectEvents. Never worked ([576eeaa](https://github.com/angular-threejs/angular-three/commit/576eeaa))
+
+### 🩹 Fixes
+
+- **soba:** explicit outputs for object events on rounded box ([81ac40c](https://github.com/angular-threejs/angular-three/commit/81ac40c))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.11.0 (2024-12-02)
+
+### 🚀 Features
+
+- **soba:** apply objectEvents as host directive to RoundedBox ([8cffded](https://github.com/angular-threejs/angular-three/commit/8cffded))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.7 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** restart portal before render when priority changes in MeshPortalMaterial ([55b3258](https://github.com/angular-threejs/angular-three/commit/55b3258))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.6 (2024-12-02)
+
+### 🩹 Fixes
+
+- **cannon:** dummy commit ([942547e](https://github.com/angular-threejs/angular-three/commit/942547e))
+- **rapier:** dummy commit ([1d7ea92](https://github.com/angular-threejs/angular-three/commit/1d7ea92))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.5 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** dummy ([ed2fb54](https://github.com/angular-threejs/angular-three/commit/ed2fb54))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.4 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** dummy ([232d772](https://github.com/angular-threejs/angular-three/commit/232d772))
+- **soba:** dummy again ([c518a2f](https://github.com/angular-threejs/angular-three/commit/c518a2f))
+- **soba:** revert the dummy commits ([1b18d30](https://github.com/angular-threejs/angular-three/commit/1b18d30))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.3 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** default blend to 0 for MeshPortalMaterial ([daa64e4](https://github.com/angular-threejs/angular-three/commit/daa64e4))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.2 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** export new animations types as public api ([00dd7db](https://github.com/angular-threejs/angular-three/commit/00dd7db))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.1 (2024-12-02)
+
+### 🩹 Fixes
+
+- **soba:** adjust injectAnimations to be more relaxed with animation clip typing ([cca8a12](https://github.com/angular-threejs/angular-three/commit/cca8a12))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.10.0 (2024-12-01)
+
+### 🚀 Features
+
+- **soba:** add NgtsMeshPortalMaterial (use pmndrs/vanilla) ([2baa76a](https://github.com/angular-threejs/angular-three/commit/2baa76a))
+
+### 🩹 Fixes
+
+- **core:** adjust NgtAttachable type to accept string | number array (for index) ([447c3e1](https://github.com/angular-threejs/angular-three/commit/447c3e1))
+- **soba:** add default params for injectFBO ([2f2a551](https://github.com/angular-threejs/angular-three/commit/2f2a551))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.9.0 (2024-11-30)
+
+### 🚀 Features
+
+- **cannon:** bump peer dep to three 170 ([3a09692](https://github.com/angular-threejs/angular-three/commit/3a09692))
+- **core:** bump peer dependency to three 170 ([7493d8c](https://github.com/angular-threejs/angular-three/commit/7493d8c))
+- **postprocessing:** bump peer dep to three 170 ([694ca85](https://github.com/angular-threejs/angular-three/commit/694ca85))
+- **rapier:** bump peer dep to three 170 ([b41385a](https://github.com/angular-threejs/angular-three/commit/b41385a))
+- **soba:** bump peer dep to three 170 and three csm to <6.3.0 ([52b81f6](https://github.com/angular-threejs/angular-three/commit/52b81f6))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.8.1 (2024-11-22)
+
+### 🩹 Fixes
+
+- **soba:** address peer deps on three csm ([0f155ad](https://github.com/angular-threejs/angular-three/commit/0f155ad))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.8.0 (2024-11-14)
+
+### 🚀 Features
+
+- **postprocessing:** bump peer deps ([04f39dd](https://github.com/angular-threejs/angular-three/commit/04f39dd))
+- **soba:** bump peer deps ([d203556](https://github.com/angular-threejs/angular-three/commit/d203556))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.7.0 (2024-11-01)
+
+### 🚀 Features
+
+- **core:** upgrade ngxtension (with changes to resize) ([07f1f1e](https://github.com/angular-threejs/angular-three/commit/07f1f1e))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.6.1 (2024-10-30)
+
+### 🩹 Fixes
+
+- **core:** remove as const from object events inputs/outputs ([f539c80](https://github.com/angular-threejs/angular-three/commit/f539c80))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.6.0 (2024-10-30)
+
+### 🚀 Features
+
+- **core:** adjust internal types ([dae630f](https://github.com/angular-threejs/angular-three/commit/dae630f))
+- **rapier:** deprecate erp; add contactNaturalFrequency ([189be32](https://github.com/angular-threejs/angular-three/commit/189be32))
+- **soba:** add injectFBX ([8a6c79a](https://github.com/angular-threejs/angular-three/commit/8a6c79a))
+
+### 🩹 Fixes
+
+- **core:** expose inputs and outputs array for NgtObjectEvents ([6d3e0ed](https://github.com/angular-threejs/angular-three/commit/6d3e0ed))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.5.2 (2024-10-26)
+
+### 🩹 Fixes
+
+- **core:** check for uuid before comparing uuid in instance store ([8e1617a](https://github.com/angular-threejs/angular-three/commit/8e1617a))
+
+### 💅 Refactors
+
+- **core:** use DOM_PARENT constant for __ngt_dom_parent__ ([800bc6d](https://github.com/angular-threejs/angular-three/commit/800bc6d))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.5.1 (2024-09-30)
+
+
+### 🩹 Fixes
+
+- **plugin:** bump generators versions ([572477d](https://github.com/angular-threejs/angular-three/commit/572477d))
+- **rapier:** do not track entire options object in rigid body colliders options ([8c7915a](https://github.com/angular-threejs/angular-three/commit/8c7915a))
+- **soba:** bump dependencies version ([1c9b7cb](https://github.com/angular-threejs/angular-three/commit/1c9b7cb))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.5.0 (2024-09-30)
+
+
+### 🚀 Features
+
+- **soba:** add preload ([8387f21](https://github.com/angular-threejs/angular-three/commit/8387f21))
+
+### 🩹 Fixes
+
+- **core:** use findIndex instead of indexOf in instance add new object ([0ae843f](https://github.com/angular-threejs/angular-three/commit/0ae843f))
+- **soba:** use textGeometry in effect for text3d ([eaa2d17](https://github.com/angular-threejs/angular-three/commit/eaa2d17))
+
+### ❤️ Thank You
+
+- nartc
+
+## 2.4.0 (2024-09-29)
+
+
+### 🚀 Features
+
+- use ngxtension ([f785e1d](https://github.com/angular-threejs/angular-three/commit/f785e1d))
+- add select to storeApi ([9d5da39](https://github.com/angular-threejs/angular-three/commit/9d5da39))
+- adjust migration ([04d2924](https://github.com/angular-threejs/angular-three/commit/04d2924))
+- **core:** generate core ([e1cf6c7](https://github.com/angular-threejs/angular-three/commit/e1cf6c7))
+- **core:** upgrade nx ([c3bbc46](https://github.com/angular-threejs/angular-three/commit/c3bbc46))
+- **core:** add experience generation (beta) ([650eb26](https://github.com/angular-threejs/angular-three/commit/650eb26))
+- **core:** update nx ([27ca571](https://github.com/angular-threejs/angular-three/commit/27ca571))
+- **core:** bump three 0.156 ([3f847ef](https://github.com/angular-threejs/angular-three/commit/3f847ef))
+- **core:** update nx ([3e55988](https://github.com/angular-threejs/angular-three/commit/3e55988))
+- **core:** update ngxtension ([f3bbd0c](https://github.com/angular-threejs/angular-three/commit/f3bbd0c))
+- **core:** add selection api (NgtSelection and NgtSelect) ([b3c2071](https://github.com/angular-threejs/angular-three/commit/b3c2071))
+- **core:** add hexify pipe to convert various color values to hex-number (0xRRGGBBAA format) ([0f2c63a](https://github.com/angular-threejs/angular-three/commit/0f2c63a))
+- **core:** add NgtObjectEvents directive to pass-through pointer event system ([e0b575f](https://github.com/angular-threejs/angular-three/commit/e0b575f))
+- **core:** add injectNonNullish$ ([2eec63b](https://github.com/angular-threejs/angular-three/commit/2eec63b))
+- **core:** allow raycast to accept null and assign () => null for null raycasting ([44b24e8](https://github.com/angular-threejs/angular-three/commit/44b24e8))
+- **core:** init nativescript entry point ([413a60c](https://github.com/angular-threejs/angular-three/commit/413a60c))
+- **core:** first nativescript entry point release ([8864e0b](https://github.com/angular-threejs/angular-three/commit/8864e0b))
+- **plugin:** update init-soba generator to add metadata.json ([6009ca0](https://github.com/angular-threejs/angular-three/commit/6009ca0))
+- **plugin:** update plugin to the latest ([b13ef25](https://github.com/angular-threejs/angular-three/commit/b13ef25))
+- **plugin:** add soba generator ([591e95a](https://github.com/angular-threejs/angular-three/commit/591e95a))
+- **plugin:** wip gltf generator ([08a7baa](https://github.com/angular-threejs/angular-three/commit/08a7baa))
+- **postprocessing:** add outline effect and demo ([30f70ba](https://github.com/angular-threejs/angular-three/commit/30f70ba))
+- **postprocessing:** add n8ao as an entry point; add tonemapping ([7c73755](https://github.com/angular-threejs/angular-three/commit/7c73755))
+- **rapier:** add rapier ([ff76de7](https://github.com/angular-threejs/angular-three/commit/ff76de7))
+- **rapier:** add rapier ([#54](https://github.com/angular-threejs/angular-three/pull/54))
+- ⚠️ **rapier:** support fallback content when physics fails to load RAPIER wasm ([8f336df](https://github.com/angular-threejs/angular-three/commit/8f336df))
+- **soba:** add instances ([e118791](https://github.com/angular-threejs/angular-three/commit/e118791))
+- **soba:** gizmo ([8ac565c](https://github.com/angular-threejs/angular-three/commit/8ac565c))
+- **soba:** allow set global decoder path ([cbe0cc4](https://github.com/angular-threejs/angular-three/commit/cbe0cc4))
+- **soba:** point material ([c57dcea](https://github.com/angular-threejs/angular-three/commit/c57dcea))
+- **soba:** add scale factor calculation for pivot controls ([1d00903](https://github.com/angular-threejs/angular-three/commit/1d00903))
+- **soba:** add pivot controls ([2729b57](https://github.com/angular-threejs/angular-three/commit/2729b57))
+- **soba:** add billboard ([91c51cf](https://github.com/angular-threejs/angular-three/commit/91c51cf))
+- **soba:** add NgtsMask ([a60e3b7](https://github.com/angular-threejs/angular-three/commit/a60e3b7))
+- **soba:** add transform controls ([faf6867](https://github.com/angular-threejs/angular-three/commit/faf6867))
+- **soba:** gen gizmos entry; move PivotControls and TransformControls into gizmos ([9e82df2](https://github.com/angular-threejs/angular-three/commit/9e82df2))
+- **soba:** add gizmo helpers ([f99d043](https://github.com/angular-threejs/angular-three/commit/f99d043))
+
+### 🩹 Fixes
+
+- migration migrates all the times ([83ca9c6](https://github.com/angular-threejs/angular-three/commit/83ca9c6))
+- make sure to install ngxtension ([6ee16a7](https://github.com/angular-threejs/angular-three/commit/6ee16a7))
+- adjust version of ngxtension ([7c5b54a](https://github.com/angular-threejs/angular-three/commit/7c5b54a))
+- only get state if it's available ([33aa00f](https://github.com/angular-threejs/angular-three/commit/33aa00f))
+- ⚠️ **cannon:** unwrap `afterNextRender` from `injectBody` and `injectConstraint` ([676aa16](https://github.com/angular-threejs/angular-three/commit/676aa16))
+- **cannon:** update peer deps ([fc7ab35](https://github.com/angular-threejs/angular-three/commit/fc7ab35))
+- **cannon:** remove autoEffect in physics ([7ecfb3f](https://github.com/angular-threejs/angular-three/commit/7ecfb3f))
+- **cannon:** clean up physics ([f8973c4](https://github.com/angular-threejs/angular-three/commit/f8973c4))
+- **core:** make sure renderer work correctly for two DOMs elements that might contain THREE children ([b1987ba](https://github.com/angular-threejs/angular-three/commit/b1987ba))
+- **core:** only proceed with append logic for DOMs if render state is available ([5a56e6d](https://github.com/angular-threejs/angular-three/commit/5a56e6d))
+- **core:** adjust createAttachFn positional type arguments ([b65fe57](https://github.com/angular-threejs/angular-three/commit/b65fe57))
+- **core:** adjust experience generator ([fad08f6](https://github.com/angular-threejs/angular-three/commit/fad08f6))
+- **core:** adjust generator sourceRoot ([701b7c9](https://github.com/angular-threejs/angular-three/commit/701b7c9))
+- **core:** adjust tsqueyr usage for generator ([2d16772](https://github.com/angular-threejs/angular-three/commit/2d16772))
+- **core:** make sure escape template tag for generation ([6a702d6](https://github.com/angular-threejs/angular-three/commit/6a702d6))
+- **core:** use correct syntax for substitution generate files ([4194370](https://github.com/angular-threejs/angular-three/commit/4194370))
+- **core:** adjust template for experience component to include angular-three imports ([1249f0f](https://github.com/angular-threejs/angular-three/commit/1249f0f))
+- **core:** force standalone for experience generation ([2b4c9fa](https://github.com/angular-threejs/angular-three/commit/2b4c9fa))
+- **core:** rename assertInjectionContext to assertInjector ([79c68aa](https://github.com/angular-threejs/angular-three/commit/79c68aa))
+- **core:** update type for afterAttach ([3b01ce5](https://github.com/angular-threejs/angular-three/commit/3b01ce5))
+- **core:** clean up ngt ref ([1125c86](https://github.com/angular-threejs/angular-three/commit/1125c86))
+- **core:** fix core type for loader ([9c741ea](https://github.com/angular-threejs/angular-three/commit/9c741ea))
+- **core:** adjust nested effects ([59f0dda](https://github.com/angular-threejs/angular-three/commit/59f0dda))
+- **core:** update package target to build plugin last ([1bf5884](https://github.com/angular-threejs/angular-three/commit/1bf5884))
+- **core:** adjust import for selection ([b118e47](https://github.com/angular-threejs/angular-three/commit/b118e47))
+- **core:** change the way NgtSelect works ([50f0cea](https://github.com/angular-threejs/angular-three/commit/50f0cea))
+- **core:** simplify NgtSelection API with exposing single method update ([9fce320](https://github.com/angular-threejs/angular-three/commit/9fce320))
+- **core:** return early if there is namespace during createElement ([610d56f](https://github.com/angular-threejs/angular-three/commit/610d56f))
+- **core:** comment out update matrix automatically ([2f813fa](https://github.com/angular-threejs/angular-three/commit/2f813fa))
+- **core:** use noinfer for TData on loader's onLoad ([536aa05](https://github.com/angular-threejs/angular-three/commit/536aa05))
+- **core:** account for when parent is null in removeChild ([08c27e5](https://github.com/angular-threejs/angular-three/commit/08c27e5))
+- **core:** double check for falsy parent in removeChild ([5f1a36d](https://github.com/angular-threejs/angular-three/commit/5f1a36d))
+- **core:** adjust removeChild logic to get THREE parent first before getting renderer parent ([d97d48d](https://github.com/angular-threejs/angular-three/commit/d97d48d))
+- **core:** bail if parent is null in removeChild but do clean up if there's internal child ([2691fd0](https://github.com/angular-threejs/angular-three/commit/2691fd0))
+- **core:** call signal for parent() in remove child ([ca711d7](https://github.com/angular-threejs/angular-three/commit/ca711d7))
+- **core:** handle NgtAttachFunction for ngt-value as well ([b1d1006](https://github.com/angular-threejs/angular-three/commit/b1d1006))
+- **core:** adjust onLoad parameter type ([fd37f28](https://github.com/angular-threejs/angular-three/commit/fd37f28))
+- **core:** use optional chaining for localState parent since it can be null ([5eff54a](https://github.com/angular-threejs/angular-three/commit/5eff54a))
+- **core:** assert any for $event ([7b54fae](https://github.com/angular-threejs/angular-three/commit/7b54fae))
+- **core:** use onReady event from Canvas NS ([93dafef](https://github.com/angular-threejs/angular-three/commit/93dafef))
+- **core:** set size for gl in native ([a560270](https://github.com/angular-threejs/angular-three/commit/a560270))
+- **core:** optional chaining on renderer state as it can be null during nullifying state of previous object downstream ([f42a9fe](https://github.com/angular-threejs/angular-three/commit/f42a9fe))
+- **core:** clean up NgtObjectEvents; do not use afterNextRender in injectObjectEvents ([1fcf43a](https://github.com/angular-threejs/angular-three/commit/1fcf43a))
+- ⚠️ **core:** unwrap `afterNextRender` in `injectLoader` ([d57d1cc](https://github.com/angular-threejs/angular-three/commit/d57d1cc))
+- **core:** adjust add soba generator to remove dup three mesh bvh peerdep ([c3b68e2](https://github.com/angular-threejs/angular-three/commit/c3b68e2))
+- **core:** adjust loader to bail on only falsy url when multiple urls are passed in ([67a6d2c](https://github.com/angular-threejs/angular-three/commit/67a6d2c))
+- **core:** update peer deps ([ef92608](https://github.com/angular-threejs/angular-three/commit/ef92608))
+- **core:** ensure three native events (w/ EventDispatcher) work properly ([2a0edd6](https://github.com/angular-threejs/angular-three/commit/2a0edd6))
+- **core:** assign intermediate ref to the parent store for non-three instance during applyProps ([6fb9294](https://github.com/angular-threejs/angular-three/commit/6fb9294))
+- **core:** add output emitter ref utilities ([1457ce7](https://github.com/angular-threejs/angular-three/commit/1457ce7))
+- **core:** make sure add method is available before calling ([92af0e9](https://github.com/angular-threejs/angular-three/commit/92af0e9))
+- **core:** use effect directly for selection ([19cd21e](https://github.com/angular-threejs/angular-three/commit/19cd21e))
+- **core:** clean up loader; remove allowSignalWrites in injectLoader ([3c074c5](https://github.com/angular-threejs/angular-three/commit/3c074c5))
+- **core:** clean up args; ([86d31aa](https://github.com/angular-threejs/angular-three/commit/86d31aa))
+- **core:** add geometryStamp to ngt instance ([2cf9113](https://github.com/angular-threejs/angular-three/commit/2cf9113))
+- **core:** adjust object events; remove afterNextRender ([63d6e74](https://github.com/angular-threejs/angular-three/commit/63d6e74))
+- **core:** remove autoEffect in canvas ([94834a6](https://github.com/angular-threejs/angular-three/commit/94834a6))
+- **core:** clean up portal; remove autoEffect ([6ad06e1](https://github.com/angular-threejs/angular-three/commit/6ad06e1))
+- **core:** add geometryStamp and updateGeometryStamp to types ([4c730bb](https://github.com/angular-threejs/angular-three/commit/4c730bb))
+- **core:** check setClearAlpha before calling ([33ba160](https://github.com/angular-threejs/angular-three/commit/33ba160))
+- **plugin:** change init logic for geenrating experience ([8a14c89](https://github.com/angular-threejs/angular-three/commit/8a14c89))
+- **plugin:** miss a typo ([994eb99](https://github.com/angular-threejs/angular-three/commit/994eb99))
+- **plugin:** trim the template when in append experience mode ([2fccad0](https://github.com/angular-threejs/angular-three/commit/2fccad0))
+- **plugin:** fix peer dependencies prompt for add-soba ([07eca89](https://github.com/angular-threejs/angular-three/commit/07eca89))
+- **plugin:** only add metadata json path to vscode settings if it's not there ([cafcf51](https://github.com/angular-threejs/angular-three/commit/cafcf51))
+- **plugin:** try using esnext ([2600c9e](https://github.com/angular-threejs/angular-three/commit/2600c9e))
+- **plugin:** adjust add-soba generator to make sure all peer deps are installed properly ([caf58a6](https://github.com/angular-threejs/angular-three/commit/caf58a6))
+- **plugin:** add missing peer dep to collection ([3d6362c](https://github.com/angular-threejs/angular-three/commit/3d6362c))
+- **plugin:** bump threejs version ([18b9a9e](https://github.com/angular-threejs/angular-three/commit/18b9a9e))
+- **postprocessing:** update peer deps ([4d5ee21](https://github.com/angular-threejs/angular-three/commit/4d5ee21))
+- **postprocessing:** remove afterNextRender and autoEffect ([4d0918d](https://github.com/angular-threejs/angular-three/commit/4d0918d))
+- **rapier:** clean up framestepper; remove afterNextRender and autoEffect ([0e27857](https://github.com/angular-threejs/angular-three/commit/0e27857))
+- **rapier:** auto colliders should still work if physicsColliders is false BUT colliders is set ([07ecec0](https://github.com/angular-threejs/angular-three/commit/07ecec0))
+- **rapier:** clean up rapier ([9cda37b](https://github.com/angular-threejs/angular-three/commit/9cda37b))
+- **repo:** align peer dependencies ranges to better control them ([bcebf76](https://github.com/angular-threejs/angular-three/commit/bcebf76))
+- **soba:** extend InstancedBufferAttribute ([e39cdb2](https://github.com/angular-threejs/angular-three/commit/e39cdb2))
+- **soba:** attempt to use args for instanced buffer attribute ([6862a07](https://github.com/angular-threejs/angular-three/commit/6862a07))
+- **soba:** reverse occlusion logic in HTML ([17c5123](https://github.com/angular-threejs/angular-three/commit/17c5123))
+- **soba:** use texture params for progressive light maps ([72fef8c](https://github.com/angular-threejs/angular-three/commit/72fef8c))
+- **soba:** ensure default intensity for accumulative shadows is taking legacy lights into account ([89f060f](https://github.com/angular-threejs/angular-three/commit/89f060f))
+- **soba:** add content projection for orbit controls ([8a6526c](https://github.com/angular-threejs/angular-three/commit/8a6526c))
+- **soba:** clean up cube camera ([ce60420](https://github.com/angular-threejs/angular-three/commit/ce60420))
+- **soba:** make fbo return a Signal instead of NgtInjectedRef ([6160a2e](https://github.com/angular-threejs/angular-three/commit/6160a2e))
+- **soba:** clean up trail texture ([e8a94c2](https://github.com/angular-threejs/angular-three/commit/e8a94c2))
+- **soba:** make ngtsTrail return a Signal instead of NgtInjectedRef ([5d30c3a](https://github.com/angular-threejs/angular-three/commit/5d30c3a))
+- **soba:** match MeshTransmissionMaterial with Drei ([0d09a28](https://github.com/angular-threejs/angular-three/commit/0d09a28))
+- **soba:** clean up animations ([90545c6](https://github.com/angular-threejs/angular-three/commit/90545c6))
+- **soba:** clean up sampler ([d7426b7](https://github.com/angular-threejs/angular-three/commit/d7426b7))
+- **soba:** use valid angular for caustics ([70f4f32](https://github.com/angular-threejs/angular-three/commit/70f4f32))
+- **soba:** adjust type for all attach input to NgtAttachable ([02bbc13](https://github.com/angular-threejs/angular-three/commit/02bbc13))
+- **soba:** rename directive selectors to camel case instead of kebab ([ce1d543](https://github.com/angular-threejs/angular-three/commit/ce1d543))
+- **soba:** adjust contact shadows ([aa3d022](https://github.com/angular-threejs/angular-three/commit/aa3d022))
+- **soba:** fix options type for helper ([f8f93a5](https://github.com/angular-threejs/angular-three/commit/f8f93a5))
+- **soba:** adjust type for gltfloader onLoad and allows preLoad to pass in onLoad ([7d0ad62](https://github.com/angular-threejs/angular-three/commit/7d0ad62))
+- **soba:** attempt to use commonjs with loadEsmModule ([78060c0](https://github.com/angular-threejs/angular-three/commit/78060c0))
+- **soba:** another attempt to load injectGLTF ([02ccc26](https://github.com/angular-threejs/angular-three/commit/02ccc26))
+- **soba:** test gltf generator ([8d4c75d](https://github.com/angular-threejs/angular-three/commit/8d4c75d))
+- **soba:** remove gltf generator (gonna make a separate CLI instead) ([ab1603a](https://github.com/angular-threejs/angular-three/commit/ab1603a))
+- **soba:** another attempt with gltf generator using node-three-gltf ([5095308](https://github.com/angular-threejs/angular-three/commit/5095308))
+- **soba:** remove gltf generator again ([08dbc31](https://github.com/angular-threejs/angular-three/commit/08dbc31))
+- ⚠️ **soba:** unwrap `afterNextRender` in `injectHelper` ([537be01](https://github.com/angular-threejs/angular-three/commit/537be01))
+- ⚠️ **soba:** unwrap `afterNextRender` in `injectFBO`, `injectIntersect`, and `injectSurfaceSampler` ([0599c1a](https://github.com/angular-threejs/angular-three/commit/0599c1a))
+- ⚠️ **soba:** unwrap `afterNextRender` in `injectEnvironment` and `injectNormalTexture` ([47dba57](https://github.com/angular-threejs/angular-three/commit/47dba57))
+- **soba:** clean up `injectAnimations` ([c52b925](https://github.com/angular-threejs/angular-three/commit/c52b925))
+- ⚠️ **soba:** unwrap `afterNextRender` in `injectAnimations` ([c325c92](https://github.com/angular-threejs/angular-three/commit/c325c92))
+- **soba:** update peer deps ([92e0e05](https://github.com/angular-threejs/angular-three/commit/92e0e05))
+- **soba:** adjust orbit controls event type ([877d006](https://github.com/angular-threejs/angular-three/commit/877d006))
+- **soba:** add attach input to prism geometry ([dc83f8b](https://github.com/angular-threejs/angular-three/commit/dc83f8b))
+- **soba:** bump pmndrs/vanilla version ([2599568](https://github.com/angular-threejs/angular-three/commit/2599568))
+- **soba:** add preload and clear to injectEnvironment ([395d6bf](https://github.com/angular-threejs/angular-three/commit/395d6bf))
+- **soba:** track parent nonObjects before creating decal ([0091a6f](https://github.com/angular-threejs/angular-three/commit/0091a6f))
+- **soba:** clean up sampler; use computed instead of setting signals in effect ([f5262bc](https://github.com/angular-threejs/angular-three/commit/f5262bc))
+- **soba:** also register nonObjects() for center (so geometries can be taken into account) ([71d4c2c](https://github.com/angular-threejs/angular-three/commit/71d4c2c))
+- **soba:** clean up environment; use effect more effectively (no pun) ([a8e2966](https://github.com/angular-threejs/angular-three/commit/a8e2966))
+- **soba:** clean up sampler even more ([88fbae4](https://github.com/angular-threejs/angular-three/commit/88fbae4))
+- **soba:** clean up a lot of afterNextRender / autoEffect ([d41fc91](https://github.com/angular-threejs/angular-three/commit/d41fc91))
+- **soba:** clean up sampler returning the computed directly ([f33136c](https://github.com/angular-threejs/angular-three/commit/f33136c))
+- **soba:** fix type for viewcube ([749b97b](https://github.com/angular-threejs/angular-three/commit/749b97b))
+
+### 💅 Refactors
+
+- **cannon:** adjust injectBody ([be14df8](https://github.com/angular-threejs/angular-three/commit/be14df8))
+- **core:** use VCR from canvas element instead of host ([f739b89](https://github.com/angular-threejs/angular-three/commit/f739b89))
+- **core:** nullify the __ngt_dom_parent__ for HTML component ([57c0568](https://github.com/angular-threejs/angular-three/commit/57c0568))
+- **core:** use DebugNode instead of getDebugNode ([7f39e5c](https://github.com/angular-threejs/angular-three/commit/7f39e5c))
+- **core:** remove unnecessary untracked in noZoneRender ([af5e8c6](https://github.com/angular-threejs/angular-three/commit/af5e8c6))
+- **core:** clean up canvas and portal ([709d259](https://github.com/angular-threejs/angular-three/commit/709d259))
+- **core:** improve hexify performance with internal instance cache ([8290542](https://github.com/angular-threejs/angular-three/commit/8290542))
+- **soba:** adjust shader material to not spread on uniforms ([bbd747f](https://github.com/angular-threejs/angular-three/commit/bbd747f))
+- **soba:** extract THREE.REVISION to a constant ([c6a253c](https://github.com/angular-threejs/angular-three/commit/c6a253c))
+- **soba:** simplify contact shadows; multiply frames to workaround race cond ([224ef16](https://github.com/angular-threejs/angular-three/commit/224ef16))
+- **soba:** simplify render texture template ([7a9c2be](https://github.com/angular-threejs/angular-three/commit/7a9c2be))
+- **soba:** use raycast=null instead of nullRaycast ([c92c021](https://github.com/angular-threejs/angular-three/commit/c92c021))
+
+### ⚠️ Breaking Changes
+
+- **rapier:** in order to support fallback content, physics content
+- **cannon:** This is considered a breaking change because of change
+- **core:** this is considered a breaking change because of timing
+- **soba:** this is considered a breaking change because of timing
+- **soba:** this is considered a breaking change because of timing
+- **soba:** this is considered a breaking change because of timing
+- ⚠️ **soba:** unwrap `afterNextRender` in `injectAnimations` ([c325c92](https://github.com/angular-threejs/angular-three/commit/c325c92))
+
+### ❤️ Thank You
+
+- Chau Tran
+- nartc
+
## [2.0.0-beta.41](https://github.com/angular-threejs/angular-three/compare/2.0.0-beta.40...2.0.0-beta.41) (2023-10-04)
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..3f51f141
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+- The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+ngrx[.]team[@]gmail.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..e3ba2892
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,297 @@
+# Contributing to Angular Three
+
+We would love for you to contribute to Angular Three and help make it even better than it is today!
+As a contributor, here are the guidelines we would like you to follow:
+
+- [Code of Conduct](#coc)
+- [Question or Problem?](#question)
+- [Issues and Bugs](#issue)
+- [Feature Requests](#feature)
+- [Submission Guidelines](#submit)
+- [Coding Rules](#rules)
+- [Commit Message Guidelines](#commit)
+
+## Code of Conduct
+
+Help us keep Angular Three open and inclusive.
+Please read and follow our [Code of Conduct][coc].
+
+## Got a Question or Problem?
+
+Use [GitHub Discussions](https://github.com/angular-threejs/angular-three/discussions) to ask questions about Angular Three.
+
+Please keep the issue tracker for bug reports and feature requests.
+
+## Found a Bug?
+
+If you find a bug in the source code, you can help us by [submitting an issue](#submit-issue) to our [GitHub Repository][github].
+Even better, you can [submit a Pull Request](#submit-pr) with a fix.
+
+## Missing a Feature?
+
+You can _request_ a new feature by [submitting an issue](#submit-issue) to our GitHub Repository.
+If you would like to _implement_ a new feature, please consider the size of the change in order to determine the right steps to proceed:
+
+- For a **Major Feature**, first open an issue and outline your proposal so that it can be discussed.
+ This process allows us to better coordinate our efforts, prevent duplication of work, and help you to craft the change so that it is successfully accepted into the project.
+
+ **Note**: Adding a new topic to the documentation, or significantly re-writing a topic, counts as a major feature.
+
+- **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr).
+
+## Submission Guidelines
+
+### Submitting an Issue
+
+Before you submit an issue, please search the issue tracker. An issue for your problem might already exist and the discussion might inform you of workarounds readily available.
+
+We want to fix all the issues as soon as possible, but before fixing a bug, we need to reproduce and confirm it.
+In order to reproduce bugs, we require that you provide a **minimal reproduction**.
+Having a minimal reproducible scenario gives us a wealth of important information without going back and forth to you with additional questions.
+
+A minimal reproduction allows us to quickly confirm a bug (or point out a coding problem) as well as confirm that we are fixing the right problem.
+
+We require a minimal reproduction to save maintainers' time and ultimately be able to fix more bugs.
+Often, developers find coding problems themselves while preparing a minimal reproduction.
+We understand that sometimes it might be hard to extract essential bits of code from a larger codebase, but we really need to isolate the problem before we can fix it.
+
+Unfortunately, we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you, we are going to close an issue that doesn't have enough info to be reproduced.
+
+### Submitting a Pull Request (PR)
+
+Before you submit your Pull Request (PR) consider the following guidelines:
+
+1. Search [GitHub](https://github.com/angular-threejs/angular-three/pulls) for an open or closed PR that relates to your submission.
+ You don't want to duplicate existing efforts.
+
+2. Be sure that an issue describes the problem you're fixing, or documents the design for the feature you'd like to add.
+ Discussing the design upfront helps to ensure that we're ready to accept your work.
+
+3. [Fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) the angular/angular repo.
+
+4. In your forked repository, make your changes in a new git branch:
+
+ ```shell
+ git checkout -b my-fix-branch main
+ ```
+
+5. Create your patch, **including appropriate test cases**.
+
+6. Follow our [Coding Rules](#rules).
+
+7. Commit your changes using a descriptive commit message that follows our [commit message conventions](#commit).
+ Adherence to these conventions is necessary because release notes are automatically generated from these messages.
+
+ ```shell
+ git commit --all
+ ```
+
+ Note: the optional commit `--all` command line option will automatically "add" and "rm" edited files.
+
+8. Push your branch to GitHub:
+
+ ```shell
+ git push origin my-fix-branch
+ ```
+
+9. In GitHub, send a pull request to `angular-three:main`.
+
+#### Addressing review feedback
+
+If we ask for changes via code reviews then:
+
+1. Make the required updates to the code.
+
+2. Create a fixup commit and push to your GitHub repository (this will update your Pull Request):
+
+ ```shell
+ git commit --all --fixup HEAD
+ git push
+ ```
+
+ For more info on working with fixup commits see [here](./contributing-docs/using-fixup-commits.md).
+
+That's it! Thank you for your contribution!
+
+##### Updating the commit message
+
+A reviewer might often suggest changes to a commit message (for example, to add more context for a change or adhere to our [commit message guidelines](#commit)).
+In order to update the commit message of the last commit on your branch:
+
+1. Check out your branch:
+
+ ```shell
+ git checkout my-fix-branch
+ ```
+
+2. Amend the last commit and modify the commit message:
+
+ ```shell
+ git commit --amend
+ ```
+
+3. Push to your GitHub repository:
+
+ ```shell
+ git push --force-with-lease
+ ```
+
+> NOTE:
+> If you need to update the commit message of an earlier commit, you can use `git rebase` in interactive mode.
+> See the [git docs](https://git-scm.com/docs/git-rebase#_interactive_mode) for more details.
+
+#### After your pull request is merged
+
+After your pull request is merged, you can safely delete your branch and pull the changes from the main (upstream) repository:
+
+- Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:
+
+ ```shell
+ git push origin --delete my-fix-branch
+ ```
+
+- Check out the main branch:
+
+ ```shell
+ git checkout main -f
+ ```
+
+- Delete the local branch:
+
+ ```shell
+ git branch -D my-fix-branch
+ ```
+
+- Update your local `main` with the latest upstream version:
+
+ ```shell
+ git pull --ff upstream main
+ ```
+
+## Coding Rules
+
+To ensure consistency throughout the source code, keep these rules in mind as you are working:
+
+- All features or bug fixes **must be tested** by one or more specs (unit-tests).
+- All public API methods **must be documented**.
+
+## Commit Message Format
+
+We have very precise rules over how our Git commit messages must be formatted.
+This format leads to **easier to read commit history**.
+
+Each commit message consists of a **header**, a **body**, and a **footer**.
+
+```
+
+
+
+
+