diff --git a/angular.json b/angular.json
index 323c9b5..9635004 100644
--- a/angular.json
+++ b/angular.json
@@ -26,9 +26,17 @@
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
- "src/assets"
+ "src/assets",
+ {
+ "glob": "**/*",
+ "input": "node_modules/@taiga-ui/icons/src",
+ "output": "assets/taiga-ui/icons"
+ }
],
"styles": [
+ "node_modules/@taiga-ui/core/styles/taiga-ui-theme.less",
+ "node_modules/@taiga-ui/core/styles/taiga-ui-fonts.less",
+ "node_modules/@taiga-ui/styles/taiga-ui-global.less",
"src/styles.scss"
],
"scripts": []
diff --git a/package-lock.json b/package-lock.json
index 2f0f695..6e0839a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,13 @@
"@angular/platform-browser": "^14.1.0",
"@angular/platform-browser-dynamic": "^14.1.0",
"@angular/router": "^14.1.0",
+ "@taiga-ui/cdk": "^3.6.0",
+ "@taiga-ui/core": "^3.6.0",
+ "@taiga-ui/icons": "^3.6.0",
+ "@taiga-ui/kit": "^3.6.0",
+ "@taiga-ui/styles": "^3.6.0",
+ "@tinkoff/ng-dompurify": "3.0.0",
+ "dompurify": "2.2.9",
"rxjs": "~7.5.0",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
@@ -25,7 +32,7 @@
"@angular-devkit/build-angular": "^14.1.3",
"@angular/cli": "~14.1.3",
"@angular/compiler-cli": "^14.1.0",
- "@schematics/angular": "^14.2.6",
+ "@types/dompurify": "2.2.3",
"@types/jasmine": "~4.0.0",
"jasmine-core": "~4.2.0",
"karma": "~6.4.0",
@@ -305,7 +312,7 @@
"version": "14.1.3",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.3.tgz",
"integrity": "sha512-i1vuuClGvBzmgQi3qAUWTwLdnGJZ/C8xVeFMHXmgVNZhck9/8xGGusi500SYsGcVzEfetGSJt5hOfUHmVrcpbg==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"@angular-devkit/core": "14.1.3",
"jsonc-parser": "3.1.0",
@@ -323,7 +330,7 @@
"version": "14.1.3",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz",
"integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"ajv": "8.11.0",
"ajv-formats": "2.1.1",
@@ -349,7 +356,7 @@
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"tslib": "^1.9.0"
},
@@ -361,7 +368,7 @@
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "devOptional": true
},
"node_modules/@angular/animations": {
"version": "14.2.6",
@@ -454,22 +461,6 @@
}
}
},
- "node_modules/@angular/cli/node_modules/@schematics/angular": {
- "version": "14.1.3",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz",
- "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "14.1.3",
- "@angular-devkit/schematics": "14.1.3",
- "jsonc-parser": "3.1.0"
- },
- "engines": {
- "node": "^14.15.0 || >=16.10.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- }
- },
"node_modules/@angular/cli/node_modules/rxjs": {
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -2627,6 +2618,55 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
+ "node_modules/@ng-web-apis/common": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-2.0.1.tgz",
+ "integrity": "sha512-DqnH+zZFFKeINpbFIzCrBTYksP+7FqrHxWo2+jIXfMLjSngwZ6WYz3F4N9s+tFc8mKe8I1/P7pZtxD7fqSPtlA==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "peerDependencies": {
+ "@angular/common": ">=12.0.0",
+ "@angular/core": ">=12.0.0",
+ "rxjs": ">=6.4.0"
+ }
+ },
+ "node_modules/@ng-web-apis/intersection-observer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-3.0.0.tgz",
+ "integrity": "sha512-Y3ts9WgXG/A6atyMlFOoP8ZNczUNxUGHSV4ii4xCepwcKW2gN/kkimsP4oPtb7UsTWzN1tF1n0bgD2civraZiA==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=12.0.0",
+ "@ng-web-apis/common": ">=2.0.0"
+ }
+ },
+ "node_modules/@ng-web-apis/mutation-observer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-2.0.0.tgz",
+ "integrity": "sha512-f51Cu2DloNze1HaTWdUbtYFnt9VXhzpEnHDd9KFdiKOUNfEDx7wrSXIEQqv810hrq7F2jcIAERCdiqV6ItH7Pg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=12.0.0",
+ "@ng-web-apis/common": ">=2.0.0"
+ }
+ },
+ "node_modules/@ng-web-apis/resize-observer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-2.0.0.tgz",
+ "integrity": "sha512-umuXJepTYBCI3ZcW9873fozO0qt1PeHLBNM+wXA+7Wphy35+RQcPNmkwfgkKqWceIjlYAvyuPTNWa5TM1OEeqg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=12.0.0",
+ "@ng-web-apis/common": ">=2.0.0"
+ }
+ },
"node_modules/@ngtools/webpack": {
"version": "14.2.6",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz",
@@ -2802,13 +2842,13 @@
}
},
"node_modules/@schematics/angular": {
- "version": "14.2.6",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.6.tgz",
- "integrity": "sha512-oeyMAQr3Q9nvAX+5FRgXcTMX9lqqenElBmAuwfqqdB0qD1jmkJ8TpWRuvYVA/931njpIwhfyLrzmzeNnJb23Sg==",
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz",
+ "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==",
"dev": true,
"dependencies": {
- "@angular-devkit/core": "14.2.6",
- "@angular-devkit/schematics": "14.2.6",
+ "@angular-devkit/core": "14.1.3",
+ "@angular-devkit/schematics": "14.1.3",
"jsonc-parser": "3.1.0"
},
"engines": {
@@ -2817,22 +2857,30 @@
"yarn": ">= 1.13.0"
}
},
- "node_modules/@schematics/angular/node_modules/@angular-devkit/schematics": {
- "version": "14.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.6.tgz",
- "integrity": "sha512-mSFtc4M49mWrYsgJx/P6bA6SzXb8SeZqmppKRMoEQxiXI1bwFdGLNWzAmzEsGvS96h/nPIaOfcX5cKJSp++4FA==",
+ "node_modules/@schematics/angular/node_modules/@angular-devkit/core": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz",
+ "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==",
"dev": true,
"dependencies": {
- "@angular-devkit/core": "14.2.6",
+ "ajv": "8.11.0",
+ "ajv-formats": "2.1.1",
"jsonc-parser": "3.1.0",
- "magic-string": "0.26.2",
- "ora": "5.4.1",
- "rxjs": "6.6.7"
+ "rxjs": "6.6.7",
+ "source-map": "0.7.4"
},
"engines": {
"node": "^14.15.0 || >=16.10.0",
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
"yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^3.5.2"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
}
},
"node_modules/@schematics/angular/node_modules/rxjs": {
@@ -2859,6 +2907,145 @@
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
"devOptional": true
},
+ "node_modules/@taiga-ui/cdk": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-3.6.0.tgz",
+ "integrity": "sha512-J9FSv2FzNdIW28wS0IsVJmKHOWmsnMAXMDzgApyjqS99C4Mzsu5i/T2lArAZgYTp12/XulFsMuo0BppN5FfYsw==",
+ "dependencies": {
+ "@ng-web-apis/common": "2.0.1",
+ "@ng-web-apis/mutation-observer": "2.0.0",
+ "@ng-web-apis/resize-observer": "2.0.0",
+ "@tinkoff/ng-event-plugins": "3.0.0",
+ "@tinkoff/ng-polymorpheus": "4.0.7",
+ "tslib": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "ng-morph": "^2.1.0",
+ "parse5": "^6.0.1"
+ },
+ "peerDependencies": {
+ "@angular/animations": ">=9.0.0",
+ "@angular/common": ">=9.0.0",
+ "@angular/core": ">=9.0.0",
+ "@angular/forms": ">=9.0.0",
+ "rxjs": ">=6.0.0"
+ }
+ },
+ "node_modules/@taiga-ui/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-RK3Q2MCE8JllXgtP7DLTSl0okhDZSyYdg23uVudmhBE57ktRFIrpIo+zrns9jRnRrl2JfY5SxmnhOxSE4F5QJQ==",
+ "dependencies": {
+ "@taiga-ui/i18n": "^3.6.0",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/animations": ">=9.0.0",
+ "@angular/common": ">=9.0.0",
+ "@angular/core": ">=9.0.0",
+ "@angular/forms": ">=9.0.0",
+ "@angular/platform-browser": ">=9.0.0",
+ "@angular/router": ">=9.0.0",
+ "@ng-web-apis/common": ">=2.0.0",
+ "@ng-web-apis/mutation-observer": ">=2.0.0",
+ "@taiga-ui/cdk": ">=3.6.0",
+ "@taiga-ui/i18n": ">=3.6.0",
+ "@tinkoff/ng-event-plugins": ">=3.0.0",
+ "@tinkoff/ng-polymorpheus": ">=4.0.0",
+ "rxjs": ">=6.0.0"
+ }
+ },
+ "node_modules/@taiga-ui/i18n": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-3.6.0.tgz",
+ "integrity": "sha512-ICWTLPmZuuZkn+RHA8mPG2ee00ImIQn2nMFsK+jsRBGEhFx5Nsqu7+0z7khl8xE3SLntPLNDu/BcswwZPmWHow==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=9.0.0",
+ "rxjs": ">=6.0.0"
+ }
+ },
+ "node_modules/@taiga-ui/icons": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-3.6.0.tgz",
+ "integrity": "sha512-SabHVIXYEfQCOTOL+BZP+QyrI8e5jyt3kIYh6rHQJ835okJ4Ali7aFA/68r/ceNrE+0w+YfjCgYrAWfUpXT4kQ==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ }
+ },
+ "node_modules/@taiga-ui/kit": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-3.6.0.tgz",
+ "integrity": "sha512-ZBZgd9hsrSmYYTRr96EY04Xh39XYdrqBkOPxqNnNGcH8QaOY01+XjLgmfFMaQ65/IjmxF4EpUXdCYz9M0kuP1g==",
+ "dependencies": {
+ "@ng-web-apis/intersection-observer": "^3.0.0",
+ "text-mask-core": "^5.0.0",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": ">=9.0.0",
+ "@angular/core": ">=9.0.0",
+ "@angular/forms": ">=9.0.0",
+ "@angular/router": ">=9.0.0",
+ "@ng-web-apis/common": ">=2.0.0",
+ "@ng-web-apis/mutation-observer": ">=2.0.0",
+ "@taiga-ui/cdk": ">=3.6.0",
+ "@taiga-ui/core": ">=3.6.0",
+ "@taiga-ui/i18n": ">=3.6.0",
+ "@tinkoff/ng-polymorpheus": ">=4.0.0",
+ "rxjs": ">=6.0.0"
+ }
+ },
+ "node_modules/@taiga-ui/styles": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-3.6.0.tgz",
+ "integrity": "sha512-iv4vbi7bMJLzqVdOFaX8YCXc4e4h+/vxRhub+QwVnyjOnUDn70KpQkByknPYx7tJlv1McrFUVPOBulUOV4zKJQ=="
+ },
+ "node_modules/@tinkoff/ng-dompurify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-dompurify/-/ng-dompurify-3.0.0.tgz",
+ "integrity": "sha512-Gx153lEakv4nEDZXFd2vW2zK8fI7fJMu8ZaRaPgGcq1wrAe0ps/mCZdg9KXNdyLUvwTu3WFsJXj5CwCG6Zfucg==",
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=4.0.0",
+ "@angular/platform-browser": ">=4.0.0",
+ "@types/dompurify": ">=2.0.0",
+ "dompurify": ">=2.0.0"
+ }
+ },
+ "node_modules/@tinkoff/ng-dompurify/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@tinkoff/ng-event-plugins": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-3.0.0.tgz",
+ "integrity": "sha512-3+5R86ozam9uevQ5N7+B/lPMWYCfQGxUOxuSp6qccpPTWqCjTBGjlhRVdt11r6S+3Gx2r9y4rgZ1Q1/P58MOFA==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=12.0.0",
+ "@angular/platform-browser": ">=12.0.0",
+ "rxjs": ">=6.0.0"
+ }
+ },
+ "node_modules/@tinkoff/ng-polymorpheus": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-polymorpheus/-/ng-polymorpheus-4.0.7.tgz",
+ "integrity": "sha512-+Gbwk9vfJVNbN1qy0L3pV+QW1sBkLfyAC1DsEdgSS3+c2qa2UEzDma5NTsaBbKoGTr3B3Qlryly8cTSz0JMLAQ==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/core": ">=12.0.0"
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -2868,6 +3055,40 @@
"node": ">= 10"
}
},
+ "node_modules/@ts-morph/common": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.9.2.tgz",
+ "integrity": "sha512-IPyg+c3Am0EBoa63W0f/AKeLrJhvzMzQ4BIvD1baxLopmiHOj1HFTXYxC6e8iTZ+UYtN+/WFM9UyGRnoA20b8g==",
+ "optional": true,
+ "dependencies": {
+ "fast-glob": "^3.2.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^1.0.4",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "optional": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
@@ -2934,6 +3155,14 @@
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
"devOptional": true
},
+ "node_modules/@types/dompurify": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.2.3.tgz",
+ "integrity": "sha512-CLtc2mZK8+axmrz1JqtpklO/Kvn38arGc8o1l3UVopZaXXuer9ONdZwJ/9f226GrhRLtUmLr9WrvZsRSNpS8og==",
+ "dependencies": {
+ "@types/trusted-types": "*"
+ }
+ },
"node_modules/@types/eslint": {
"version": "8.4.6",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
@@ -3007,6 +3236,12 @@
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
+ "node_modules/@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "optional": true
+ },
"node_modules/@types/node": {
"version": "18.11.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz",
@@ -3057,6 +3292,11 @@
"@types/node": "*"
}
},
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
+ "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
+ },
"node_modules/@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -3471,11 +3711,38 @@
"sprintf-js": "~1.0.2"
}
},
+ "node_modules/array-differ": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+ "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/array-flatten": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
},
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/autoprefixer": {
"version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
@@ -4013,6 +4280,12 @@
"node": ">=6"
}
},
+ "node_modules/code-block-writer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz",
+ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==",
+ "optional": true
+ },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -4730,6 +5003,11 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.2.9",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.9.tgz",
+ "integrity": "sha512-+9MqacuigMIZ+1+EwoEltogyWGFTJZWU3258Rupxs+2CGs4H914G9er6pZbsme/bvb5L67o2rade9n21e4RW/w=="
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -7587,6 +7865,47 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/multimatch": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
+ "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
+ "optional": true,
+ "dependencies": {
+ "@types/minimatch": "^3.0.3",
+ "array-differ": "^3.0.0",
+ "array-union": "^2.1.0",
+ "arrify": "^2.0.1",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/multimatch/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/multimatch/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "optional": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/mute-stream": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
@@ -7654,6 +7973,50 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
+ "node_modules/ng-morph": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ng-morph/-/ng-morph-2.1.1.tgz",
+ "integrity": "sha512-mUziQxQm0YnP9WOCy2WRZVq6xNf+WgAvosdPU+hwmGUinoZ6vBrP3GECoRmM7Aor0PDG1KNIarJsDNS7BlxTLQ==",
+ "optional": true,
+ "dependencies": {
+ "jsonc-parser": "3.0.0",
+ "minimatch": "3.0.4",
+ "multimatch": "5.0.0",
+ "ts-morph": "10.0.2"
+ },
+ "peerDependencies": {
+ "@angular-devkit/core": ">=11.0.0",
+ "@angular-devkit/schematics": ">=11.0.0"
+ }
+ },
+ "node_modules/ng-morph/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/ng-morph/node_modules/jsonc-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
+ "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+ "optional": true
+ },
+ "node_modules/ng-morph/node_modules/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "optional": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/nice-napi": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
@@ -8355,6 +8718,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "optional": true
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -10546,6 +10915,11 @@
"node": "*"
}
},
+ "node_modules/text-mask-core": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/text-mask-core/-/text-mask-core-5.1.2.tgz",
+ "integrity": "sha512-VfkCMdmRRZqXgQZFlDMiavm3hzsMzBM23CxHZsaeAYg66ZhXCNJWrFmnJwNy8KF9f74YvAUAuQenxsMCfuvhUw=="
+ },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -10607,6 +10981,16 @@
"tree-kill": "cli.js"
}
},
+ "node_modules/ts-morph": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-10.0.2.tgz",
+ "integrity": "sha512-TVuIfEqtr9dW25K3Jajqpqx7t/zLRFxKu2rXQZSDjTm4MO4lfmuj1hn8WEryjeDDBFcNOCi+yOmYUYR4HucrAg==",
+ "optional": true,
+ "dependencies": {
+ "@ts-morph/common": "~0.9.0",
+ "code-block-writer": "^10.1.1"
+ }
+ },
"node_modules/ts-node": {
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
@@ -11570,7 +11954,7 @@
"version": "14.1.3",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.3.tgz",
"integrity": "sha512-i1vuuClGvBzmgQi3qAUWTwLdnGJZ/C8xVeFMHXmgVNZhck9/8xGGusi500SYsGcVzEfetGSJt5hOfUHmVrcpbg==",
- "dev": true,
+ "devOptional": true,
"requires": {
"@angular-devkit/core": "14.1.3",
"jsonc-parser": "3.1.0",
@@ -11583,7 +11967,7 @@
"version": "14.1.3",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz",
"integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==",
- "dev": true,
+ "devOptional": true,
"requires": {
"ajv": "8.11.0",
"ajv-formats": "2.1.1",
@@ -11596,7 +11980,7 @@
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
+ "devOptional": true,
"requires": {
"tslib": "^1.9.0"
}
@@ -11605,7 +11989,7 @@
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "devOptional": true
}
}
},
@@ -11668,17 +12052,6 @@
"source-map": "0.7.4"
}
},
- "@schematics/angular": {
- "version": "14.1.3",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz",
- "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "14.1.3",
- "@angular-devkit/schematics": "14.1.3",
- "jsonc-parser": "3.1.0"
- }
- },
"rxjs": {
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -13081,6 +13454,38 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
+ "@ng-web-apis/common": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-2.0.1.tgz",
+ "integrity": "sha512-DqnH+zZFFKeINpbFIzCrBTYksP+7FqrHxWo2+jIXfMLjSngwZ6WYz3F4N9s+tFc8mKe8I1/P7pZtxD7fqSPtlA==",
+ "requires": {
+ "tslib": "^2.2.0"
+ }
+ },
+ "@ng-web-apis/intersection-observer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-3.0.0.tgz",
+ "integrity": "sha512-Y3ts9WgXG/A6atyMlFOoP8ZNczUNxUGHSV4ii4xCepwcKW2gN/kkimsP4oPtb7UsTWzN1tF1n0bgD2civraZiA==",
+ "requires": {
+ "tslib": "^2.2.0"
+ }
+ },
+ "@ng-web-apis/mutation-observer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-2.0.0.tgz",
+ "integrity": "sha512-f51Cu2DloNze1HaTWdUbtYFnt9VXhzpEnHDd9KFdiKOUNfEDx7wrSXIEQqv810hrq7F2jcIAERCdiqV6ItH7Pg==",
+ "requires": {
+ "tslib": "^2.2.0"
+ }
+ },
+ "@ng-web-apis/resize-observer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-2.0.0.tgz",
+ "integrity": "sha512-umuXJepTYBCI3ZcW9873fozO0qt1PeHLBNM+wXA+7Wphy35+RQcPNmkwfgkKqWceIjlYAvyuPTNWa5TM1OEeqg==",
+ "requires": {
+ "tslib": "^2.2.0"
+ }
+ },
"@ngtools/webpack": {
"version": "14.2.6",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz",
@@ -13206,27 +13611,27 @@
}
},
"@schematics/angular": {
- "version": "14.2.6",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.6.tgz",
- "integrity": "sha512-oeyMAQr3Q9nvAX+5FRgXcTMX9lqqenElBmAuwfqqdB0qD1jmkJ8TpWRuvYVA/931njpIwhfyLrzmzeNnJb23Sg==",
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz",
+ "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==",
"dev": true,
"requires": {
- "@angular-devkit/core": "14.2.6",
- "@angular-devkit/schematics": "14.2.6",
+ "@angular-devkit/core": "14.1.3",
+ "@angular-devkit/schematics": "14.1.3",
"jsonc-parser": "3.1.0"
},
"dependencies": {
- "@angular-devkit/schematics": {
- "version": "14.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.6.tgz",
- "integrity": "sha512-mSFtc4M49mWrYsgJx/P6bA6SzXb8SeZqmppKRMoEQxiXI1bwFdGLNWzAmzEsGvS96h/nPIaOfcX5cKJSp++4FA==",
+ "@angular-devkit/core": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz",
+ "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==",
"dev": true,
"requires": {
- "@angular-devkit/core": "14.2.6",
+ "ajv": "8.11.0",
+ "ajv-formats": "2.1.1",
"jsonc-parser": "3.1.0",
- "magic-string": "0.26.2",
- "ora": "5.4.1",
- "rxjs": "6.6.7"
+ "rxjs": "6.6.7",
+ "source-map": "0.7.4"
}
},
"rxjs": {
@@ -13252,12 +13657,131 @@
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
"devOptional": true
},
+ "@taiga-ui/cdk": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-3.6.0.tgz",
+ "integrity": "sha512-J9FSv2FzNdIW28wS0IsVJmKHOWmsnMAXMDzgApyjqS99C4Mzsu5i/T2lArAZgYTp12/XulFsMuo0BppN5FfYsw==",
+ "requires": {
+ "@ng-web-apis/common": "2.0.1",
+ "@ng-web-apis/mutation-observer": "2.0.0",
+ "@ng-web-apis/resize-observer": "2.0.0",
+ "@tinkoff/ng-event-plugins": "3.0.0",
+ "@tinkoff/ng-polymorpheus": "4.0.7",
+ "ng-morph": "^2.1.0",
+ "parse5": "^6.0.1",
+ "tslib": "^2.0.0"
+ }
+ },
+ "@taiga-ui/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-RK3Q2MCE8JllXgtP7DLTSl0okhDZSyYdg23uVudmhBE57ktRFIrpIo+zrns9jRnRrl2JfY5SxmnhOxSE4F5QJQ==",
+ "requires": {
+ "@taiga-ui/i18n": "^3.6.0",
+ "tslib": "^2.0.0"
+ }
+ },
+ "@taiga-ui/i18n": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-3.6.0.tgz",
+ "integrity": "sha512-ICWTLPmZuuZkn+RHA8mPG2ee00ImIQn2nMFsK+jsRBGEhFx5Nsqu7+0z7khl8xE3SLntPLNDu/BcswwZPmWHow==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
+ "@taiga-ui/icons": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-3.6.0.tgz",
+ "integrity": "sha512-SabHVIXYEfQCOTOL+BZP+QyrI8e5jyt3kIYh6rHQJ835okJ4Ali7aFA/68r/ceNrE+0w+YfjCgYrAWfUpXT4kQ==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
+ "@taiga-ui/kit": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-3.6.0.tgz",
+ "integrity": "sha512-ZBZgd9hsrSmYYTRr96EY04Xh39XYdrqBkOPxqNnNGcH8QaOY01+XjLgmfFMaQ65/IjmxF4EpUXdCYz9M0kuP1g==",
+ "requires": {
+ "@ng-web-apis/intersection-observer": "^3.0.0",
+ "text-mask-core": "^5.0.0",
+ "tslib": "^2.0.0"
+ }
+ },
+ "@taiga-ui/styles": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-3.6.0.tgz",
+ "integrity": "sha512-iv4vbi7bMJLzqVdOFaX8YCXc4e4h+/vxRhub+QwVnyjOnUDn70KpQkByknPYx7tJlv1McrFUVPOBulUOV4zKJQ=="
+ },
+ "@tinkoff/ng-dompurify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-dompurify/-/ng-dompurify-3.0.0.tgz",
+ "integrity": "sha512-Gx153lEakv4nEDZXFd2vW2zK8fI7fJMu8ZaRaPgGcq1wrAe0ps/mCZdg9KXNdyLUvwTu3WFsJXj5CwCG6Zfucg==",
+ "requires": {
+ "tslib": "^1.9.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@tinkoff/ng-event-plugins": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-3.0.0.tgz",
+ "integrity": "sha512-3+5R86ozam9uevQ5N7+B/lPMWYCfQGxUOxuSp6qccpPTWqCjTBGjlhRVdt11r6S+3Gx2r9y4rgZ1Q1/P58MOFA==",
+ "requires": {
+ "tslib": "^2.2.0"
+ }
+ },
+ "@tinkoff/ng-polymorpheus": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tinkoff/ng-polymorpheus/-/ng-polymorpheus-4.0.7.tgz",
+ "integrity": "sha512-+Gbwk9vfJVNbN1qy0L3pV+QW1sBkLfyAC1DsEdgSS3+c2qa2UEzDma5NTsaBbKoGTr3B3Qlryly8cTSz0JMLAQ==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
"@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true
},
+ "@ts-morph/common": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.9.2.tgz",
+ "integrity": "sha512-IPyg+c3Am0EBoa63W0f/AKeLrJhvzMzQ4BIvD1baxLopmiHOj1HFTXYxC6e8iTZ+UYtN+/WFM9UyGRnoA20b8g==",
+ "optional": true,
+ "requires": {
+ "fast-glob": "^3.2.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^1.0.4",
+ "path-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
"@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
@@ -13324,6 +13848,14 @@
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
"devOptional": true
},
+ "@types/dompurify": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.2.3.tgz",
+ "integrity": "sha512-CLtc2mZK8+axmrz1JqtpklO/Kvn38arGc8o1l3UVopZaXXuer9ONdZwJ/9f226GrhRLtUmLr9WrvZsRSNpS8og==",
+ "requires": {
+ "@types/trusted-types": "*"
+ }
+ },
"@types/eslint": {
"version": "8.4.6",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
@@ -13397,6 +13929,12 @@
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
+ "@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "optional": true
+ },
"@types/node": {
"version": "18.11.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz",
@@ -13447,6 +13985,11 @@
"@types/node": "*"
}
},
+ "@types/trusted-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
+ "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
+ },
"@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -13791,11 +14334,29 @@
"sprintf-js": "~1.0.2"
}
},
+ "array-differ": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+ "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
+ "optional": true
+ },
"array-flatten": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
},
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "optional": true
+ },
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "optional": true
+ },
"autoprefixer": {
"version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
@@ -14169,6 +14730,12 @@
"shallow-clone": "^3.0.0"
}
},
+ "code-block-writer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz",
+ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==",
+ "optional": true
+ },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -14691,6 +15258,11 @@
"domelementtype": "^2.2.0"
}
},
+ "dompurify": {
+ "version": "2.2.9",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.9.tgz",
+ "integrity": "sha512-+9MqacuigMIZ+1+EwoEltogyWGFTJZWU3258Rupxs+2CGs4H914G9er6pZbsme/bvb5L67o2rade9n21e4RW/w=="
+ },
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -16712,6 +17284,40 @@
"thunky": "^1.0.2"
}
},
+ "multimatch": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
+ "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
+ "optional": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "array-differ": "^3.0.0",
+ "array-union": "^2.1.0",
+ "arrify": "^2.0.1",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
"mute-stream": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
@@ -16763,6 +17369,45 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
+ "ng-morph": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ng-morph/-/ng-morph-2.1.1.tgz",
+ "integrity": "sha512-mUziQxQm0YnP9WOCy2WRZVq6xNf+WgAvosdPU+hwmGUinoZ6vBrP3GECoRmM7Aor0PDG1KNIarJsDNS7BlxTLQ==",
+ "optional": true,
+ "requires": {
+ "jsonc-parser": "3.0.0",
+ "minimatch": "3.0.4",
+ "multimatch": "5.0.0",
+ "ts-morph": "10.0.2"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "jsonc-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
+ "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
"nice-napi": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
@@ -17283,6 +17928,12 @@
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
+ "path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "optional": true
+ },
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -18768,6 +19419,11 @@
}
}
},
+ "text-mask-core": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/text-mask-core/-/text-mask-core-5.1.2.tgz",
+ "integrity": "sha512-VfkCMdmRRZqXgQZFlDMiavm3hzsMzBM23CxHZsaeAYg66ZhXCNJWrFmnJwNy8KF9f74YvAUAuQenxsMCfuvhUw=="
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -18814,6 +19470,16 @@
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="
},
+ "ts-morph": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-10.0.2.tgz",
+ "integrity": "sha512-TVuIfEqtr9dW25K3Jajqpqx7t/zLRFxKu2rXQZSDjTm4MO4lfmuj1hn8WEryjeDDBFcNOCi+yOmYUYR4HucrAg==",
+ "optional": true,
+ "requires": {
+ "@ts-morph/common": "~0.9.0",
+ "code-block-writer": "^10.1.1"
+ }
+ },
"ts-node": {
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
diff --git a/package.json b/package.json
index af67386..a5d4370 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,13 @@
"@angular/platform-browser": "^14.1.0",
"@angular/platform-browser-dynamic": "^14.1.0",
"@angular/router": "^14.1.0",
+ "@taiga-ui/cdk": "^3.6.0",
+ "@taiga-ui/core": "^3.6.0",
+ "@taiga-ui/icons": "^3.6.0",
+ "@taiga-ui/kit": "^3.6.0",
+ "@taiga-ui/styles": "^3.6.0",
+ "@tinkoff/ng-dompurify": "3.0.0",
+ "dompurify": "2.2.9",
"rxjs": "~7.5.0",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
diff --git a/src/app/app.component.html b/src/app/app.component.html
index d8981cc..3dee7cb 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1 +1,9 @@
+
+Test (version: {{version}})
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index ac80cb2..6e1a918 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
+import { GetVersion, GetVersionCallbackDetail, RunGame } from './services/go';
@Component({
selector: 'app-root',
@@ -9,28 +10,17 @@ export class AppComponent {
title = 'go-web';
version: string | null = null;
- games: { id: string; name: string }[] = [
- {
- id: 'game-1',
- name: 'Game one',
- },
- {
- id: 'game-2',
- name: 'Game two',
- },
- {
- id: 'game-3',
- name: 'Game three',
- },
- ];
-
constructor() {}
getVersion() {
- // document.addEventListener('GetVersion_Callback', (event: Event): void => {
- // if (!(event instanceof CustomEvent)) return;
- // this.version = event.detail;
- // });
- // GetVersion();
+ document.addEventListener('GetVersion_Callback', (event: Event): void => {
+ if (!(event instanceof CustomEvent)) return;
+ this.version = event.detail;
+ });
+ GetVersion();
+ }
+
+ RunGame() {
+ RunGame();
}
}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 9265a11..5bdaea0 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,3 +1,7 @@
+import { NgDompurifySanitizer } from "@tinkoff/ng-dompurify";
+import { TuiRootModule, TuiDialogModule, TuiAlertModule, TUI_SANITIZER } from "@taiga-ui/core";
+import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+import {TuiButtonModule} from '@taiga-ui/core';
import {
APP_BASE_HREF,
LocationStrategy,
@@ -6,17 +10,21 @@ import {
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
-import { AppRoutingModule } from './modules/app-routing.module';
+import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
-import { GamesBarModule } from './components/games-bar/games-bar.module';
+import { GamesBarComponent } from './games-bar/games-bar.component';
+import { GameButtonComponent } from './games-bar/game-button/game-button.component';
+import { TuiAvatarModule } from "@taiga-ui/kit";
+
@NgModule({
- declarations: [AppComponent],
- imports: [BrowserModule, AppRoutingModule, GamesBarModule],
+ declarations: [AppComponent, GamesBarComponent, GameButtonComponent],
+ imports: [BrowserModule, AppRoutingModule, BrowserAnimationsModule, TuiRootModule, TuiDialogModule, TuiAlertModule, TuiButtonModule, TuiAvatarModule],
providers: [
{ provide: APP_BASE_HREF, useValue: '/' },
{ provide: LocationStrategy, useClass: HashLocationStrategy },
- ],
+ {provide: TUI_SANITIZER, useClass: NgDompurifySanitizer}
+],
bootstrap: [AppComponent],
})
export class AppModule {}
diff --git a/src/app/games-bar/game-button/game-button.component.html b/src/app/games-bar/game-button/game-button.component.html
new file mode 100644
index 0000000..a4a95c6
--- /dev/null
+++ b/src/app/games-bar/game-button/game-button.component.html
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/src/app/games-bar/game-button/game-button.component.scss b/src/app/games-bar/game-button/game-button.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/games-bar/game-button/game-button.component.spec.ts b/src/app/games-bar/game-button/game-button.component.spec.ts
new file mode 100644
index 0000000..85bf386
--- /dev/null
+++ b/src/app/games-bar/game-button/game-button.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GameButtonComponent } from './game-button.component';
+
+describe('GameButtonComponent', () => {
+ let component: GameButtonComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ GameButtonComponent ]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(GameButtonComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/games-bar/game-button/game-button.component.ts b/src/app/games-bar/game-button/game-button.component.ts
new file mode 100644
index 0000000..2abb4e7
--- /dev/null
+++ b/src/app/games-bar/game-button/game-button.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-game-button',
+ templateUrl: './game-button.component.html',
+ styleUrls: ['./game-button.component.scss']
+})
+export class GameButtonComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/games-bar/games-bar.component.html b/src/app/games-bar/games-bar.component.html
new file mode 100644
index 0000000..d698516
--- /dev/null
+++ b/src/app/games-bar/games-bar.component.html
@@ -0,0 +1,5 @@
+
+
+ name: {{item.name}}
+ {{player}}
+
\ No newline at end of file
diff --git a/src/app/games-bar/games-bar.component.scss b/src/app/games-bar/games-bar.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/games-bar/games-bar.component.spec.ts b/src/app/games-bar/games-bar.component.spec.ts
new file mode 100644
index 0000000..5b7c125
--- /dev/null
+++ b/src/app/games-bar/games-bar.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GamesBarComponent } from './games-bar.component';
+
+describe('GamesBarComponent', () => {
+ let component: GamesBarComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ GamesBarComponent ]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(GamesBarComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/games-bar/games-bar.component.ts b/src/app/games-bar/games-bar.component.ts
new file mode 100644
index 0000000..d7a3f2f
--- /dev/null
+++ b/src/app/games-bar/games-bar.component.ts
@@ -0,0 +1,39 @@
+import { Component, OnInit } from '@angular/core';
+import { LauncherService } from '../services/launcher.service';
+import { Game } from '../services/oxana.service';
+
+@Component({
+ selector: 'app-games-bar',
+ templateUrl: './games-bar.component.html',
+ styleUrls: ['./games-bar.component.scss']
+})
+
+export class GamesBarComponent implements OnInit {
+ constructor(private launcher: LauncherService) { }
+
+ games!: Game[]
+ // games: Game[] = [{
+ // name: 'str',
+ // players: ['1', '2']
+ // },
+ // {
+ // name: 'qwe',
+ // players: ['6', '4']
+ // }]
+
+
+ ngOnInit(): void {
+ // let i = 0
+ // setInterval(() => {
+ // this.games.push({name: `name-${++i}`, players: []})
+ // }, 100)
+ this.games = this.launcher.GetGames()
+ console.log("asdasd")
+ console.log(this.games)
+ }
+
+ // removePlayerZero (item: Game) {
+ // if (item.players.length == 0) return
+ // item.players.splice(0, 1)
+ // }
+}
diff --git a/src/app/services/launcher.service.spec.ts b/src/app/services/launcher.service.spec.ts
new file mode 100644
index 0000000..794c9dd
--- /dev/null
+++ b/src/app/services/launcher.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { LauncherService } from './launcher.service';
+
+describe('LauncherService', () => {
+ let service: LauncherService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(LauncherService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/services/launcher.service.ts b/src/app/services/launcher.service.ts
new file mode 100644
index 0000000..1e83783
--- /dev/null
+++ b/src/app/services/launcher.service.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { Game } from './oxana.service';
+@Injectable({
+ providedIn: 'root'
+})
+export class LauncherService {
+
+ constructor() { }
+
+ public GetGames(): Game[]{
+ var currentGames :Game[] = [
+ { name: "ad", icon: "string", id: "string"},
+ { name: "qwet", icon: "string", id: "string"},
+ { name: "1233", icon: "string", id: "string"},
+ { name: "ghjghj", icon: "string", id: "string"}
+ ]
+ return currentGames
+ }
+}
diff --git a/src/app/services/oxana.service.spec.ts b/src/app/services/oxana.service.spec.ts
new file mode 100644
index 0000000..4fdbba0
--- /dev/null
+++ b/src/app/services/oxana.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { OxanaService } from './oxana.service';
+
+describe('OxanaService', () => {
+ let service: OxanaService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(OxanaService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/services/oxana.service.ts b/src/app/services/oxana.service.ts
new file mode 100644
index 0000000..7395e0a
--- /dev/null
+++ b/src/app/services/oxana.service.ts
@@ -0,0 +1,23 @@
+import { Injectable } from '@angular/core';
+import { LauncherService } from './launcher.service';
+
+@Injectable({
+ providedIn: 'root'
+})
+
+
+export class OxanaService {
+ private games!: Game
+ constructor(private launcher: LauncherService) { }
+
+ // public getGames():Game{
+ // currentGames = launcher.GetGames()
+ // return currentGames
+ // }
+}
+
+export interface Game {
+ name: string
+ icon: string
+ id: string
+}