diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a868532e4805..a3a69d1d7e17 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,7 @@ name: 🐞 Bug report about: Create a report to help us improve title: '[BUG] ' labels: '' -assignees: waterplea +assignees: waterplea, MarsiBarsi --- # 🐞 Bug report diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 6a2234e79eba..15e4c9b4c4ff 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,7 +3,7 @@ name: 🚀 Feature request about: Suggest an idea for this project title: '[FEATURE]' labels: '' -assignees: waterplea +assignees: waterplea, MarsiBarsi --- # 🚀 Feature request diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e799588fddd7..927bc21fdec7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -21,11 +21,11 @@ jobs: - name: Cache Node.js modules uses: actions/cache@v2 with: - path: ~/.npm + path: ~/.npm key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.OS }}-node- - ${{ runner.OS }}- + ${{ runner.OS }}- - name: npm ci and build demo run: | npm ci @@ -35,4 +35,4 @@ jobs: with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages - FOLDER: dist/demo + FOLDER: dist/demo/browser diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2c9fdc014444..b087e597e882 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,8 +31,43 @@ jobs: - name: Install dependencies run: npm ci # End of setup - - run: npm run test + - run: npm run test cdk - name: Coveralls uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test core + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test kit + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test addon-charts + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test addon-commerce + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test addon-editor + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test addon-mobile + # Find out more about empty lcov generation + - run: npm run test addon-table + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: npm run test addon-tablebars + # Find out more about empty lcov generation + diff --git a/angular.json b/angular.json index a757a7ced26d..b078adcdbd66 100644 --- a/angular.json +++ b/angular.json @@ -478,7 +478,7 @@ "builder": "@angular-devkit/build-angular:browser", "options": { "aot": true, - "outputPath": "dist/demo", + "outputPath": "dist/demo/browser", "index": "projects/demo/src/index.html", "main": "projects/demo/src/main.browser.ts", "polyfills": "projects/demo/src/polyfills.ts", @@ -491,7 +491,7 @@ }, { "glob": "**/*", - "input": "projects/icons/src/icons/src", + "input": "projects/icons/src", "output": "assets/taiga-ui/icons" } ], @@ -502,7 +502,10 @@ "stylePreprocessorOptions": { "includePaths": ["projects/core/styles"] }, - "scripts": ["node_modules/marked/lib/marked.js"], + "scripts": [ + "node_modules/prismjs/prism.js", + "node_modules/marked/lib/marked.js" + ], "es5BrowserSupport": true }, "configurations": { @@ -610,8 +613,8 @@ "server": { "builder": "@angular-devkit/build-angular:server", "options": { - "outputPath": "dist/server", - "main": "projects/demo/src/main.server.ts", + "outputPath": "dist/demo/server", + "main": "projects/demo/server.ts", "tsConfig": "projects/demo/tsconfig.server.json", "stylePreprocessorOptions": { "includePaths": ["projects/core/styles"] @@ -619,16 +622,36 @@ }, "configurations": { "production": { - "fileReplacements": [ - { - "replace": "projects/demo/src/environments/environment.ts", - "with": "projects/demo/src/environments/environment.prod.ts" - } - ], + "outputHashing": "media", + "sourceMap": false, "optimization": true } } }, + "serve-ssr": { + "builder": "@nguniversal/builders:ssr-dev-server", + "options": { + "browserTarget": "demo:build", + "serverTarget": "demo:server" + }, + "configurations": { + "production": { + "browserTarget": "demo:build:production", + "serverTarget": "demo:server:production" + } + } + }, + "prerender": { + "builder": "@nguniversal/builders:prerender", + "options": { + "browserTarget": "demo:build:production", + "serverTarget": "demo:server:production", + "routes": ["/"] + }, + "configurations": { + "production": {} + } + }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { diff --git a/package-lock.json b/package-lock.json index 16b1f69c265e..f99d9ff2c0ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -356,6 +356,12 @@ "ms": "^2.1.1" } }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "uuid": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", @@ -1727,16 +1733,6 @@ "regenerator-runtime": "^0.13.4" } }, - "@babel/runtime-corejs2": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.12.5.tgz", - "integrity": "sha512-kt5YpZ7F5A05LOgQuaMXXmcxakK/qttf5C/E1BJPA3Kf5PanbjPzDoXN+PIslUnjUxpuKblCsXyP0QfMiqyKqA==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", @@ -2460,18 +2456,18 @@ } }, "@ng-web-apis/common": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-1.7.0.tgz", - "integrity": "sha512-WgQFgZrgm4OCQ9udybw31VyC8jQv+FzBqpk2laBI51jW9zRZJWGI1TRxl7wNm8egxlW9IQ08jt8knNpExMLvDA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-1.9.0.tgz", + "integrity": "sha512-Q0ZRhCEuiOwCfZv88B1xudVuSPdr3ujMcuc/JON9X/7Fu245yDRNJZD0p+uHiHfjkG+/6H2VpIY/K4ziJiQ6yg==", "requires": { "network-information-types": "^0.1.0", "tslib": "^1.9.0" } }, "@ng-web-apis/intersection-observer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-2.0.1.tgz", - "integrity": "sha512-HKWOnfPOZziAKeOjLGZHntCl/M9FCJmnIUfzhZWTLIDdvheghcIQ0qMvfXcpGJpwkbm+MiIEOwEqb/c3FtBBYg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-2.1.0.tgz", + "integrity": "sha512-ReLiSUsq+1y4Se0q7i/8N5/mA40r4/COJUj/fXS7mA8OLg6AMFmuHsh/gDladBsGRwjuN51VAehzcrVOHWWvnA==", "requires": { "tslib": "^1.9.0" } @@ -2523,6 +2519,49 @@ } } }, + "@nguniversal/builders": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@nguniversal/builders/-/builders-9.1.1.tgz", + "integrity": "sha512-vQ52GDdu1P1miHUCYikkWh4Q6Pu/l/l5OgyGIMBrJLxEv920RN/Vn0HK5rR0QrE3EGoNun/y+g/TUevZoBlOUA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "^0.901.0", + "@angular-devkit/core": "^9.1.0", + "browser-sync": "^2.26.7", + "guess-parser": "^0.4.12", + "http-proxy-middleware": "^1.0.0", + "rxjs": "^6.5.3", + "tree-kill": "^1.2.1" + }, + "dependencies": { + "http-proxy-middleware": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.6.tgz", + "integrity": "sha512-NyL6ZB6cVni7pl+/IT2W0ni5ME00xR0sN27AQZZrpKn1b+qRh+mLbBxIq9Cq1oGfmTc7BUq4HB77mxwCaxAYNg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.20", + "micromatch": "^4.0.2" + } + } + } + }, + "@nguniversal/common": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@nguniversal/common/-/common-9.1.1.tgz", + "integrity": "sha512-stYQzea9jhbs8XJDZEGcdHRVBrUp4wE3KMVufQNnQMbW/R+JpakGP6XBfPY3NLmqs/xJpVUIcIl3/6l5XxpR5A==" + }, + "@nguniversal/express-engine": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@nguniversal/express-engine/-/express-engine-9.1.1.tgz", + "integrity": "sha512-K/4cY+mJgJu65HYyFz5L4wrUqtkYqsg/itXOWhPCeuzhBCVpJQntXq2z07sxM+Jl5EIbCi3jGa5wnm/17uti4w==", + "requires": { + "@nguniversal/common": "9.1.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -2677,6 +2716,12 @@ "semver-intersect": "1.4.0" }, "dependencies": { + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -2769,11 +2814,11 @@ } }, "@tinkoff/ng-event-plugins": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-1.0.1.tgz", - "integrity": "sha512-cu/JnmKn1CYIJOnlOgBACACY5+VhK9qadMxnJGCmE8W7lYDGC4VYjpAMuO67FwcP/U3dFwqhw2NHKRC3PQ5iDA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-2.0.0.tgz", + "integrity": "sha512-SV1HsxOLsmegPFyFVS6J+6wcYlcSERzPEgr025Rm8nj7CH7mfUMiUV5yenbSQhDqozF+sJmJnzUvV/PIOgj+lQ==", "requires": { - "tslib": "^1.9.0" + "tslib": "^1.10.0" } }, "@tinkoff/ng-polymorpheus": { @@ -2804,10 +2849,13 @@ } }, "@types/dompurify": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-0.0.32.tgz", - "integrity": "sha512-OPiBf1Xgi5umND0m0LpBhxfRVat3dMCXeB4SBVzAIa0sKniJ9z2g9cN0trL1OcmkQnjDV14yCyRH26G2L0zWFQ==", - "dev": true + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.0.4.tgz", + "integrity": "sha512-y6K7NyXTQvjr8hJNsAFAD8yshCsIJ0d+OYEFzULuIqWyWOKL2hRru1I+rorI5U0K4SLAROTNuSUFXPDTu278YA==", + "dev": true, + "requires": { + "@types/trusted-types": "*" + } }, "@types/estree": { "version": "0.0.39", @@ -2847,6 +2895,15 @@ "@types/node": "*" } }, + "@types/http-proxy": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.4.tgz", + "integrity": "sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/jasmine": { "version": "3.3.16", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.3.16.tgz", @@ -2866,9 +2923,9 @@ "dev": true }, "@types/marked": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.7.4.tgz", - "integrity": "sha512-fdg0NO4qpuHWtZk6dASgsrBggY+8N4dWthl1bAQG9ceKUNKFjqpHaDKCAhRUI6y8vavG7hLSJ4YBwJtZyZEXqw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-1.2.1.tgz", + "integrity": "sha512-d5adCgRHB+NAme23hkiTkvpfZUDqoNtL2Sr2nZBJqSj3zyHLxsfFWsGQ2sK2z9aX6L1xkJzon2c0jTPcsEjpaQ==" }, "@types/mime": { "version": "2.0.3", @@ -2967,6 +3024,12 @@ "integrity": "sha512-eDLVUvvTn+mol3NpP211DTH9JzSS6YKssRIhHNmXk5BiCl+gc4s+xQQjRFTSsGBohmka5qBsHX6qhL4x88Wkvg==", "dev": true }, + "@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", + "dev": true + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -3203,6 +3266,75 @@ "@xtuc/long": "4.2.2" } }, + "@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -3231,11 +3363,16 @@ "through": ">=2.2.7 <3" } }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -3247,6 +3384,30 @@ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, "add-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", @@ -3631,6 +3792,12 @@ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "dev": true + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3682,6 +3849,48 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "axobject-query": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", @@ -3981,7 +4190,6 @@ "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -3998,14 +4206,12 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -4013,14 +4219,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -4075,47 +4279,408 @@ "color-convert": "^2.0.1" } }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-sync": { + "version": "2.26.13", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.13.tgz", + "integrity": "sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w==", + "dev": true, + "requires": { + "browser-sync-client": "^2.26.13", + "browser-sync-ui": "^2.26.13", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.4.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.0", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.1.1", + "qs": "6.2.3", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "2.1.1", + "ua-parser-js": "^0.7.18", + "yargs": "^15.4.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", "dev": true }, "string-width": { @@ -4138,20 +4703,45 @@ "ansi-regex": "^5.0.0" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -4160,25 +4750,43 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6" + }, + "dependencies": { + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + } } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "browser-sync-ui": { + "version": "2.26.13", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz", + "integrity": "sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^2.0.4", + "stream-throttle": "^0.1.3" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -4293,6 +4901,18 @@ "https-proxy-agent": "^2.2.1" } }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", + "dev": true + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -5161,7 +5781,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, "requires": { "safe-buffer": "5.1.2" } @@ -5169,8 +5788,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "conventional-changelog": { "version": "3.1.15", @@ -6209,14 +6827,12 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "copy-concurrently": { "version": "1.0.5", @@ -6743,6 +7359,29 @@ } } }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, "cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -6791,6 +7430,17 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", @@ -6846,6 +7496,12 @@ } } }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -6887,6 +7543,12 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -7056,8 +7718,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "dependency-graph": { "version": "0.7.2", @@ -7078,8 +7739,7 @@ "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-indent": { "version": "6.0.0", @@ -7099,6 +7759,12 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "dev": true + }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -7149,6 +7815,12 @@ "path-type": "^4.0.0" } }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -7240,6 +7912,23 @@ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -7255,9 +7944,9 @@ "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" }, "dompurify": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-1.0.11.tgz", - "integrity": "sha512-XywCTXZtc/qCX3iprD1pIklRVk/uhl8BKpkTxr+ZyMVUzSUg7wkQXRBp/euJ5J5moa1QvfpvaPQVP71z1O59dQ==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.3.tgz", + "integrity": "sha512-8Hv7Q0FuwD9rWoB6qI2eZsfKbGXfoUVuGHHrE15vgk4ReOKwOkSgbqb2OMFtc0d5besOEkoLkcyuV10zQ2X5gw==" }, "domutils": { "version": "1.7.0", @@ -7306,6 +7995,24 @@ "stream-shift": "^1.0.0" } }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "requires": { + "tfunk": "^4.0.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -7331,8 +8038,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { "version": "1.3.613", @@ -7375,6 +8081,11 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "emoji-toolkit": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-6.0.1.tgz", + "integrity": "sha512-QZZq0beHg753JxcBt89UBFqzwYNuMtXhNO+jY3viSAndewmn9biTE5glaro1RA0uWJ4hKqw4k1Mboe1M6sGkMA==" + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -7384,8 +8095,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { "version": "0.1.13", @@ -7638,14 +8348,35 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -7717,8 +8448,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { "version": "4.0.7", @@ -7835,7 +8565,6 @@ "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -7872,14 +8601,12 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -7887,14 +8614,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -8033,6 +8758,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -8127,7 +8858,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -8142,7 +8872,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -8150,8 +8879,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -8336,8 +9064,7 @@ "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, "fragment-cache": { "version": "0.2.1", @@ -8351,8 +9078,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "from2": { "version": "2.3.0", @@ -9063,6 +9789,15 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "requires": { + "@wessberg/ts-evaluator": "0.0.27" + } + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -9280,9 +10015,14 @@ "dev": true }, "highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==" + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", + "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==" + }, + "highlightjs-line-numbers.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/highlightjs-line-numbers.js/-/highlightjs-line-numbers.js-2.8.0.tgz", + "integrity": "sha512-TEf1gw0c8mb8nan0QwliqS7obT4cpUd9hzsGzsZLweteNnWea/VIqy5/aQqsa5wnz9lnvmtAkS1ZtDTjB/goYQ==" }, "hmac-drbg": { "version": "1.0.1", @@ -9345,6 +10085,15 @@ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", "dev": true }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, "html-entities": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", @@ -9412,7 +10161,6 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -9424,8 +10172,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -9723,7 +10470,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -9777,6 +10523,12 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -9866,9 +10618,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "injection-js": { @@ -10014,6 +10766,11 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "intersection-observer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.0.tgz", + "integrity": "sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ==" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -10044,8 +10801,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute-url": { "version": "2.1.0", @@ -10318,6 +11074,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -10372,6 +11137,12 @@ "isobject": "^3.0.1" } }, + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, "is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -10788,6 +11559,65 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ws": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "dev": true + } + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -11045,9 +11875,9 @@ } }, "katex": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz", - "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", + "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", "requires": { "commander": "^2.19.0" } @@ -11205,6 +12035,16 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "license-webpack-plugin": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz", @@ -11224,6 +12064,12 @@ "immediate": "~3.0.5" } }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -11667,6 +12513,47 @@ "json5": "^2.1.2" } }, + "localtunnel": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.0.tgz", + "integrity": "sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==", + "dev": true, + "requires": { + "axios": "0.19.0", + "debug": "4.1.1", + "openurl": "1.1.1", + "yargs": "13.3.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + } + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -11694,6 +12581,12 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, "lodash.ismatch": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", @@ -11706,6 +12599,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", @@ -12039,9 +12938,9 @@ "dev": true }, "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.5.tgz", + "integrity": "sha512-2AlqgYnVPOc9WDyWu7S5DJaEZsfk6dNh/neatQ3IHUW4QLutM/VPSH9lG7bif+XjFWc9K9XR3QvR+fXuECmfdA==" }, "matcher": { "version": "1.1.1", @@ -12087,8 +12986,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { "version": "4.3.0", @@ -12177,8 +13075,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-source-map": { "version": "1.1.0", @@ -12212,8 +13109,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { "version": "4.0.2", @@ -12246,20 +13142,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, "requires": { "mime-db": "1.44.0" } @@ -12439,6 +13332,12 @@ "through2": "^2.0.0" } }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -12556,8 +13455,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { "version": "2.6.2", @@ -12793,23 +13691,40 @@ } }, "ngx-highlightjs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-3.0.3.tgz", - "integrity": "sha512-/Eh+uJL9CiePWXzyT7VpLaQoWQyyNEUQaHhJ4faUBQZLBpachCBY55iDX0mi50zG9dapTiiapH5Vz/sL2GDxlg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-4.1.3.tgz", + "integrity": "sha512-4pVQ4EXNDjIes7u93iX5Seyzg7dZXLdw6eAMLEQnYZ/2n1s8Wb9SHS3v2dCiO1VjpVFnfWsHzKwNxgzWbIinqg==", "requires": { - "tslib": "^1.9.0" + "highlight.js": "*", + "highlightjs-line-numbers.js": "*", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } } }, "ngx-markdown": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.2.2.tgz", - "integrity": "sha512-wo2M2LIiLsuLqvmpeKwk8CDiT0qkxMdyNyCeypwJRcrfkzb6qjWEycA8i9VBBXwFze+8rS2BZn1YXrdezGi/3w==", - "requires": { - "@types/marked": "^0.7.0", - "katex": "^0.11.0", - "marked": "^0.7.0", - "prismjs": "^1.16.0", - "tslib": "^1.9.0" + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-11.0.1.tgz", + "integrity": "sha512-/abng+e19947ZAhEzFl7n1J+KZbrrO2O6gSUtyT3x5I5CHXQPZxZ0SawlZ2Yyu8UNjI75xmemU+7pArKyrOtOg==", + "requires": { + "@types/marked": "^1.1.0", + "emoji-toolkit": "^6.0.1", + "katex": "^0.12.0", + "marked": "^1.2.0", + "prismjs": "^1.22.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } } }, "nice-try": { @@ -13099,6 +14014,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -13170,6 +14091,12 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, + "object-path": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", + "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -13233,7 +14160,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, "requires": { "ee-first": "1.1.1" } @@ -13283,6 +14209,12 @@ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -13318,6 +14250,20 @@ } } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "ora": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", @@ -13777,8 +14723,7 @@ "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, "parseqs": { "version": "0.0.5", @@ -13801,8 +14746,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -13853,8 +14797,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { "version": "4.0.0", @@ -13948,6 +14891,24 @@ } } }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "is-number-like": "^1.0.3" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -14749,6 +15710,12 @@ "resolved": "https://registry.npmjs.org/preboot/-/preboot-7.0.0.tgz", "integrity": "sha512-moGFdwpdY91Hr7L1OdwpMWPLwJmijUdynZkP7zJzpIgTqCShisVVU5AMVHLdetu1EvOpMo9Hy7WPMH1mDk19hQ==" }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -15146,7 +16113,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -15314,14 +16280,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -15332,8 +16296,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" } } }, @@ -15813,6 +16776,26 @@ "uuid": "^3.3.2" } }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15868,6 +16851,33 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -16186,6 +17196,12 @@ "aproba": "^1.1.1" } }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, "rxjs": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", @@ -16550,8 +17566,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { "version": "1.26.3", @@ -16618,6 +17633,15 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -16769,7 +17793,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -16790,7 +17813,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" }, @@ -16798,16 +17820,14 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -16880,7 +17900,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -16888,6 +17907,12 @@ "send": "0.17.1" } }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -16931,8 +17956,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sha.js": { "version": "2.4.11", @@ -17873,7 +18897,12 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, "stream-browserify": { @@ -17915,6 +18944,16 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + } + }, "streamroller": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", @@ -18826,6 +19865,12 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "synchronous-promise": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz", @@ -19040,6 +20085,43 @@ "resolved": "https://registry.npmjs.org/text-mask-core/-/text-mask-core-5.1.2.tgz", "integrity": "sha1-gN1evgSCV1fkZhnmkUB6n4s8G28=" }, + "tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -19159,8 +20241,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "toposort": { "version": "2.0.2", @@ -19178,6 +20259,15 @@ "punycode": "^2.1.1" } }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "traverse-chain": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", @@ -19462,15 +20552,6 @@ } } }, - "tslint-teamcity-reporter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/tslint-teamcity-reporter/-/tslint-teamcity-reporter-3.2.2.tgz", - "integrity": "sha512-1lvhwfTQnsh2We39+5u4/FzDdheGLooYlW2vMmR473Ai/3ERoXMFsu6Nt2fKf1y1rJUTztX2RnygF1hBV5xMIw==", - "dev": true, - "requires": { - "@babel/runtime-corejs2": "^7.1.5" - } - }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", @@ -19660,6 +20741,15 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, "type-fest": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", @@ -19670,7 +20760,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -19697,6 +20786,12 @@ "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, + "ua-parser-js": { + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==", + "dev": true + }, "uglify-js": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.1.tgz", @@ -19906,8 +21001,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unquote": { "version": "1.1.1", @@ -20207,8 +21301,7 @@ "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { "version": "3.4.0", @@ -20238,8 +21331,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "vendors": { "version": "1.0.4", @@ -20321,6 +21413,24 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, "watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", @@ -20591,6 +21701,12 @@ "selenium-webdriver": "^3.0.1" } }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, "webpack": { "version": "4.42.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", @@ -21218,6 +22334,32 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, "when": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", @@ -21287,6 +22429,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -21413,6 +22561,12 @@ "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.0.tgz", "integrity": "sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA==" }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", @@ -21429,6 +22583,12 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xmlcreate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", diff --git a/package.json b/package.json index a45c16b04303..a0120c08bd8e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "start:shadow": "ng serve --configuration shadow", "start:hmr": "ng serve --configuration hmr", "start:aot": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng serve --configuration production", - "start:ssr": "npm run build:ssr && npm run serve:ssr", + "start:ssr": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng run demo:serve-ssr", + "build:ssr": "ng build --prod && ng run demo:server:production", + "prerender": "ng run demo:prerender", "i18n": "ng xi18n --output-path src/locale", "*** Workflow ***": "", "test": "ng test --browsers=ChromeHeadless --code-coverage=true --", @@ -18,15 +20,13 @@ "prettier": "prettier --write \"projects/**/*.{js,ts,html,md,less,json}\"", "clear": "prettier --write '**/projects/**/*.{js,ts,html,md,less,json}' && tslint '**/projects/**/*.ts' --fix", "typecheck": "tsc --noEmit --skipLibCheck", - "*** build **": "", + "*** Build **": "", "build": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --configuration=production", "build:demo": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --prod --configuration=production", - "postbuild:demo": "node scripts/checkDist.js && cp ./dist/demo/index.html ./dist/demo/404.html", + "postbuild:demo": "node scripts/checkDist.js && cp ./dist/demo/browser/index.html ./dist/demo/browser/404.html", "*** Icons ***": "", - "compile:icons": "ts-node --project ./tsconfig.compiler.json scripts/compileIcons.ts", - "prebuild:icons": "npm run compile:icons projects/icons", + "prebuild:icons": "ts-node --project ./tsconfig.compiler.json projects/icons/scripts/compile-icons.ts", "build:icons": "ng run icons:build --configuration=production", - "postbuild:icons": "node projects/icons/scripts/copy-icons.js", "*** Release ***": "", "release": "standard-version -a --no-verify", "release:patch": "node scripts/release.js patch", @@ -63,22 +63,25 @@ "@angular/platform-server": "^9.1.12", "@angular/router": "~9.1.12", "@angularclass/hmr": "^2.1.3", - "@ng-web-apis/common": "1.7.0", - "@ng-web-apis/intersection-observer": "2.0.1", + "@ng-web-apis/common": "1.9.0", + "@ng-web-apis/intersection-observer": "2.1.0", "@ng-web-apis/mutation-observer": "1.1.0", "@ng-web-apis/resize-observer": "1.0.3", - "@ng-web-apis/universal": "^1.6.0", + "@ng-web-apis/universal": "1.9.2", + "@nguniversal/express-engine": "^9.1.1", "@tinkoff/angular-contenteditable-accessor": "1.1.0", "@tinkoff/ng-dompurify": "3.0.0", - "@tinkoff/ng-event-plugins": "1.0.1", + "@tinkoff/ng-event-plugins": "2.0.0", "@tinkoff/ng-polymorpheus": "2.1.0", "angular2-text-mask": "9.0.0", "classlist.js": "^1.1.20150312", "core-js": "^2.6.9", - "dompurify": "1.0.11", - "highlight.js": "^9.15.5", - "ngx-highlightjs": "3.0.3", - "ngx-markdown": "^8.2.1", + "express": "^4.15.2", + "dompurify": "^2.2.3", + "highlight.js": "^10.4.1", + "intersection-observer": "^0.12.0", + "ngx-highlightjs": "^4.1.3", + "ngx-markdown": "^11.0.1", "preboot": "^7.0.0", "rxjs": "~6.6.3", "tslib": "^1.10.0", @@ -94,8 +97,9 @@ "@angular/language-service": "~9.1.12", "@commitlint/cli": "^11.0.0", "@commitlint/config-conventional": "^11.0.0", + "@nguniversal/builders": "^9.1.1", "@tinkoff/linters": "^0.6.0", - "@types/dompurify": "^0.0.32", + "@types/dompurify": "^2.0.4", "@types/express": "4.16.1", "@types/jasmine": "~3.3.15", "@types/jasmine-ajax": "^3.1.40", @@ -132,7 +136,6 @@ "ts-loader": "^5.3.3", "ts-node": "~7.0.0", "tslint": "~5.15.0", - "tslint-teamcity-reporter": "^3.2.2", "typescript": "~3.8.3" }, "husky": { diff --git a/projects/addon-charts/components/axes/axes.component.ts b/projects/addon-charts/components/axes/axes.component.ts index bfa6d089c76f..3ce24d4ea2e0 100644 --- a/projects/addon-charts/components/axes/axes.component.ts +++ b/projects/addon-charts/components/axes/axes.component.ts @@ -29,7 +29,7 @@ export class TuiAxesComponent { @Input() @tuiDefaultProp() - axisYLabels: ReadonlyArray = []; + axisYLabels: readonly string[] = []; @Input() @tuiDefaultProp() @@ -41,7 +41,7 @@ export class TuiAxesComponent { @Input() @tuiDefaultProp() - axisYSecondaryLabels: ReadonlyArray = []; + axisYSecondaryLabels: readonly string[] = []; @Input() @tuiDefaultProp() @@ -83,7 +83,7 @@ export class TuiAxesComponent { ); } - fallback(label: string): string { + fallback(label: string | null): string { return label || CHAR_NO_BREAK_SPACE; } } diff --git a/projects/addon-charts/components/bar-chart/bar-chart.component.ts b/projects/addon-charts/components/bar-chart/bar-chart.component.ts index 7ce33177d484..6f76acd62277 100644 --- a/projects/addon-charts/components/bar-chart/bar-chart.component.ts +++ b/projects/addon-charts/components/bar-chart/bar-chart.component.ts @@ -10,7 +10,7 @@ import { import {TuiHintMode, TuiSizeL, TuiSizeS} from '@taiga-ui/core'; import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; -export function valueAssertion(value: ReadonlyArray>): boolean { +export function valueAssertion(value: ReadonlyArray): boolean { const valid = value.every(array => array.length === value[0].length); return valid; @@ -27,7 +27,7 @@ const VALUE_ERROR = 'All arrays must be of the same length'; export class TuiBarChartComponent { @Input() @tuiDefaultProp(valueAssertion, VALUE_ERROR) - value: ReadonlyArray> = []; + value: ReadonlyArray = []; @Input() @tuiDefaultProp() @@ -47,7 +47,7 @@ export class TuiBarChartComponent { @Input() @tuiDefaultProp() - hintContent: PolymorpheusContent> | null = null; + hintContent: PolymorpheusContent> = ''; @Input() @tuiDefaultProp() @@ -63,20 +63,16 @@ export class TuiBarChartComponent { return !!this.hintContent; } - get transposed(): ReadonlyArray> { + get transposed(): ReadonlyArray { return this.transpose(this.value); } - get computedMax(): number { - return this.max || this.getMax(this.value); - } - - getPercent(set: ReadonlyArray): number { + getPercent(set: readonly number[]): number { return (100 * Math.max(...set)) / this.computedMax; } - getHint(hint: PolymorpheusContent): PolymorpheusContent | null { - return this.hasHint ? hint : null; + getHint(hint: PolymorpheusContent): PolymorpheusContent { + return this.hasHint ? hint : ''; } getHintId(index: number): string { @@ -90,11 +86,15 @@ export class TuiBarChartComponent { }; } + private get computedMax(): number { + return this.max || this.getMax(this.value); + } + @tuiPure private transpose( - value: ReadonlyArray>, - ): ReadonlyArray> { - return value.reduce>>( + value: ReadonlyArray, + ): ReadonlyArray { + return value.reduce>( (result, next) => next.map((_, index) => [...(result[index] || []), next[index]]), [], @@ -102,7 +102,7 @@ export class TuiBarChartComponent { } @tuiPure - private getMax(value: ReadonlyArray>): number { + private getMax(value: ReadonlyArray): number { return value.reduce((max, value) => Math.max(...value, max), 0); } } diff --git a/projects/addon-charts/components/bar-chart/bar-chart.module.ts b/projects/addon-charts/components/bar-chart/bar-chart.module.ts index d9d17f068783..ad49643c3d23 100644 --- a/projects/addon-charts/components/bar-chart/bar-chart.module.ts +++ b/projects/addon-charts/components/bar-chart/bar-chart.module.ts @@ -4,15 +4,14 @@ import {TuiBarSetModule} from '@taiga-ui/addon-charts/components/bar-set'; import {TuiFocusableModule} from '@taiga-ui/cdk'; import {TuiDescribedByModule, TuiHintModule} from '@taiga-ui/core'; import {PolymorpheusModule} from '@tinkoff/ng-polymorpheus'; - import {TuiBarChartComponent} from './bar-chart.component'; @NgModule({ imports: [ CommonModule, + PolymorpheusModule, TuiDescribedByModule, TuiFocusableModule, - PolymorpheusModule, TuiHintModule, TuiBarSetModule, ], diff --git a/projects/addon-charts/components/bar-chart/test/bar-chart.component.spec.ts b/projects/addon-charts/components/bar-chart/test/bar-chart.component.spec.ts index 78f777bf5c6e..9283c8362bc4 100644 --- a/projects/addon-charts/components/bar-chart/test/bar-chart.component.spec.ts +++ b/projects/addon-charts/components/bar-chart/test/bar-chart.component.spec.ts @@ -34,17 +34,6 @@ describe('BarChart', () => { fixture.detectChanges(); }); - it('Finds max correctly', () => { - expect(testComponent.component.computedMax).toBe(6); - }); - - it('Uses manual max', () => { - testComponent.max = 10; - fixture.detectChanges(); - - expect(testComponent.component.computedMax).toBe(10); - }); - it('Transposes correctly', () => { expect(testComponent.component.transposed).toEqual([ [1, 4], diff --git a/projects/addon-charts/components/bar-set/bar-set.component.ts b/projects/addon-charts/components/bar-set/bar-set.component.ts index 924aafed986e..ad4950bd1c88 100644 --- a/projects/addon-charts/components/bar-set/bar-set.component.ts +++ b/projects/addon-charts/components/bar-set/bar-set.component.ts @@ -1,12 +1,12 @@ import {ChangeDetectionStrategy, Component, Input} from '@angular/core'; import {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants'; import {TuiColorHandler} from '@taiga-ui/addon-charts/types'; -import {sum, tuiDefaultProp, tuiPure} from '@taiga-ui/cdk'; +import {tuiDefaultProp, tuiPure} from '@taiga-ui/cdk'; import {TuiSizeL, TuiSizeS} from '@taiga-ui/core'; const PERCENT = 100; -const EMPTY_ARRAY: ReadonlyArray = []; -const FILLER_ARRAY: ReadonlyArray = [1]; +const EMPTY_ARRAY: readonly number[] = []; +const FILLER_ARRAY: readonly number[] = [1]; @Component({ selector: 'tui-bar-set', @@ -17,7 +17,7 @@ const FILLER_ARRAY: ReadonlyArray = [1]; export class TuiBarSetComponent { @Input() @tuiDefaultProp() - value: ReadonlyArray = []; + value: readonly number[] = []; @Input() @tuiDefaultProp() @@ -31,11 +31,11 @@ export class TuiBarSetComponent { @tuiDefaultProp() collapsed = false; - get computedValue(): ReadonlyArray { + get computedValue(): readonly number[] { return this.collapsed ? FILLER_ARRAY : this.value; } - get computedSegments(): ReadonlyArray { + get computedSegments(): readonly number[] { return this.collapsed ? this.value : EMPTY_ARRAY; } @@ -43,25 +43,12 @@ export class TuiBarSetComponent { return this.size || 'm'; } - get sum(): number { - return this.getSum(this.value); - } - - get largest(): number { - return this.getLargest(this.computedValue); - } - getHeight(value: number): number { - return Math.abs((PERCENT * value) / this.largest); - } - - @tuiPure - private getSum(value: ReadonlyArray): number { - return sum(...value); + return Math.abs((PERCENT * value) / this.getLargest(this.computedValue)); } @tuiPure - private getLargest(value: ReadonlyArray): number { + private getLargest(value: readonly number[]): number { return value.reduce((a, b) => (a > b ? a : b), 0); } } diff --git a/projects/addon-charts/components/bar-set/test/bar-set.component.spec.ts b/projects/addon-charts/components/bar-set/test/bar-set.component.spec.ts index f8e1c5f85ca7..75fd2a3c9598 100644 --- a/projects/addon-charts/components/bar-set/test/bar-set.component.spec.ts +++ b/projects/addon-charts/components/bar-set/test/bar-set.component.spec.ts @@ -42,14 +42,6 @@ describe('BarSet', () => { fixture.detectChanges(); }); - it('Computes sum correctly', () => { - expect(testComponent.component.sum).toBe(100); - }); - - it('Gets largest element correctly', () => { - expect(testComponent.component.largest).toBe(40); - }); - it('Sets color correctly', () => { expect( fixture.debugElement.queryAll(By.css('[data-tui-background="primary"]')) diff --git a/projects/addon-charts/components/bar/bar.component.ts b/projects/addon-charts/components/bar/bar.component.ts index 53be86541ca8..1d097ee3ba30 100644 --- a/projects/addon-charts/components/bar/bar.component.ts +++ b/projects/addon-charts/components/bar/bar.component.ts @@ -15,7 +15,7 @@ const PERCENT = 100; export class TuiBarComponent { @Input() @tuiDefaultProp() - value: ReadonlyArray = []; + value: readonly number[] = []; @Input() @tuiDefaultProp() @@ -26,25 +26,12 @@ export class TuiBarComponent { @tuiDefaultProp() size: TuiSizeS | TuiSizeL = 'm'; - get sum(): number { - return this.getSum(this.value); - } - - get largest(): number { - return this.getLargest(this.value); - } - getHeight(value: number): number { - return (PERCENT * value) / this.sum; + return (PERCENT * value) / this.getSum(this.value); } @tuiPure - private getSum(value: ReadonlyArray): number { + private getSum(value: readonly number[]): number { return sum(...value); } - - @tuiPure - private getLargest(value: ReadonlyArray): number { - return Math.max(...value); - } } diff --git a/projects/addon-charts/components/bar/test/bar.component.spec.ts b/projects/addon-charts/components/bar/test/bar.component.spec.ts index 963142093d64..0e554445a37e 100644 --- a/projects/addon-charts/components/bar/test/bar.component.spec.ts +++ b/projects/addon-charts/components/bar/test/bar.component.spec.ts @@ -20,7 +20,6 @@ describe('Bar', () => { } let fixture: ComponentFixture; - let testComponent: TestComponent; configureTestSuite(() => { TestBed.configureTestingModule({ @@ -31,18 +30,9 @@ describe('Bar', () => { beforeEach(() => { fixture = TestBed.createComponent(TestComponent); - testComponent = fixture.componentInstance; fixture.detectChanges(); }); - it('Computes sum correctly', () => { - expect(testComponent.component.sum).toBe(100); - }); - - it('Gets largest element correctly', () => { - expect(testComponent.component.largest).toBe(40); - }); - it('Sets color correctly', () => { expect( fixture.debugElement.queryAll(By.css('[data-tui-background="primary"]')) diff --git a/projects/addon-charts/components/legend-item/legend-item.component.ts b/projects/addon-charts/components/legend-item/legend-item.component.ts index c5709e2c801d..a58b3f6b0c76 100644 --- a/projects/addon-charts/components/legend-item/legend-item.component.ts +++ b/projects/addon-charts/components/legend-item/legend-item.component.ts @@ -20,8 +20,4 @@ export class TuiLegendItemComponent { @Input() @tuiDefaultProp() text = ''; - - get pseudoHovered(): boolean | null { - return this.active || null; - } } diff --git a/projects/addon-charts/components/legend-item/legend-item.template.html b/projects/addon-charts/components/legend-item/legend-item.template.html index fbf1d391904b..2bea3b744f4e 100644 --- a/projects/addon-charts/components/legend-item/legend-item.template.html +++ b/projects/addon-charts/components/legend-item/legend-item.template.html @@ -4,7 +4,7 @@ size="s" appearance="whiteblock" class="button" - [pseudoHovered]="pseudoHovered" + [pseudoHovered]="active || null" > {{text}} diff --git a/projects/addon-charts/components/line-chart/line-chart.component.ts b/projects/addon-charts/components/line-chart/line-chart.component.ts index 618b79778e85..99248ea26c3f 100644 --- a/projects/addon-charts/components/line-chart/line-chart.component.ts +++ b/projects/addon-charts/components/line-chart/line-chart.component.ts @@ -110,13 +110,11 @@ export class TuiLineChartComponent { } get fill(): string { - if (!this.filled) { - return 'none'; - } - - const url = this.locationRef.prepareExternalUrl(this.locationRef.path()); - - return `url(${url}#${this.fillId})`; + return this.filled + ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${ + this.fillId + })` + : 'none'; } get viewBox(): string { diff --git a/projects/addon-charts/components/pie-chart/pie-chart.component.ts b/projects/addon-charts/components/pie-chart/pie-chart.component.ts index 7ff340b202be..47cc3895bbc9 100644 --- a/projects/addon-charts/components/pie-chart/pie-chart.component.ts +++ b/projects/addon-charts/components/pie-chart/pie-chart.component.ts @@ -45,7 +45,7 @@ const TRANSFORM = { export class TuiPieChartComponent { @Input() @tuiDefaultProp() - value: ReadonlyArray = []; + value: readonly number[] = []; @Input() @HostBinding('attr.data-tui-host-size') @@ -58,7 +58,7 @@ export class TuiPieChartComponent { @Input() @tuiDefaultProp() - hintContent: PolymorpheusContent> | null = null; + hintContent: PolymorpheusContent> = ''; @Input() @tuiDefaultProp() @@ -66,10 +66,10 @@ export class TuiPieChartComponent { @Input() @tuiDefaultProp() - activeItemIndex: number | null = null; + activeItemIndex = NaN; @Output() - activeItemIndexChange = new EventEmitter(); + activeItemIndexChange = new EventEmitter(); private readonly autoIdString: string; @@ -85,27 +85,21 @@ export class TuiPieChartComponent { } get mask(): string | null { - if (!this.masked) { - return null; - } - - const url = this.locationRef.prepareExternalUrl(this.locationRef.path()); - - return `url(${url}#${this.maskId})`; + return this.masked + ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${ + this.maskId + })` + : null; } get radius(): string { return RADII[this.size]; } - get segments(): ReadonlyArray { + get segments(): readonly string[] { return this.getSegments(this.value); } - get hasHint(): boolean { - return !!this.hintContent; - } - getTransform(index: number): string | null { const transform = this.masked ? `scale(${TRANSFORM[this.size]})` @@ -114,12 +108,12 @@ export class TuiPieChartComponent { return index === this.activeItemIndex ? transform : null; } - getHint(hint: PolymorpheusContent): PolymorpheusContent | null { - return this.hasHint ? hint : null; + getHint(hint: PolymorpheusContent): PolymorpheusContent { + return this.hintContent ? hint : ''; } onHovered(hovered: boolean, index: number) { - this.updateActiveItemIndex(hovered ? index : null); + this.updateActiveItemIndex(hovered ? index : NaN); } @tuiPure @@ -128,7 +122,7 @@ export class TuiPieChartComponent { } @tuiPure - private getSegments(value: ReadonlyArray): ReadonlyArray { + private getSegments(value: readonly number[]): readonly string[] { const total = sum(...value); return value @@ -144,7 +138,7 @@ export class TuiPieChartComponent { ); } - private updateActiveItemIndex(index: number | null) { + private updateActiveItemIndex(index: number) { if (index === this.activeItemIndex) { return; } diff --git a/projects/addon-charts/components/ring-chart/ring-chart.component.ts b/projects/addon-charts/components/ring-chart/ring-chart.component.ts index 7fdfcde2191f..20ba3d5bc011 100644 --- a/projects/addon-charts/components/ring-chart/ring-chart.component.ts +++ b/projects/addon-charts/components/ring-chart/ring-chart.component.ts @@ -22,7 +22,7 @@ import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; export class TuiRingChartComponent { @Input() @tuiDefaultProp() - value: ReadonlyArray = []; + value: readonly number[] = []; @Input() @HostBinding('attr.data-tui-host-size') @@ -35,7 +35,7 @@ export class TuiRingChartComponent { @Input() @tuiDefaultProp() - content: PolymorpheusContent | null = null; + content: PolymorpheusContent = ''; @Input() @tuiDefaultProp() @@ -43,10 +43,10 @@ export class TuiRingChartComponent { @Input() @tuiDefaultProp() - activeItemIndex: number | null = null; + activeItemIndex = NaN; @Output() - activeItemIndexChange = new EventEmitter(); + activeItemIndexChange = new EventEmitter(); get hasContent(): boolean { return this.size !== 's' && !!this.content; @@ -56,11 +56,11 @@ export class TuiRingChartComponent { return this.getContentContext(this.activeItemIndex, this.value); } - onActiveItemIndexChange(index: number | null) { + onActiveItemIndexChange(index: number) { this.updateActiveItemIndex(index); } - private updateActiveItemIndex(index: number | null) { + private updateActiveItemIndex(index: number) { if (index === this.activeItemIndex) { return; } @@ -71,8 +71,8 @@ export class TuiRingChartComponent { @tuiPure private getContentContext( - $implicit: number | null, - value: ReadonlyArray, + $implicit: number, + value: readonly number[], ): TuiRingChartContext { return {$implicit, value}; } diff --git a/projects/addon-charts/interfaces/ring-chart-context.ts b/projects/addon-charts/interfaces/ring-chart-context.ts index c56f0fd6e647..93cdcf58a35a 100644 --- a/projects/addon-charts/interfaces/ring-chart-context.ts +++ b/projects/addon-charts/interfaces/ring-chart-context.ts @@ -1,5 +1,5 @@ import {TuiContextWithImplicit} from '@taiga-ui/cdk'; -export interface TuiRingChartContext extends TuiContextWithImplicit { - readonly value: ReadonlyArray; +export interface TuiRingChartContext extends TuiContextWithImplicit { + readonly value: readonly number[]; } diff --git a/projects/addon-commerce/components/input-CVC/input-CVC.component.ts b/projects/addon-commerce/components/input-CVC/input-CVC.component.ts index 26e426bba411..8311608206d0 100644 --- a/projects/addon-commerce/components/input-CVC/input-CVC.component.ts +++ b/projects/addon-commerce/components/input-CVC/input-CVC.component.ts @@ -101,6 +101,10 @@ export class TuiInputCVCComponent this.updateFocused(focused); } + onHovered(hovered: boolean) { + this.updateHovered(hovered); + } + onCopy() {} onValueChange(value: string) { diff --git a/projects/addon-commerce/components/input-CVC/input-CVC.template.html b/projects/addon-commerce/components/input-CVC/input-CVC.template.html index 17e57a6569c6..f935645bf9ae 100644 --- a/projects/addon-commerce/components/input-CVC/input-CVC.template.html +++ b/projects/addon-commerce/components/input-CVC/input-CVC.template.html @@ -12,6 +12,7 @@ [value]="value" (valueChange)="onValueChange($event)" (focusedChange)="onFocused($event)" + (hoveredChange)="onHovered($event)" (copy.prevent)="onCopy()" > diff --git a/projects/addon-commerce/components/input-expire/input-expire.component.ts b/projects/addon-commerce/components/input-expire/input-expire.component.ts index 45f2d58173f9..1bd47f2773ce 100644 --- a/projects/addon-commerce/components/input-expire/input-expire.component.ts +++ b/projects/addon-commerce/components/input-expire/input-expire.component.ts @@ -109,6 +109,10 @@ export class TuiInputExpireComponent this.updateFocused(focused); } + onHovered(hovered: boolean) { + this.updateHovered(hovered); + } + protected getFallbackValue(): string { return ''; } diff --git a/projects/addon-commerce/components/input-expire/input-expire.template.html b/projects/addon-commerce/components/input-expire/input-expire.template.html index f110c4f67b15..292731c0dac5 100644 --- a/projects/addon-commerce/components/input-expire/input-expire.template.html +++ b/projects/addon-commerce/components/input-expire/input-expire.template.html @@ -13,6 +13,7 @@ [value]="value" (valueChange)="onValueChange($event)" (focusedChange)="onFocused($event)" + (hoveredChange)="onHovered($event)" > diff --git a/projects/addon-doc/README.md b/projects/addon-doc/README.md index ac46104ee937..d9fc6318e3b0 100644 --- a/projects/addon-doc/README.md +++ b/projects/addon-doc/README.md @@ -32,24 +32,11 @@ npm i @taiga-ui/addon-doc 2. Configure languages to highlight in your main module: - ```typescript - import * as typescript from 'highlight.js/lib/languages/typescript'; - import {HighlightLanguage} from 'ngx-highlightjs'; - - /** - * Import every language you wish to highlight here - * NOTE: The name of each language must match the file name its imported from - */ - export function hljsLanguages(): ReadonlyArray { - return [{name: 'typescript', func: typescript}]; - } - ``` - ```typescript import {NgModule} from '@angular/core'; import {TuiDocMainModule} from '@taiga-ui/addon-doc'; import {hljsLanguages} from './hljsLanguages'; - import {HIGHLIGHT_OPTIONS} from 'ngx-highlightjs'; + import {HIGHLIGHT_OPTIONS, HighlightLanguage} from 'ngx-highlightjs'; import {AppComponent} from './app.component'; @NgModule({ @@ -60,7 +47,13 @@ npm i @taiga-ui/addon-doc { provide: HIGHLIGHT_OPTIONS, useValue: { - languages: hljsLanguages, + coreLibraryLoader: () => import('highlight.js/lib/core'), + lineNumbersLoader: () => import('highlightjs-line-numbers.js'), // Optional, only if you want the line numbers + languages: { + typescript: () => import('highlight.js/lib/languages/typescript'), + less: () => import('highlight.js/lib/languages/less'), + xml: () => import('highlight.js/lib/languages/xml'), + }, }, }, ], diff --git a/projects/addon-doc/package.json b/projects/addon-doc/package.json index 857117f43899..694b4d450962 100644 --- a/projects/addon-doc/package.json +++ b/projects/addon-doc/package.json @@ -25,8 +25,8 @@ "@taiga-ui/core": "1.6.5", "@taiga-ui/kit": "1.6.5", "schematics-utilities": "1.0.1", - "highlight.js": "^9.15.5", - "ngx-highlightjs": "3.0.3" + "highlight.js": "^10.0.0", + "ngx-highlightjs": "^4.0.0" }, "devDependencies": { "@taiga-ui/core": "1.6.5", diff --git a/projects/addon-doc/src/components/code/code.template.html b/projects/addon-doc/src/components/code/code.template.html index b26076512d5a..e6c8874dc1c8 100644 --- a/projects/addon-doc/src/components/code/code.template.html +++ b/projects/addon-doc/src/components/code/code.template.html @@ -1,2 +1,2 @@

{{filename}}

-
+
diff --git a/projects/addon-doc/src/components/demo/demo.template.html b/projects/addon-doc/src/components/demo/demo.template.html index f2fcefdab6a1..a58b12cf3559 100644 --- a/projects/addon-doc/src/components/demo/demo.template.html +++ b/projects/addon-doc/src/components/demo/demo.template.html @@ -3,9 +3,9 @@ {{texts[0]}} - tuiMode + + tuiMode +
diff --git a/projects/addon-doc/src/components/example/example.component.ts b/projects/addon-doc/src/components/example/example.component.ts index 79db17932985..d9401c3dc077 100644 --- a/projects/addon-doc/src/components/example/example.component.ts +++ b/projects/addon-doc/src/components/example/example.component.ts @@ -50,7 +50,7 @@ export class TuiDocExampleComponent { return this.tabs[this.activeItemIndex]; } - get tabs(): ReadonlyArray { + get tabs(): readonly string[] { return this.getTabs(this.content); } @@ -65,7 +65,7 @@ export class TuiDocExampleComponent { } @tuiPure - private getTabs(content: Record): ReadonlyArray { + private getTabs(content: Record): readonly string[] { return [this.defaultTab, ...Object.keys(content)]; } @@ -80,7 +80,7 @@ export class TuiDocExampleComponent { this.clipboardCopyService.copyToClipboard(url); this.notifications - .showNotification(this.texts[1], { + .show(this.texts[1], { label: this.texts[2], status: TuiNotification.Success, }) diff --git a/projects/addon-doc/src/components/main/main.module.ts b/projects/addon-doc/src/components/main/main.module.ts index a6fad4eb308b..479525dfaecb 100644 --- a/projects/addon-doc/src/components/main/main.module.ts +++ b/projects/addon-doc/src/components/main/main.module.ts @@ -2,6 +2,7 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {RouterModule} from '@angular/router'; import {TuiDialogModule, TuiNotificationsModule, TuiRootModule} from '@taiga-ui/core'; +import {TuiDocHeaderModule} from '../../internal/header/header.module'; import {TuiDocNavigationModule} from '../navigation/navigation.module'; import {TuiDocMainComponent} from './main.component'; @@ -9,6 +10,7 @@ import {TuiDocMainComponent} from './main.component'; imports: [ CommonModule, RouterModule, + TuiDocHeaderModule, TuiRootModule, TuiDialogModule, TuiNotificationsModule, diff --git a/projects/addon-doc/src/components/main/main.style.less b/projects/addon-doc/src/components/main/main.style.less index 201e96aad9c1..b19d066f777b 100644 --- a/projects/addon-doc/src/components/main/main.style.less +++ b/projects/addon-doc/src/components/main/main.style.less @@ -25,10 +25,25 @@ @sidebar-width: 260px; .tui-doc-page { - height: 100vh; + height: 100%; + padding-top: 64px; + box-sizing: border-box; +} + +tui-doc-navigation.tui-doc-navigation { + position: fixed; + top: 64px; + bottom: 0; + width: @sidebar-width; + border-right: 1px solid var(--tui-base-03); + + @media @tablet-s { + display: none; + } } .tui-doc-content { + height: 100%; display: flex; flex-direction: column; margin-left: @sidebar-width; @@ -141,3 +156,14 @@ .hljs-strong { font-weight: bold; } + +.hljs .hljs-line-numbers { + padding: 0; +} + +.hljs-ln-numbers { + vertical-align: top; + opacity: 0.3; + text-align: right; + padding-right: 1em !important; +} diff --git a/projects/addon-doc/src/components/main/main.template.html b/projects/addon-doc/src/components/main/main.template.html index 2f263a1542b7..9e0e0530e41f 100644 --- a/projects/addon-doc/src/components/main/main.template.html +++ b/projects/addon-doc/src/components/main/main.template.html @@ -1,12 +1,13 @@
- - - +
+
+ +
diff --git a/projects/addon-doc/src/components/navigation/navigation.component.ts b/projects/addon-doc/src/components/navigation/navigation.component.ts index c93cae4fca98..bd4040958ce7 100644 --- a/projects/addon-doc/src/components/navigation/navigation.component.ts +++ b/projects/addon-doc/src/components/navigation/navigation.component.ts @@ -5,8 +5,7 @@ import {tuiPure} from '@taiga-ui/cdk'; import {getScreenWidth} from '@taiga-ui/core'; import {Observable} from 'rxjs'; import {TuiDocPage} from '../../interfaces/page'; -import {TUI_DOC_NAVIGATION_TEXTS} from '../../tokens/i18n'; -import {TUI_DOC_LOGO} from '../../tokens/logo'; +import {TUI_DOC_SEARCH_TEXT} from '../../tokens/i18n'; import {TuiDocPages} from '../../types/pages'; import {transliterateKeyboardLayout} from '../../utils/transliterate-keyboard-layout'; import {uniqBy} from '../../utils/uniq-by'; @@ -39,11 +38,10 @@ export class TuiDocNavigationComponent { @Inject(Location) locationRef: Location, @Inject(NAVIGATION_TITLE) title$: Observable, @Inject(DOCUMENT) private readonly documentRef: Document, - @Inject(TUI_DOC_LOGO) readonly logo: string, @Inject(NAVIGATION_LABELS) readonly labels: string, @Inject(NAVIGATION_ITEMS) readonly items: ReadonlyArray, - @Inject(TUI_DOC_NAVIGATION_TEXTS) readonly texts: [string, string], + @Inject(TUI_DOC_SEARCH_TEXT) readonly searchText: string, ) { // Angular can't navigate no anchor links // https://stackoverflow.com/questions/36101756/angular2-routing-with-hashtag-to-page-anchor diff --git a/projects/addon-doc/src/components/navigation/navigation.module.ts b/projects/addon-doc/src/components/navigation/navigation.module.ts index 68577b85c7dc..563edb637606 100644 --- a/projects/addon-doc/src/components/navigation/navigation.module.ts +++ b/projects/addon-doc/src/components/navigation/navigation.module.ts @@ -2,7 +2,7 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {RouterModule} from '@angular/router'; -import {TuiLetModule} from '@taiga-ui/cdk'; +import {TuiActiveZoneModule, TuiLetModule} from '@taiga-ui/cdk'; import { TuiButtonModule, TuiDataListModule, @@ -26,6 +26,7 @@ import {TuiDocNavigationComponent} from './navigation.component'; TuiButtonModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, + TuiActiveZoneModule, TuiLetModule, TuiLinkModule, TuiExpandModule, diff --git a/projects/addon-doc/src/components/navigation/navigation.providers.ts b/projects/addon-doc/src/components/navigation/navigation.providers.ts index 113fabcf331e..2ed4a1a372cb 100644 --- a/projects/addon-doc/src/components/navigation/navigation.providers.ts +++ b/projects/addon-doc/src/components/navigation/navigation.providers.ts @@ -8,7 +8,7 @@ import {TUI_DOC_TITLE} from '../../tokens/title'; import {TuiDocPages} from '../../types/pages'; export const NAVIGATION_TITLE = new InjectionToken>('Page title'); -export const NAVIGATION_LABELS = new InjectionToken>( +export const NAVIGATION_LABELS = new InjectionToken( 'Navigation sections labels for search', ); export const NAVIGATION_ITEMS: InjectionToken< @@ -50,7 +50,7 @@ export function titleProviderFactory( ); } -export function labelsProviderFactory(pages: TuiDocPages): ReadonlyArray { +export function labelsProviderFactory(pages: TuiDocPages): readonly string[] { return pages .map(({section}) => section) .filter((item, index, array) => array.indexOf(item) === index); diff --git a/projects/addon-doc/src/components/navigation/navigation.style.less b/projects/addon-doc/src/components/navigation/navigation.style.less index 773699901b07..44891ca9f28b 100644 --- a/projects/addon-doc/src/components/navigation/navigation.style.less +++ b/projects/addon-doc/src/components/navigation/navigation.style.less @@ -1,49 +1,15 @@ @import 'taiga-ui-local'; -@sidebar-width: 260px; - :host { - .transition(transform); - position: fixed; - top: 0; - bottom: 0; - z-index: 3; display: flex; - width: @sidebar-width; flex-direction: column; text-align: center; - border-right: 1px solid var(--tui-base-03); background: var(--tui-base-01); - - @media @tablet-s { - transform: translateX(-100%); - - &._open { - transform: translateX(0); - } - } -} - -.logo { - .transition(opacity); - width: auto; - height: auto; - margin: 20px auto; - cursor: pointer; - outline: none; - - &:hover { - opacity: 0.8; - } -} - -.versions { - display: flex; } .input { display: block; - margin: 0 24px 24px; + margin: 20px; } .navigation { @@ -70,18 +36,6 @@ } } -.search-link { - display: block; - flex: 1; - min-width: 100%; - box-sizing: border-box; - outline: none; - text-decoration: none; - color: inherit; - padding: 10px 16px 10px 32px; - margin-left: -16px; -} - .subsection { margin-left: 8px; } @@ -107,21 +61,3 @@ line-height: 44px; } } - -.button { - .transition(transform); - position: absolute; - top: 18px; - right: -18px; - display: none; - background-color: var(--tui-base-01); - border: 1px solid var(--tui-base-03); - - :host._open & { - transform: rotate(180deg); - } - - @media @tablet-s { - display: block; - } -} diff --git a/projects/addon-doc/src/components/navigation/navigation.template.html b/projects/addon-doc/src/components/navigation/navigation.template.html index 052afeeb9c2c..d0daf7ae9bcc 100644 --- a/projects/addon-doc/src/components/navigation/navigation.template.html +++ b/projects/addon-doc/src/components/navigation/navigation.template.html @@ -1,15 +1,3 @@ - - - {{texts[1]}} + {{searchText}} - + - diff --git a/projects/addon-doc/src/components/page/page.component.ts b/projects/addon-doc/src/components/page/page.component.ts index 943775a1350a..7a2d297d890b 100644 --- a/projects/addon-doc/src/components/page/page.component.ts +++ b/projects/addon-doc/src/components/page/page.component.ts @@ -3,7 +3,6 @@ import { ChangeDetectionStrategy, Component, ContentChildren, - ElementRef, Inject, Input, QueryList, @@ -36,9 +35,8 @@ export class TuiDocPageComponent { constructor( @Attribute('deprecated') readonly deprecated: string | null, - @Inject(ElementRef) readonly elementRef: ElementRef, - @Inject(TUI_DOC_DEFAULT_TABS) readonly defaultTabs: ReadonlyArray, - @Inject(PAGE_SEE_ALSO) readonly seeAlso: ReadonlyArray, + @Inject(TUI_DOC_DEFAULT_TABS) readonly defaultTabs: readonly string[], + @Inject(PAGE_SEE_ALSO) readonly seeAlso: readonly string[], ) {} get showSeeAlso(): boolean { diff --git a/projects/addon-doc/src/components/page/page.providers.ts b/projects/addon-doc/src/components/page/page.providers.ts index 37eefbdf8e45..d30a55addb68 100644 --- a/projects/addon-doc/src/components/page/page.providers.ts +++ b/projects/addon-doc/src/components/page/page.providers.ts @@ -1,7 +1,7 @@ import {ElementRef, InjectionToken, Provider} from '@angular/core'; import {TUI_DOC_SEE_ALSO} from '../../tokens/see-also'; -export const PAGE_SEE_ALSO = new InjectionToken>('Page see also'); +export const PAGE_SEE_ALSO = new InjectionToken('Page see also'); export const PAGE_PROVIDERS: Provider[] = [ { @@ -13,8 +13,8 @@ export const PAGE_PROVIDERS: Provider[] = [ export function seeAlsoProviderFactory( {nativeElement}: ElementRef, - seeAlsoGroups: ReadonlyArray>, -): ReadonlyArray { + seeAlsoGroups: ReadonlyArray, +): readonly string[] { const groups = seeAlsoGroups.filter(group => group.indexOf(nativeElement.header) !== -1) || []; diff --git a/projects/addon-doc/src/internal/header/header.component.ts b/projects/addon-doc/src/internal/header/header.component.ts new file mode 100644 index 000000000000..4d43c2efcd1f --- /dev/null +++ b/projects/addon-doc/src/internal/header/header.component.ts @@ -0,0 +1,38 @@ +import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; +import {Router} from '@angular/router'; +import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; +import {merge, Subject} from 'rxjs'; +import {distinctUntilChanged, mapTo, startWith} from 'rxjs/operators'; +import {TUI_DOC_MENU_TEXT} from '../../tokens/i18n'; +import {TUI_DOC_LOGO} from '../../tokens/logo'; + +@Component({ + selector: 'header[tuiDocHeader]', + templateUrl: './header.template.html', + styleUrls: ['./header.style.less'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class TuiDocHeaderComponent { + private readonly stream$ = new Subject(); + + readonly open$ = merge(this.router.events.pipe(mapTo(false)), this.stream$).pipe( + startWith(false), + distinctUntilChanged(), + ); + + constructor( + @Inject(TUI_DOC_LOGO) readonly logo: PolymorpheusContent, + @Inject(TUI_DOC_MENU_TEXT) readonly menu: string, + @Inject(Router) private readonly router: Router, + ) {} + + onClick() { + this.stream$.next(true); + } + + onActiveZone(active: boolean) { + if (!active) { + this.stream$.next(false); + } + } +} diff --git a/projects/addon-doc/src/internal/header/header.module.ts b/projects/addon-doc/src/internal/header/header.module.ts new file mode 100644 index 000000000000..690ba7aebd0c --- /dev/null +++ b/projects/addon-doc/src/internal/header/header.module.ts @@ -0,0 +1,22 @@ +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {TuiSidebarModule} from '@taiga-ui/addon-mobile'; +import {TuiActiveZoneModule} from '@taiga-ui/cdk'; +import {TuiButtonModule} from '@taiga-ui/core'; +import {PolymorpheusModule} from '@tinkoff/ng-polymorpheus'; +import {TuiDocNavigationModule} from '../../components/navigation/navigation.module'; +import {TuiDocHeaderComponent} from './header.component'; + +@NgModule({ + imports: [ + CommonModule, + PolymorpheusModule, + TuiButtonModule, + TuiSidebarModule, + TuiActiveZoneModule, + TuiDocNavigationModule, + ], + declarations: [TuiDocHeaderComponent], + exports: [TuiDocHeaderComponent], +}) +export class TuiDocHeaderModule {} diff --git a/projects/addon-doc/src/internal/header/header.style.less b/projects/addon-doc/src/internal/header/header.style.less new file mode 100644 index 000000000000..7508cb308960 --- /dev/null +++ b/projects/addon-doc/src/internal/header/header.style.less @@ -0,0 +1,30 @@ +@import 'taiga-ui-local'; + +:host { + .shadow(6); + position: fixed; + top: 0; + left: 0; + right: 0; + display: flex; + height: 64px; + align-items: center; + padding: 0 20px; + background: var(--tui-base-01); +} + +.logo { + margin-right: auto; +} + +.menu { + margin-left: -20px; + + @media @tablet-lg-min { + display: none; + } +} + +.navigation { + min-height: 100%; +} diff --git a/projects/addon-doc/src/internal/header/header.template.html b/projects/addon-doc/src/internal/header/header.template.html new file mode 100644 index 000000000000..4c7231444e37 --- /dev/null +++ b/projects/addon-doc/src/internal/header/header.template.html @@ -0,0 +1,17 @@ + + + diff --git a/projects/addon-doc/src/internal/see-also/see-also.component.ts b/projects/addon-doc/src/internal/see-also/see-also.component.ts index 89440967b9ba..f834d3a54621 100644 --- a/projects/addon-doc/src/internal/see-also/see-also.component.ts +++ b/projects/addon-doc/src/internal/see-also/see-also.component.ts @@ -12,7 +12,7 @@ import {TUI_DOC_PAGES} from '../../tokens/pages'; }) export class TuiDocSeeAlsoComponent { @Input() - seeAlso: ReadonlyArray = []; + seeAlso: readonly string[] = []; constructor( @Inject(TUI_DOC_SEE_ALSO_TEXT) readonly text: string, diff --git a/projects/addon-doc/src/tokens/default-tabs.ts b/projects/addon-doc/src/tokens/default-tabs.ts index 5cf1318c96cb..6f126758442b 100644 --- a/projects/addon-doc/src/tokens/default-tabs.ts +++ b/projects/addon-doc/src/tokens/default-tabs.ts @@ -1,6 +1,6 @@ import {InjectionToken} from '@angular/core'; -export const TUI_DOC_DEFAULT_TABS = new InjectionToken>( +export const TUI_DOC_DEFAULT_TABS = new InjectionToken( 'Array of default tab names', { factory: () => [], diff --git a/projects/addon-doc/src/tokens/i18n.ts b/projects/addon-doc/src/tokens/i18n.ts index e4dba060a468..d31f90f6f3b3 100644 --- a/projects/addon-doc/src/tokens/i18n.ts +++ b/projects/addon-doc/src/tokens/i18n.ts @@ -44,14 +44,13 @@ export const TUI_DOC_EXAMPLE_TEXTS = new InjectionToken<[string, string, string] {factory: () => ['Preview', 'Link to a sample was successfully copied', 'Done']}, ); -/** - * Works with a tuple - * [@string word 'menu', @string word 'Search] - */ -export const TUI_DOC_NAVIGATION_TEXTS = new InjectionToken<[string, string]>( - 'tui-doc-navigation i18n texts', - {factory: () => ['Menu', 'Search']}, -); +export const TUI_DOC_MENU_TEXT = new InjectionToken('menu i18n text', { + factory: () => 'Menu', +}); + +export const TUI_DOC_SEARCH_TEXT = new InjectionToken('search i18n text', { + factory: () => 'Search', +}); export const TUI_DOC_SEE_ALSO_TEXT = new InjectionToken( 'tui-doc-see-also i18n text', diff --git a/projects/addon-doc/src/tokens/logo.ts b/projects/addon-doc/src/tokens/logo.ts index 5dc451ae8ebb..211681e6da51 100644 --- a/projects/addon-doc/src/tokens/logo.ts +++ b/projects/addon-doc/src/tokens/logo.ts @@ -1,5 +1,6 @@ import {InjectionToken} from '@angular/core'; +import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; -export const TUI_DOC_LOGO = new InjectionToken('Main logo', { +export const TUI_DOC_LOGO = new InjectionToken('Main logo', { factory: () => '', }); diff --git a/projects/addon-doc/src/tokens/see-also.ts b/projects/addon-doc/src/tokens/see-also.ts index c2d03e8fca68..ef8921b0d780 100644 --- a/projects/addon-doc/src/tokens/see-also.ts +++ b/projects/addon-doc/src/tokens/see-also.ts @@ -1,6 +1,6 @@ import {InjectionToken} from '@angular/core'; -export const TUI_DOC_SEE_ALSO = new InjectionToken>>( +export const TUI_DOC_SEE_ALSO = new InjectionToken>( 'Array of arrays of related pages', { factory: () => [], diff --git a/projects/addon-editor/components/color-selector/color-selector.component.ts b/projects/addon-editor/components/color-selector/color-selector.component.ts index a22cff71fd68..308eb2d35e5f 100644 --- a/projects/addon-editor/components/color-selector/color-selector.component.ts +++ b/projects/addon-editor/components/color-selector/color-selector.component.ts @@ -144,7 +144,7 @@ export class TuiColorSelectorComponent { this.updateColor(this.getGradient(this.direction)); } - onStopsChange(stopsKeys: ReadonlyArray) { + onStopsChange(stopsKeys: readonly number[]) { const removed = this.stopsKeys.find(item => stopsKeys.indexOf(item) === -1); const added = stopsKeys.find(item => this.stopsKeys.indexOf(item) === -1); diff --git a/projects/addon-editor/components/color-selector/color-selector.style.less b/projects/addon-editor/components/color-selector/color-selector.style.less index 31b3fc8f22f3..07ba5887d594 100644 --- a/projects/addon-editor/components/color-selector/color-selector.style.less +++ b/projects/addon-editor/components/color-selector/color-selector.style.less @@ -90,7 +90,7 @@ &:hover, &_active { - color: var(--tui-primary-text); + color: var(--tui-text-01); background: var(--tui-secondary-hover); } } diff --git a/projects/addon-editor/components/toolbar/toolbar.component.ts b/projects/addon-editor/components/toolbar/toolbar.component.ts index 79498c10ea01..e4713fb6a0b6 100644 --- a/projects/addon-editor/components/toolbar/toolbar.component.ts +++ b/projects/addon-editor/components/toolbar/toolbar.component.ts @@ -111,19 +111,19 @@ export class TuiToolbarComponent { { size: '5', px: 24, - family: 'tuiHeading', + family: 'var(--tui-heading-font)', name: 'Подзаголовок', }, { size: '6', px: 30, - family: 'tuiHeading', + family: 'var(--tui-heading-font)', name: 'Заголовок', }, ]; // TODO: i18n - readonly codesOptions: ReadonlyArray = ['Код в тексте', 'Код в блоке']; + readonly codesOptions: readonly string[] = ['Код в тексте', 'Код в блоке']; @ViewChildren('button') private readonly buttons: QueryList = EMPTY_QUERY; diff --git a/projects/addon-editor/constants/default-editor-styles.ts b/projects/addon-editor/constants/default-editor-styles.ts index 3ec1e920fb6b..52a93ceb95d1 100644 --- a/projects/addon-editor/constants/default-editor-styles.ts +++ b/projects/addon-editor/constants/default-editor-styles.ts @@ -127,7 +127,7 @@ body.tui-editor-socket { .tui-editor-socket font[size='7'] { display: block; margin: 32px 0 16px; - font-family: tuiHeading, 'Manrope', sans-serif; + font-family: var(--tui-heading-font); } .tui-editor-socket font[size='5'] { diff --git a/projects/addon-editor/icons/all.ts b/projects/addon-editor/icons/all.ts deleted file mode 100644 index ca71220474fe..000000000000 --- a/projects/addon-editor/icons/all.ts +++ /dev/null @@ -1,59 +0,0 @@ -var tuiIconToolbarAttach = ""; - -var tuiIconToolbarBold = ""; - -var tuiIconToolbarClearFormat = ""; - -var tuiIconToolbarCode = ""; - -var tuiIconToolbarColor = ""; - -var tuiIconToolbarFont = ""; - -var tuiIconToolbarFormat = ""; - -var tuiIconToolbarHilite = ""; - -var tuiIconToolbarHr = ""; - -var tuiIconToolbarImg = ""; - -var tuiIconToolbarIndent = ""; - -var tuiIconToolbarItalic = ""; - -var tuiIconToolbarJustifyCenter = ""; - -var tuiIconToolbarJustifyFull = ""; - -var tuiIconToolbarJustifyLeft = ""; - -var tuiIconToolbarJustifyRight = ""; - -var tuiIconToolbarLink = ""; - -var tuiIconToolbarOL = ""; - -var tuiIconToolbarOutdent = ""; - -var tuiIconToolbarQuote = ""; - -var tuiIconToolbarRedo = ""; - -var tuiIconToolbarStrikeThrough = ""; - -var tuiIconToolbarSubscript = ""; - -var tuiIconToolbarSuperscript = ""; - -var tuiIconToolbarTeX = ""; - -var tuiIconToolbarTransparent = ""; - -var tuiIconToolbarUL = ""; - -var tuiIconToolbarUnderline = ""; - -var tuiIconToolbarUndo = ""; - -export { tuiIconToolbarAttach, tuiIconToolbarBold, tuiIconToolbarClearFormat, tuiIconToolbarCode, tuiIconToolbarColor, tuiIconToolbarFont, tuiIconToolbarFormat, tuiIconToolbarHilite, tuiIconToolbarHr, tuiIconToolbarImg, tuiIconToolbarIndent, tuiIconToolbarItalic, tuiIconToolbarJustifyCenter, tuiIconToolbarJustifyFull, tuiIconToolbarJustifyLeft, tuiIconToolbarJustifyRight, tuiIconToolbarLink, tuiIconToolbarOL, tuiIconToolbarOutdent, tuiIconToolbarQuote, tuiIconToolbarRedo, tuiIconToolbarStrikeThrough, tuiIconToolbarSubscript, tuiIconToolbarSuperscript, tuiIconToolbarTeX, tuiIconToolbarTransparent, tuiIconToolbarUL, tuiIconToolbarUnderline, tuiIconToolbarUndo }; diff --git a/projects/addon-editor/icons/index.ts b/projects/addon-editor/icons/index.ts deleted file mode 100644 index 73508fe9b5e1..000000000000 --- a/projects/addon-editor/icons/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './all'; diff --git a/projects/addon-editor/icons/package.json b/projects/addon-editor/icons/package.json deleted file mode 100644 index 289d2d373a50..000000000000 --- a/projects/addon-editor/icons/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ngPackage": { - "lib": { - "entryFile": "index.ts" - } - } -} diff --git a/projects/addon-editor/icons/src/tuiIconToolbarAttach.svg b/projects/addon-editor/icons/src/tuiIconToolbarAttach.svg deleted file mode 100644 index c7a0d9bea8a4..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarAttach.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarBold.svg b/projects/addon-editor/icons/src/tuiIconToolbarBold.svg deleted file mode 100644 index db6c9604845c..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarBold.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarClearFormat.svg b/projects/addon-editor/icons/src/tuiIconToolbarClearFormat.svg deleted file mode 100644 index 30997412b4cf..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarClearFormat.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarCode.svg b/projects/addon-editor/icons/src/tuiIconToolbarCode.svg deleted file mode 100644 index 61c184a86346..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarCode.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarColor.svg b/projects/addon-editor/icons/src/tuiIconToolbarColor.svg deleted file mode 100644 index 71862b2201bf..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarColor.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarFont.svg b/projects/addon-editor/icons/src/tuiIconToolbarFont.svg deleted file mode 100644 index 56fe6a06c8f4..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarFont.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarFormat.svg b/projects/addon-editor/icons/src/tuiIconToolbarFormat.svg deleted file mode 100644 index 2f0d1c531d11..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarFormat.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarHilite.svg b/projects/addon-editor/icons/src/tuiIconToolbarHilite.svg deleted file mode 100644 index 543c7e505ba6..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarHilite.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarHr.svg b/projects/addon-editor/icons/src/tuiIconToolbarHr.svg deleted file mode 100644 index 9d3051135c72..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarHr.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarImg.svg b/projects/addon-editor/icons/src/tuiIconToolbarImg.svg deleted file mode 100644 index 6464d827aee4..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarImg.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarIndent.svg b/projects/addon-editor/icons/src/tuiIconToolbarIndent.svg deleted file mode 100644 index 10b16bf3244f..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarIndent.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarItalic.svg b/projects/addon-editor/icons/src/tuiIconToolbarItalic.svg deleted file mode 100644 index 2a09a8959c11..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarItalic.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarJustifyCenter.svg b/projects/addon-editor/icons/src/tuiIconToolbarJustifyCenter.svg deleted file mode 100644 index d59e17e0c295..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarJustifyCenter.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarJustifyFull.svg b/projects/addon-editor/icons/src/tuiIconToolbarJustifyFull.svg deleted file mode 100644 index df6e9c8e443c..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarJustifyFull.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarJustifyLeft.svg b/projects/addon-editor/icons/src/tuiIconToolbarJustifyLeft.svg deleted file mode 100644 index 1b7c152c73ab..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarJustifyLeft.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarJustifyRight.svg b/projects/addon-editor/icons/src/tuiIconToolbarJustifyRight.svg deleted file mode 100644 index 46a2f381bd46..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarJustifyRight.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarLink.svg b/projects/addon-editor/icons/src/tuiIconToolbarLink.svg deleted file mode 100644 index c1dbe1ea7c60..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarLink.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarOL.svg b/projects/addon-editor/icons/src/tuiIconToolbarOL.svg deleted file mode 100644 index 882494b42a54..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarOL.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarOutdent.svg b/projects/addon-editor/icons/src/tuiIconToolbarOutdent.svg deleted file mode 100644 index 85d6aceb993c..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarOutdent.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarQuote.svg b/projects/addon-editor/icons/src/tuiIconToolbarQuote.svg deleted file mode 100644 index 6c62d7e86607..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarQuote.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarRedo.svg b/projects/addon-editor/icons/src/tuiIconToolbarRedo.svg deleted file mode 100644 index 76747529650e..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarRedo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarStrikeThrough.svg b/projects/addon-editor/icons/src/tuiIconToolbarStrikeThrough.svg deleted file mode 100644 index ddfc78cdf89e..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarStrikeThrough.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarSubscript.svg b/projects/addon-editor/icons/src/tuiIconToolbarSubscript.svg deleted file mode 100644 index 24157e4d9630..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarSubscript.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarSuperscript.svg b/projects/addon-editor/icons/src/tuiIconToolbarSuperscript.svg deleted file mode 100644 index 93e10d349d7b..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarSuperscript.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarTeX.svg b/projects/addon-editor/icons/src/tuiIconToolbarTeX.svg deleted file mode 100644 index edc5b5e19fd1..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarTeX.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarTransparent.svg b/projects/addon-editor/icons/src/tuiIconToolbarTransparent.svg deleted file mode 100644 index 29df7c0f6252..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarTransparent.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarUL.svg b/projects/addon-editor/icons/src/tuiIconToolbarUL.svg deleted file mode 100644 index e20ab6d2f47e..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarUL.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarUnderline.svg b/projects/addon-editor/icons/src/tuiIconToolbarUnderline.svg deleted file mode 100644 index 35026a5a28a8..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarUnderline.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/icons/src/tuiIconToolbarUndo.svg b/projects/addon-editor/icons/src/tuiIconToolbarUndo.svg deleted file mode 100644 index 7ca1b54c2e4f..000000000000 --- a/projects/addon-editor/icons/src/tuiIconToolbarUndo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/addon-editor/index.ts b/projects/addon-editor/index.ts index 8c2b189aa788..17d2e62afa00 100644 --- a/projects/addon-editor/index.ts +++ b/projects/addon-editor/index.ts @@ -2,7 +2,6 @@ export * from '@taiga-ui/addon-editor/components'; export * from '@taiga-ui/addon-editor/constants'; export * from '@taiga-ui/addon-editor/directives'; export * from '@taiga-ui/addon-editor/enums'; -export * from '@taiga-ui/addon-editor/icons'; export * from '@taiga-ui/addon-editor/interfaces'; export * from '@taiga-ui/addon-editor/tokens'; export * from '@taiga-ui/addon-editor/utils'; diff --git a/projects/addon-editor/styles/editor-socket.css b/projects/addon-editor/styles/editor-socket.css index 33b108003ab9..a5d416a78183 100644 --- a/projects/addon-editor/styles/editor-socket.css +++ b/projects/addon-editor/styles/editor-socket.css @@ -125,7 +125,7 @@ body.tui-editor-socket { .tui-editor-socket font[size='7'] { display: block; margin: 32px 0 16px; - font-family: tuiHeading, 'Manrope', sans-serif; + font-family: var(--tui-heading-font); } .tui-editor-socket font[size='5'] { diff --git a/projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts b/projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts index 5ea07d202f61..6a4b70384a3b 100644 --- a/projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts +++ b/projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts @@ -13,7 +13,7 @@ export const YEARLY_CYCLE = 28; export const ANDROID_CYCLE = getCycle(ANDROID_LABEL, ANDROID_WEEK); export const IOS_CYCLE = getCycle(IOS_LABEL, IOS_WEEK); -function getCycle(label: number, week: number): ReadonlyArray> { +function getCycle(label: number, week: number): ReadonlyArray { return Array.from({length: YEARLY_CYCLE}, (_, i) => Array.from( {length: MONTHS_IN_YEAR}, diff --git a/projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts b/projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts index dbcdfff94734..a266ef61bbe7 100644 --- a/projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts +++ b/projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts @@ -14,7 +14,7 @@ const ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE); const IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE); function reduceCycle( - cycle: ReadonlyArray>, + cycle: ReadonlyArray, lastYear: number = 28, lastMonth: number = 12, ): number { diff --git a/projects/addon-mobile/components/mobile-dialog/mobile-dialog-options.ts b/projects/addon-mobile/components/mobile-dialog/mobile-dialog-options.ts index 96491886dbd8..4e5c4790809c 100644 --- a/projects/addon-mobile/components/mobile-dialog/mobile-dialog-options.ts +++ b/projects/addon-mobile/components/mobile-dialog/mobile-dialog-options.ts @@ -1,5 +1,5 @@ export interface TuiMobileDialogOptions { readonly label: string; - readonly actions: ReadonlyArray; + readonly actions: readonly string[]; readonly data: I; } diff --git a/projects/addon-mobile/components/theme-android/theme-android.style.less b/projects/addon-mobile/components/theme-android/theme-android.style.less index 7dd3ccfe0e3d..a8b7af72913d 100644 --- a/projects/addon-mobile/components/theme-android/theme-android.style.less +++ b/projects/addon-mobile/components/theme-android/theme-android.style.less @@ -1,10 +1,3 @@ -@font-face { - font-family: 'tuiHeading'; - src: local('hapica'); - font-weight: 400; - font-style: normal; -} - html { touch-action: manipulation; } diff --git a/projects/addon-mobile/directives/sidebar/sidebar.style.less b/projects/addon-mobile/directives/sidebar/sidebar.style.less index 103b67d913ea..01ad735f9bc6 100644 --- a/projects/addon-mobile/directives/sidebar/sidebar.style.less +++ b/projects/addon-mobile/directives/sidebar/sidebar.style.less @@ -10,7 +10,6 @@ content: ''; background: fade(#000, 38%); animation: tuiFadeIn 0.3s; - transition: opacity 0.3s; } &:before { @@ -25,6 +24,7 @@ &.ng-animating:before, &.ng-animating:after { opacity: 0; + transition: opacity 0.3s; } &.right { diff --git a/projects/addon-table/components/table-pagination/table-pagination.component.ts b/projects/addon-table/components/table-pagination/table-pagination.component.ts index 52313b8b4b10..66540b3a6e8b 100644 --- a/projects/addon-table/components/table-pagination/table-pagination.component.ts +++ b/projects/addon-table/components/table-pagination/table-pagination.component.ts @@ -12,7 +12,7 @@ import {TUI_SPIN_TEXTS} from '@taiga-ui/core'; export class TuiTablePaginationComponent { @Input() @tuiDefaultProp() - items: ReadonlyArray = [10, 20, 50, 100]; + items: readonly number[] = [10, 20, 50, 100]; @Input() @tuiDefaultProp() diff --git a/projects/addon-tablebars/components/table-bars-host/table-bars-host.component.ts b/projects/addon-tablebars/components/table-bars-host/table-bars-host.component.ts index c645c46befac..4b086353fc6f 100644 --- a/projects/addon-tablebars/components/table-bars-host/table-bars-host.component.ts +++ b/projects/addon-tablebars/components/table-bars-host/table-bars-host.component.ts @@ -1,12 +1,10 @@ import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; import {TuiContextWithImplicit} from '@taiga-ui/cdk'; import {TUI_CLOSE_WORD, TuiBrightness, tuiSlideInTop} from '@taiga-ui/core'; -import {BehaviorSubject, Subscription} from 'rxjs'; import {TableBar} from '../../classes/table-bar'; import {TuiTableBarsService} from '../../services/table-bars.service'; // TODO: Accessibility -// TODO: refactor items service host logic @Component({ selector: 'tui-table-bars-host', changeDetection: ChangeDetectionStrategy.OnPush, @@ -15,43 +13,10 @@ import {TuiTableBarsService} from '../../services/table-bars.service'; animations: [tuiSlideInTop], }) export class TuiTableBarsHostComponent { - readonly items$ = new BehaviorSubject>([]); - - private readonly subscription: Subscription; - constructor( - @Inject(TuiTableBarsService) service: TuiTableBarsService, + @Inject(TuiTableBarsService) readonly service: TuiTableBarsService, @Inject(TUI_CLOSE_WORD) readonly closeWord: string, - ) { - this.subscription = service.open$.subscribe(item => { - this.addItem(item); - }); - this.subscription.add( - service.close$.subscribe(item => { - this.removeItem(item); - }), - ); - } - - ngOnDestroy() { - this.subscription.unsubscribe(); - } - - private removeItem(itemToRemove: TableBar) { - const {value} = this.items$; - - if (value.indexOf(itemToRemove) !== -1) { - this.items$.next(value.filter(item => item !== itemToRemove)); - } - } - - private addItem(item: TableBar) { - const {value} = this.items$; - - if (value.indexOf(item) === -1) { - this.items$.next(this.items$.value.concat(item)); - } - } + ) {} getMode(mode: TuiBrightness): TuiBrightness | null { return mode === 'dark' ? TuiBrightness.Light : null; diff --git a/projects/addon-tablebars/components/table-bars-host/table-bars-host.module.ts b/projects/addon-tablebars/components/table-bars-host/table-bars-host.module.ts index f57043afe85e..0f02a33241a6 100644 --- a/projects/addon-tablebars/components/table-bars-host/table-bars-host.module.ts +++ b/projects/addon-tablebars/components/table-bars-host/table-bars-host.module.ts @@ -1,18 +1,11 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; -import {TuiLetModule} from '@taiga-ui/cdk'; import {TuiButtonModule, TuiModeModule} from '@taiga-ui/core'; import {PolymorpheusModule} from '@tinkoff/ng-polymorpheus'; import {TuiTableBarsHostComponent} from './table-bars-host.component'; @NgModule({ - imports: [ - CommonModule, - PolymorpheusModule, - TuiModeModule, - TuiLetModule, - TuiButtonModule, - ], + imports: [CommonModule, PolymorpheusModule, TuiModeModule, TuiButtonModule], declarations: [TuiTableBarsHostComponent], exports: [TuiTableBarsHostComponent], }) diff --git a/projects/addon-tablebars/components/table-bars-host/table-bars-host.template.html b/projects/addon-tablebars/components/table-bars-host/table-bars-host.template.html index 3ca76e832574..a743ae1e3c47 100644 --- a/projects/addon-tablebars/components/table-bars-host/table-bars-host.template.html +++ b/projects/addon-tablebars/components/table-bars-host/table-bars-host.template.html @@ -1,6 +1,5 @@ -
+
{ } beforeEach(() => { - subscription = service.showTableBar(title).subscribe(); + if (subscription) { + subscription.unsubscribe(); + } }); - it('Слушает сервис для добавления tableBar', () => { - expect(component.items$.value[0].content).toBe(title); - }); - - it('tableBar удаляются', () => { - (component as any).removeItem(component.items$.value[0]); + it('Слушает сервис для добавления tableBar', done => { + component.service.bar$.pipe(take(1)).subscribe(bar => { + expect(bar && bar.content).toBe(title); + done(); + }); - expect(component.items$.value.length).toBe(0); + service.open(title).pipe(take(1)).subscribe(); }); - it('tableBar удаляются по unsubscribe', () => { - subscription.unsubscribe(); + it('tableBar удаляются по unsubscribe', done => { + component.service.bar$.pipe(skip(1), take(1)).subscribe(bar => { + expect(bar).toBe(null); + done(); + }); - expect(component.items$.value.length).toBe(0); + service + .open(title) + .pipe(takeUntil(timer(1))) + .subscribe(); }); it('по умолчанию tableBar темный', () => { + service.open(title).pipe(take(1)).subscribe(); + fixture.detectChanges(); expect(getBar().nativeElement.classList.contains('bar_light')).toBe(false); }); it('при mode: light tableBar светлый', () => { - subscription = service - .showTableBar(title, {mode: TuiBrightness.Light}) - .subscribe(); + service.open(title, {mode: TuiBrightness.Light}).pipe(take(1)).subscribe(); fixture.detectChanges(); expect(getBar().nativeElement.classList.contains('bar_light')).toBe(true); }); it('по умолчанию кнопки закрытия нет', () => { + service.open(title).pipe(take(1)).subscribe(); + fixture.detectChanges(); expect(getCloseButton()).toBeNull(); }); it('при hasCloseButton: true tableBar кнопка закрытия есть', () => { - subscription = service.showTableBar(title, {hasCloseButton: true}).subscribe(); + service.open(title, {hasCloseButton: true}).pipe(take(1)).subscribe(); fixture.detectChanges(); expect(getCloseButton()).not.toBeNull(); }); - it('нажатие closeButton удаляет текущий tableBar', () => { - subscription.unsubscribe(); - subscription = service.showTableBar(title, {hasCloseButton: true}).subscribe(); - fixture.detectChanges(); + it('нажатие closeButton удаляет текущий tableBar', done => { + service.bar$.pipe(skip(1), take(1)).subscribe(bar => { + expect(bar).toBe(null); + done(); + }); - getCloseButton().nativeElement.click(); + subscription = service.open(title, {hasCloseButton: true}).subscribe(); fixture.detectChanges(); - expect(component.items$.value.length).toBe(0); + getCloseButton().nativeElement.click(); }); }); diff --git a/projects/addon-tablebars/services/table-bars.service.ts b/projects/addon-tablebars/services/table-bars.service.ts index a2c126deda83..78a469823ea1 100644 --- a/projects/addon-tablebars/services/table-bars.service.ts +++ b/projects/addon-tablebars/services/table-bars.service.ts @@ -13,32 +13,18 @@ const NO_HOST = providedIn: 'root', }) export class TuiTableBarsService { - /** @internal */ - readonly open$ = new Subject(); + readonly bar$ = new Subject(); - /** @internal */ - readonly close$ = new Subject(); + open(content: PolymorpheusContent, options?: TuiTableBarOptions): Observable { + tuiAssert.assert(!!this.bar$.observers.length, NO_HOST); - showTableBar( - content: PolymorpheusContent, - options?: TuiTableBarOptions, - ): Observable { - tuiAssert.assert(!!this.open$.observers.length, NO_HOST); - - return this.createTableBar(content, options); - } - - private createTableBar( - content: PolymorpheusContent, - options?: TuiTableBarOptions, - ): Observable { return new Observable(observer => { const tableBar = new TableBar(observer, content, options); - this.open$.next(tableBar); + this.bar$.next(tableBar); return () => { - this.close$.next(tableBar); + this.bar$.next(null); }; }); } diff --git a/projects/cdk/observables/test/items-query-list-observable.spec.ts b/projects/cdk/observables/test/items-query-list-observable.spec.ts index 66ace23f8785..3979277ab8f8 100644 --- a/projects/cdk/observables/test/items-query-list-observable.spec.ts +++ b/projects/cdk/observables/test/items-query-list-observable.spec.ts @@ -10,17 +10,17 @@ describe('itemsQueryListObservable', () => { }); it('emits current array on subscription', () => { - let result: ReadonlyArray | null = null; + let result: readonly number[] | null = null; itemsQueryListObservable(queryList).subscribe(data => { result = data; }); - expect | null>(result).toEqual([1, 2]); + expect(result).toEqual([1, 2]); }); it('emits new array on changes', () => { - let result: ReadonlyArray | null = null; + let result: readonly number[] | null = null; itemsQueryListObservable(queryList).subscribe(data => { result = data; @@ -29,6 +29,6 @@ describe('itemsQueryListObservable', () => { queryList.reset([1, 2, 3]); queryList.notifyOnChanges(); - expect | null>(result).toEqual([1, 2, 3]); + expect(result).toEqual([1, 2, 3]); }); }); diff --git a/projects/cdk/observables/zone-free.ts b/projects/cdk/observables/zone-free.ts index 5bc9028cc91b..68526b590fcc 100644 --- a/projects/cdk/observables/zone-free.ts +++ b/projects/cdk/observables/zone-free.ts @@ -4,9 +4,9 @@ import { Observable, Observer, Operator, + pipe, TeardownLogic, } from 'rxjs'; -import {map} from 'rxjs/operators'; class TuiZonefreeOperator implements Operator { constructor(private readonly ngZone: NgZone) {} @@ -17,7 +17,14 @@ class TuiZonefreeOperator implements Operator { } export function tuiZonefull(ngZone: NgZone): MonoTypeOperatorFunction { - return map(value => ngZone.run(() => value)); + return source => + new Observable(subscriber => + source.subscribe({ + next: value => ngZone.run(() => subscriber.next(value)), + error: error => ngZone.run(() => subscriber.error(error)), + complete: () => ngZone.run(() => subscriber.complete()), + }), + ); } export function tuiZonefree(ngZone: NgZone): MonoTypeOperatorFunction { @@ -25,5 +32,5 @@ export function tuiZonefree(ngZone: NgZone): MonoTypeOperatorFunction { } export function tuiZoneOptimized(ngZone: NgZone): MonoTypeOperatorFunction { - return source$ => source$.pipe(tuiZonefree(ngZone), tuiZonefull(ngZone)); + return pipe(tuiZonefree(ngZone), tuiZonefull(ngZone)); } diff --git a/projects/cdk/package.json b/projects/cdk/package.json index 015847160f01..16cb21667398 100644 --- a/projects/cdk/package.json +++ b/projects/cdk/package.json @@ -18,7 +18,7 @@ "@ng-web-apis/common": "1.7.0", "@ng-web-apis/mutation-observer": "1.1.0", "@ng-web-apis/resize-observer": "1.0.3", - "@tinkoff/ng-event-plugins": "1.0.1", + "@tinkoff/ng-event-plugins": "2.0.0", "@tinkoff/ng-polymorpheus": "2.1.0", "@types/resize-observer-browser": "0.1.3" }, diff --git a/projects/cdk/pipes/month/month.pipe.ts b/projects/cdk/pipes/month/month.pipe.ts index 1f2bb91b6bbf..b5aeb11bb8d7 100644 --- a/projects/cdk/pipes/month/month.pipe.ts +++ b/projects/cdk/pipes/month/month.pipe.ts @@ -5,7 +5,7 @@ import {TUI_MONTHS} from '@taiga-ui/cdk/tokens'; // @dynamic @Pipe({name: 'tuiMonth'}) export class TuiMonthPipe implements PipeTransform { - constructor(@Inject(TUI_MONTHS) private readonly months: ReadonlyArray) {} + constructor(@Inject(TUI_MONTHS) private readonly months: readonly string[]) {} transform({month}: TuiMonth): string { return this.months[month]; diff --git a/projects/core/components/loader/loader.template.html b/projects/core/components/loader/loader.template.html index a842926af3a7..32dd4c3c956a 100644 --- a/projects/core/components/loader/loader.template.html +++ b/projects/core/components/loader/loader.template.html @@ -2,7 +2,7 @@ class="content" [class.content_has-overlay]="hasOverlay" [class.content_loading]="loading" - [attr.disabled]="loading || null" + [disabled]="loading" > diff --git a/projects/core/components/primitive-checkbox/primitive-checkbox.component.ts b/projects/core/components/primitive-checkbox/primitive-checkbox.component.ts index 41c2b1338681..99360c1e031a 100644 --- a/projects/core/components/primitive-checkbox/primitive-checkbox.component.ts +++ b/projects/core/components/primitive-checkbox/primitive-checkbox.component.ts @@ -40,7 +40,7 @@ export class TuiPrimitiveCheckboxComponent { value: boolean | null = false; get appearance(): TuiAppearance { - return !this.empty ? TuiAppearance.Primary : TuiAppearance.Secondary; + return !this.empty ? TuiAppearance.Primary : TuiAppearance.Outline; } get empty(): boolean { diff --git a/projects/core/components/scroll-controls/scroll-controls.component.ts b/projects/core/components/scroll-controls/scroll-controls.component.ts index 572e579366b2..b0b85bccd5fd 100644 --- a/projects/core/components/scroll-controls/scroll-controls.component.ts +++ b/projects/core/components/scroll-controls/scroll-controls.component.ts @@ -6,13 +6,13 @@ import { NgZone, Optional, } from '@angular/core'; -import {tuiPure, tuiZoneOptimized} from '@taiga-ui/cdk'; +import {tuiZoneOptimized} from '@taiga-ui/cdk'; import {tuiFadeIn} from '@taiga-ui/core/animations'; import {TuiModeDirective} from '@taiga-ui/core/directives/mode'; import {TuiBrightness} from '@taiga-ui/core/enums'; import {TUI_SCROLL_REF} from '@taiga-ui/core/tokens'; -import {interval, Observable} from 'rxjs'; -import {distinctUntilChanged, map, share} from 'rxjs/operators'; +import {interval} from 'rxjs'; +import {distinctUntilChanged, map, startWith} from 'rxjs/operators'; // @bad TODO: handle click on bar to scroll to that position // @dynamic @@ -24,38 +24,21 @@ import {distinctUntilChanged, map, share} from 'rxjs/operators'; animations: [tuiFadeIn], }) export class TuiScrollControlsComponent { - private readonly refresh$ = interval(300).pipe( + readonly refresh$ = interval(300).pipe( map(() => this.scrollbars), + startWith([false, false]), distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]), - share(), + tuiZoneOptimized(this.ngZone), ); constructor( - @Inject(NgZone) - private readonly ngZone: NgZone, - @Inject(TUI_SCROLL_REF) - private readonly scrollRef: ElementRef, + @Inject(NgZone) private readonly ngZone: NgZone, + @Inject(TUI_SCROLL_REF) private readonly scrollRef: ElementRef, @Optional() @Inject(TuiModeDirective) private readonly modeDirective: TuiModeDirective | null, ) {} - @tuiPure - get hasVerticalBar$(): Observable { - return this.refresh$.pipe( - map(([vertical]) => vertical), - tuiZoneOptimized(this.ngZone), - ); - } - - @tuiPure - get hasHorizontalBar$(): Observable { - return this.refresh$.pipe( - map(([_, horizontal]) => horizontal), - tuiZoneOptimized(this.ngZone), - ); - } - get isLight(): boolean { return !!this.modeDirective && this.modeDirective.mode === TuiBrightness.Light; } diff --git a/projects/core/components/scroll-controls/scroll-controls.template.html b/projects/core/components/scroll-controls/scroll-controls.template.html index e3854f3df211..46e4206387ad 100644 --- a/projects/core/components/scroll-controls/scroll-controls.template.html +++ b/projects/core/components/scroll-controls/scroll-controls.template.html @@ -1,29 +1,26 @@ - - - + +
-
-
+ tuiScrollbar="vertical" + class="thumb" + [class.thumb_light]="isLight" + >
+
+
-
-
- + tuiScrollbar="horizontal" + class="thumb" + [class.thumb_light]="isLight" + >
+
diff --git a/projects/core/constants/editing-keys.ts b/projects/core/constants/editing-keys.ts index 4ad417f2c18d..cc74b6ceb037 100644 --- a/projects/core/constants/editing-keys.ts +++ b/projects/core/constants/editing-keys.ts @@ -1,4 +1,4 @@ -export const tuiEditingKeys: ReadonlyArray = [ +export const tuiEditingKeys: readonly string[] = [ 'Spacebar', 'Backspace', 'Delete', diff --git a/projects/core/mask/text-mask-pipe-result.ts b/projects/core/mask/text-mask-pipe-result.ts index 68cbf29fda0e..c1d89ef345a8 100644 --- a/projects/core/mask/text-mask-pipe-result.ts +++ b/projects/core/mask/text-mask-pipe-result.ts @@ -4,5 +4,5 @@ export interface TuiTextMaskPipeResult { value: string; - indexesOfPipedChars?: ReadonlyArray; + indexesOfPipedChars?: readonly number[]; } diff --git a/projects/core/modules/notifications/notifications-host/notifications-host.component.ts b/projects/core/modules/notifications/notifications-host/notifications-host.component.ts index a75818ad4357..09a71c199bdc 100644 --- a/projects/core/modules/notifications/notifications-host/notifications-host.component.ts +++ b/projects/core/modules/notifications/notifications-host/notifications-host.component.ts @@ -4,11 +4,8 @@ import { tuiHeightCollapseList, tuiSlideInRightList, } from '@taiga-ui/core/animations'; -import {BehaviorSubject, Subscription} from 'rxjs'; -import {NotificationAlert} from '../notification-alert/Notification-alert'; import {TuiNotificationsService} from '../notifications.service'; -// TODO: refactor items service @Component({ selector: 'tui-notifications-host', changeDetection: ChangeDetectionStrategy.OnPush, @@ -17,38 +14,7 @@ import {TuiNotificationsService} from '../notifications.service'; animations: [tuiFadeInList, tuiSlideInRightList, tuiHeightCollapseList], }) export class TuiNotificationsHostComponent { - readonly items$ = new BehaviorSubject>>([]); - - private readonly subscription: Subscription; - - constructor(@Inject(TuiNotificationsService) service: TuiNotificationsService) { - this.subscription = service.open$.subscribe(item => { - this.addItem(item); - }); - this.subscription.add( - service.close$.subscribe(item => { - this.removeItem(item); - }), - ); - } - - ngOnDestroy() { - this.subscription.unsubscribe(); - } - - private removeItem(itemToRemove: NotificationAlert) { - const {value} = this.items$; - - if (value.indexOf(itemToRemove) !== -1) { - this.items$.next(value.filter(item => item !== itemToRemove)); - } - } - - private addItem(item: NotificationAlert) { - const {value} = this.items$; - - if (value.indexOf(item) === -1) { - this.items$.next(this.items$.value.concat(item)); - } - } + constructor( + @Inject(TuiNotificationsService) readonly service: TuiNotificationsService, + ) {} } diff --git a/projects/core/modules/notifications/notifications-host/notifications-host.template.html b/projects/core/modules/notifications/notifications-host/notifications-host.template.html index 55ad6860933c..63396a1aea63 100644 --- a/projects/core/modules/notifications/notifications-host/notifications-host.template.html +++ b/projects/core/modules/notifications/notifications-host/notifications-host.template.html @@ -1,4 +1,4 @@ - +
{ let testComponent: TestComponent; let component: TuiNotificationsHostComponent; let service: TuiNotificationsService; - let subscription: Subscription; const label = 'Breaking news!'; @@ -37,23 +37,24 @@ describe('NotificationsHost', () => { service = TestBed.inject(TuiNotificationsService); }); - beforeEach(() => { - subscription = service.showNotification(label, {label}).subscribe(); - }); - - it('Слушает сервис для добавления нотификаций', () => { - expect(component.items$.value[0].label).toBe(label); - }); - - it('Нотификации удаляются', () => { - (component as any).removeItem(component.items$.value[0]); + it('Listens to its notification service', done => { + component.service.items$.pipe(skip(1), take(1)).subscribe(items => { + expect(items[0].label).toBe(label); + done(); + }); - expect(component.items$.value.length).toBe(0); + service.show(label, {label}).pipe(take(1)).subscribe(); }); - it('Нотификации удаляются по unsubscribe', () => { - subscription.unsubscribe(); + it('Removes item after unsubscribe', done => { + component.service.items$.pipe(skip(2), take(1)).subscribe(items => { + expect(items.length).toBe(0); + done(); + }); - expect(component.items$.value.length).toBe(0); + service + .show(label, {label}) + .pipe(takeUntil(timer(1))) + .subscribe(); }); }); diff --git a/projects/core/modules/notifications/notifications.service.ts b/projects/core/modules/notifications/notifications.service.ts index c099c9c2e2f2..e2f4869ec36c 100644 --- a/projects/core/modules/notifications/notifications.service.ts +++ b/projects/core/modules/notifications/notifications.service.ts @@ -1,7 +1,7 @@ import {Injectable} from '@angular/core'; import {tuiAssert} from '@taiga-ui/cdk'; import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; -import {Observable, Observer, ReplaySubject, Subject} from 'rxjs'; +import {BehaviorSubject, Observable, Observer} from 'rxjs'; import {NotificationAlert} from './notification-alert/Notification-alert'; import {TuiNotificationContentContext} from './notification-content-context'; import { @@ -17,42 +17,32 @@ const NO_HOST = }) export class TuiNotificationsService { /** @internal */ - readonly open$ = new ReplaySubject>(1); + readonly items$ = new BehaviorSubject>>([]); - /** @internal */ - readonly close$ = new Subject>(); - - showNotification( + show( content: PolymorpheusContent>, ): Observable; - showNotification( + show( content: PolymorpheusContent>, options: TuiNotificationOptions, ): Observable; - showNotification( + show( content: PolymorpheusContent>, options: TuiNotificationOptionsWithData, ): Observable; - showNotification( + show( content: PolymorpheusContent>, options: TuiNotificationOptions | TuiNotificationOptionsWithData = {}, ): Observable { - tuiAssert.assert(!!this.open$.observers.length, NO_HOST); - - return this.createNotification(content, options); - } + tuiAssert.assert(!!this.items$.observers.length, NO_HOST); - private createNotification( - content: PolymorpheusContent>, - options: TuiNotificationOptions | TuiNotificationOptionsWithData, - ): Observable { return new Observable((observer: Observer) => { const notification = new NotificationAlert(observer, content, options); - this.open$.next(notification); + this.items$.next([...this.items$.value, notification]); return () => { - this.close$.next(notification); + this.items$.next(this.items$.value.filter(item => item !== notification)); }; }); } diff --git a/projects/core/package.json b/projects/core/package.json index 1223e2b9ddfe..9a1050841d61 100644 --- a/projects/core/package.json +++ b/projects/core/package.json @@ -22,7 +22,7 @@ "@angular/forms": ">=6.0.0", "@angular/platform-browser": ">=6.0.0", "@angular/router": ">=6.0.0", - "@tinkoff/ng-event-plugins": ">=1.0.1", + "@tinkoff/ng-event-plugins": ">=2.0.0", "@tinkoff/ng-polymorpheus": ">=2.0.0", "rxjs": ">=6.0.0" } diff --git a/projects/demo/prerender.ts b/projects/demo/prerender.ts deleted file mode 100644 index a6eca1be38cb..000000000000 --- a/projects/demo/prerender.ts +++ /dev/null @@ -1,47 +0,0 @@ -// Load zone.js for the server. -import 'reflect-metadata'; -import 'zone.js/dist/zone-node'; - -import {APP_BASE_HREF} from '@angular/common'; -import {enableProdMode} from '@angular/core'; -import {renderModuleFactory} from '@angular/platform-server'; -import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader'; -import {existsSync, mkdirSync, readFileSync, writeFileSync} from 'fs'; -import {join} from 'path'; -import {PRERENDERED_ROUTES} from './static.paths'; - -enableProdMode(); - -const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('../server/main'); -const BROWSER_FOLDER = join(process.cwd(), 'dist', 'browser'); -const index = readFileSync(join(process.cwd(), 'dist', 'browser', 'index.html'), 'utf8'); -const localFallback = 'http://localhost:3333/'; - -let previousRender = Promise.resolve(); - -// Iterate each route path -PRERENDERED_ROUTES.forEach(route => { - const fullPath = join(BROWSER_FOLDER, route); - - // Make sure the directory structure is there - if (!existsSync(fullPath)) { - mkdirSync(fullPath); - } - - // Writes rendered HTML to index.html, replacing the file if it already exists. - previousRender = previousRender - .then(() => - renderModuleFactory(AppServerModuleNgFactory, { - document: index, - url: route, - extraProviders: [ - provideModuleMap(LAZY_MODULE_MAP), - { - provide: APP_BASE_HREF, - useValue: process.env.ORIGIN || localFallback, - }, - ], - }), - ) - .then(html => writeFileSync(join(fullPath, 'index.html'), html)); -}); diff --git a/projects/demo/server.ts b/projects/demo/server.ts index 0b51f9055aa4..50ea8298d1a6 100644 --- a/projects/demo/server.ts +++ b/projects/demo/server.ts @@ -1,59 +1,83 @@ -import 'reflect-metadata'; +import '@ng-web-apis/universal/mocks'; import 'zone.js/dist/zone-node'; -import {enableProdMode} from '@angular/core'; +import {APP_BASE_HREF} from '@angular/common'; +import {provideLocation, provideUserAgent} from '@ng-web-apis/universal'; import {ngExpressEngine} from '@nguniversal/express-engine'; -import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader'; import * as express from 'express'; +import {Express} from 'express'; +import {existsSync} from 'fs'; import {join} from 'path'; +import {AppServerModule} from './src/main.server'; -enableProdMode(); - -const app = express(); -const PORT = process.env.PORT || 3333; -const DIST_FOLDER = join(process.cwd(), 'dist'); -const FINAL_DEMO_FOLDER = join(DIST_FOLDER, 'demo'); -const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('../server/main'); - -app.engine( - 'html', - ngExpressEngine({ - bootstrap: AppServerModuleNgFactory, - providers: [provideModuleMap(LAZY_MODULE_MAP)], - }) as any, -); - -app.set('view engine', 'html'); -app.set('views', FINAL_DEMO_FOLDER); - -// Example Express Rest API endpoints -// app.get('/api/**', (req, res) => { }); - -// Server static files from /browser -app.get( - '*.*', - express.static(FINAL_DEMO_FOLDER, { - maxAge: '1y', - }), -); - -// All regular routes use the Universal engine -app.get('*', (req, res) => { - // Add information on current browser and location - addToGlobal( - 'location', - new URL(`${req.protocol}://${req.get('host')}${req.originalUrl}`), +global.requestAnimationFrame = global.setImmediate as any; +global.cancelAnimationFrame = () => {}; + +// The Express app is exported so that it can be used by serverless Functions. +export function app(): Express { + const server = express(); + const distFolder = join(process.cwd(), 'dist/demo/browser'); + const indexHtml = existsSync(join(distFolder, 'index.original.html')) + ? 'index.original.html' + : 'index'; + + // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine) + server.engine( + 'html', + ngExpressEngine({ + bootstrap: AppServerModule, + }) as any, + ); + + server.set('view engine', 'html'); + server.set('views', distFolder); + + // Example Express Rest API endpoints + // server.get('/api/**', (req, res) => { }); + // Serve static files from /browser + server.get( + '*.*', + express.static(distFolder, { + maxAge: '1y', + }), ); - addToGlobal('navigator', {userAgent: req.get('user-agent')}); - res.render('index', {req}); -}); + // All regular routes use the Universal engine + server.get('*', (req, res) => { + res.render(indexHtml, { + req, + providers: [ + {provide: APP_BASE_HREF, useValue: req.baseUrl}, + provideLocation(req), + provideUserAgent(req), + ], + }); + }); + + return server; +} + +function run() { + const port = process.env.PORT || 4000; + + // Start up the Node server + const server = app(); -// Start up the Node server -app.listen(PORT, () => { - console.log(`Node Express server listening on http://localhost:${PORT}`); -}); + server.listen(port, () => { + // tslint:disable-next-line:no-console + console.log(`Node Express server listening on http://localhost:${port}`); + }); +} + +// Webpack will replace 'require' with '__webpack_require__' +// '__non_webpack_require__' is a proxy to Node 'require' +// The below code is to ensure that the server is run only when not requiring the bundle. +declare const __non_webpack_require__: NodeRequire; +const mainModule = __non_webpack_require__.main; +const moduleFilename = (mainModule && mainModule.filename) || ''; -function addToGlobal(key: string, value: any) { - (global as any)[key] = value; +if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { + run(); } + +export * from './src/main.server'; diff --git a/projects/demo/src/assets/images/by.svg b/projects/demo/src/assets/images/by.svg new file mode 100644 index 000000000000..d4d3cda68a06 --- /dev/null +++ b/projects/demo/src/assets/images/by.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/projects/demo/src/assets/images/github.svg b/projects/demo/src/assets/images/github.svg new file mode 100644 index 000000000000..aaa098cb69e9 --- /dev/null +++ b/projects/demo/src/assets/images/github.svg @@ -0,0 +1 @@ + diff --git a/projects/demo/src/assets/images/topography.svg b/projects/demo/src/assets/images/topography.svg new file mode 100644 index 000000000000..0ff212392947 --- /dev/null +++ b/projects/demo/src/assets/images/topography.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/demo/src/main.server.ts b/projects/demo/src/main.server.ts index 19f7203f462c..a3e1ccaecc45 100644 --- a/projects/demo/src/main.server.ts +++ b/projects/demo/src/main.server.ts @@ -2,6 +2,13 @@ * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates. */ import '@angular/localize/init'; -export {AppServerModule} from './modules/app/app.server.module'; +import {enableProdMode} from '@angular/core'; +import {environment} from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +export {AppServerModule} from './modules/app/app.server.module'; export {renderModule, renderModuleFactory} from '@angular/platform-server'; diff --git a/projects/demo/src/modules/app/app.browser.module.ts b/projects/demo/src/modules/app/app.browser.module.ts index 59e783020e4d..4f29180e6fa4 100644 --- a/projects/demo/src/modules/app/app.browser.module.ts +++ b/projects/demo/src/modules/app/app.browser.module.ts @@ -9,13 +9,15 @@ import { TuiThemeIosModule, } from '@taiga-ui/addon-mobile'; import {TuiTableBarsHostModule} from '@taiga-ui/addon-tablebars'; -import {TuiDialogModule} from '@taiga-ui/core'; +import {TuiDialogModule, TuiLinkModule, TuiModeModule} from '@taiga-ui/core'; import {MarkdownModule} from 'ngx-markdown'; import {AppComponent} from './app.component'; import {APP_PROVIDERS} from './app.providers'; import {AppRoutingModule} from './app.routes'; import {GettingStartedModule} from './getting-started/getting-started.module'; import {HomeModule} from './home/home.module'; +import {LandingModule} from './landing/landing.module'; +import {LogoModule} from './logo/logo.module'; @NgModule({ bootstrap: [AppComponent], @@ -30,8 +32,12 @@ import {HomeModule} from './home/home.module'; TuiThemeIosModule, TuiDialogModule, TuiMobileDialogModule, + TuiModeModule, + TuiLinkModule, GettingStartedModule, HomeModule, + LandingModule, + LogoModule, HttpClientModule, MarkdownModule.forRoot({ loader: HttpClient, diff --git a/projects/demo/src/modules/app/app.component.ts b/projects/demo/src/modules/app/app.component.ts index df2f0452cb7e..70633e5d3fc5 100644 --- a/projects/demo/src/modules/app/app.component.ts +++ b/projects/demo/src/modules/app/app.component.ts @@ -1,6 +1,4 @@ -import {default as logo} from '!!raw-loader!../../assets/images/taiga.svg'; import {Component, Inject} from '@angular/core'; -import {TUI_DOC_LOGO} from '@taiga-ui/addon-doc'; import {TUI_IS_ANDROID, TUI_IS_IOS, tuiPure} from '@taiga-ui/cdk'; import {changeDetection} from '../../change-detection-strategy'; @@ -10,12 +8,6 @@ import {changeDetection} from '../../change-detection-strategy'; templateUrl: 'app.template.html', styleUrls: ['app.style.less'], changeDetection, - providers: [ - { - provide: TUI_DOC_LOGO, - useValue: logo, - }, - ], }) export class AppComponent { constructor( diff --git a/projects/demo/src/modules/app/app.const.ts b/projects/demo/src/modules/app/app.const.ts index 663d6deccb12..b13815ac7c14 100644 --- a/projects/demo/src/modules/app/app.const.ts +++ b/projects/demo/src/modules/app/app.const.ts @@ -1,6 +1,6 @@ import {InjectionToken} from '@angular/core'; -export const SEE_ALSO_GROUPS: ReadonlyArray> = [ +export const SEE_ALSO_GROUPS: ReadonlyArray = [ ['Tooltip', 'Hint', 'ManualHint'], [ 'TextArea', @@ -37,9 +37,6 @@ export const SEE_ALSO_GROUPS: ReadonlyArray> = [ ['Dropdown', 'DropdownSelection', 'HostedDropdown'], ]; -export const SEE_ALSO = new InjectionToken>>( - 'SEE_ALSO', - { - factory: () => SEE_ALSO_GROUPS, - }, -); +export const SEE_ALSO = new InjectionToken>('SEE_ALSO', { + factory: () => SEE_ALSO_GROUPS, +}); diff --git a/projects/demo/src/modules/app/app.providers.ts b/projects/demo/src/modules/app/app.providers.ts index 26b01cd1c220..ee6b26eedcf7 100644 --- a/projects/demo/src/modules/app/app.providers.ts +++ b/projects/demo/src/modules/app/app.providers.ts @@ -2,6 +2,7 @@ import {LocationStrategy, PathLocationStrategy} from '@angular/common'; import {Title} from '@angular/platform-browser'; import { TUI_DOC_DEFAULT_TABS, + TUI_DOC_LOGO, TUI_DOC_PAGES, TUI_DOC_SEE_ALSO, TUI_DOC_TITLE, @@ -11,7 +12,7 @@ import {iconsPathFactory, TUI_ICONS_PATH} from '@taiga-ui/core'; import {NgDompurifySanitizer} from '@tinkoff/ng-dompurify'; import {HIGHLIGHT_OPTIONS} from 'ngx-highlightjs'; import {SEE_ALSO_GROUPS} from './app.const'; -import {languages} from './languages'; +import {LOGO_CONTENT} from './logo/logo.component'; import {pages} from './pages'; const DEFAULT_TABS = [ @@ -29,7 +30,13 @@ export const APP_PROVIDERS = [ { provide: HIGHLIGHT_OPTIONS, useValue: { - languages, + coreLibraryLoader: () => import('highlight.js/lib/core'), + lineNumbersLoader: () => import('highlightjs-line-numbers.js'), // Optional, only if you want the line numbers + languages: { + typescript: () => import('highlight.js/lib/languages/typescript'), + less: () => import('highlight.js/lib/languages/less'), + xml: () => import('highlight.js/lib/languages/xml'), + }, }, }, { @@ -60,4 +67,8 @@ export const APP_PROVIDERS = [ provide: TUI_DOC_DEFAULT_TABS, useValue: DEFAULT_TABS, }, + { + provide: TUI_DOC_LOGO, + useValue: LOGO_CONTENT, + }, ]; diff --git a/projects/demo/src/modules/app/app.routes.ts b/projects/demo/src/modules/app/app.routes.ts index a989630db95a..5f317166c713 100644 --- a/projects/demo/src/modules/app/app.routes.ts +++ b/projects/demo/src/modules/app/app.routes.ts @@ -1,8 +1,16 @@ import {NgModule} from '@angular/core'; import {RouterModule} from '@angular/router'; import {GettingStartedComponent} from './getting-started/getting-started.component'; +import {LandingComponent} from './landing/landing.component'; const ROUTES = [ + { + path: '', + component: LandingComponent, + data: { + title: 'A powerful set of open source components for Angular', + }, + }, { path: 'getting-started', component: GettingStartedComponent, @@ -1373,7 +1381,7 @@ const ROUTES = [ title: 'Miscellaneous', }, }, - {path: '**', redirectTo: 'getting-started'}, + {path: '**', redirectTo: ''}, ]; @NgModule({ diff --git a/projects/demo/src/modules/app/app.server.module.ts b/projects/demo/src/modules/app/app.server.module.ts index 17c8136e2e86..42000eeee688 100644 --- a/projects/demo/src/modules/app/app.server.module.ts +++ b/projects/demo/src/modules/app/app.server.module.ts @@ -1,11 +1,12 @@ import {NgModule} from '@angular/core'; import {ServerModule} from '@angular/platform-server'; -import {ModuleMapLoaderModule} from '@nguniversal/module-map-ngfactory-loader'; +import {UNIVERSAL_PROVIDERS} from '@ng-web-apis/universal'; import {AppBrowserModule} from './app.browser.module'; import {AppComponent} from './app.component'; @NgModule({ - imports: [AppBrowserModule, ServerModule, ModuleMapLoaderModule], + imports: [AppBrowserModule, ServerModule], bootstrap: [AppComponent], + providers: UNIVERSAL_PROVIDERS, }) export class AppServerModule {} diff --git a/projects/demo/src/modules/app/app.style.less b/projects/demo/src/modules/app/app.style.less index 0a587636a839..34378591e449 100644 --- a/projects/demo/src/modules/app/app.style.less +++ b/projects/demo/src/modules/app/app.style.less @@ -1,3 +1,5 @@ +@import 'taiga-ui-local'; + .christmas { position: absolute; left: 50%; @@ -7,3 +9,19 @@ transform: rotate(20deg); margin-left: 20px; } + +.link { + font-weight: bold; + height: 24px; + + @media @mobile { + font-size: 0; + } +} + +.github { + width: 24px; + height: 24px; + margin-right: 4px; + vertical-align: -6px; +} diff --git a/projects/demo/src/modules/app/app.template.html b/projects/demo/src/modules/app/app.template.html index d93e1731827b..b16b52ff18b0 100644 --- a/projects/demo/src/modules/app/app.template.html +++ b/projects/demo/src/modules/app/app.template.html @@ -5,6 +5,16 @@ class="christmas" src="/assets/images/hat.svg" /> + + + GitHub + diff --git a/projects/demo/src/modules/app/customization/customization.component.ts b/projects/demo/src/modules/app/customization/customization.component.ts index 9c8813e69343..bc3702119b24 100644 --- a/projects/demo/src/modules/app/customization/customization.component.ts +++ b/projects/demo/src/modules/app/customization/customization.component.ts @@ -39,7 +39,7 @@ export class TuiCustomizationComponent implements AfterViewInit { return this.getStyle(this.sanitizer, this.stringify(this.variables)); } - get keys(): ReadonlyArray { + get keys(): readonly string[] { return this.getKeys(this.variables); } @@ -103,7 +103,7 @@ export class TuiCustomizationComponent implements AfterViewInit { } @tuiPure - private getKeys(variables: Record): ReadonlyArray { + private getKeys(variables: Record): readonly string[] { return Object.keys(variables); } diff --git a/projects/demo/src/modules/app/customization/customization.providers.ts b/projects/demo/src/modules/app/customization/customization.providers.ts index 7436905e011b..5cf54295db3f 100644 --- a/projects/demo/src/modules/app/customization/customization.providers.ts +++ b/projects/demo/src/modules/app/customization/customization.providers.ts @@ -23,7 +23,7 @@ export const TUI_DOC_CUSTOMIZATION_PROVIDERS: Provider[] = [ export function varsFactory( windowRef: Window, - variables: ReadonlyArray, + variables: readonly string[], ): Record { const styles = windowRef.getComputedStyle(windowRef.document.documentElement); diff --git a/projects/demo/src/modules/app/landing/landing.component.ts b/projects/demo/src/modules/app/landing/landing.component.ts new file mode 100644 index 000000000000..3d98ee2f0b2e --- /dev/null +++ b/projects/demo/src/modules/app/landing/landing.component.ts @@ -0,0 +1,46 @@ +import {ChangeDetectionStrategy, Component, ElementRef, HostBinding} from '@angular/core'; +import {INTERSECTION_ROOT} from '@ng-web-apis/intersection-observer'; +import {TuiDay} from '@taiga-ui/cdk'; + +@Component({ + selector: 'landing', + templateUrl: './landing.template.html', + styleUrls: ['./landing.style.less'], + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [ + { + provide: INTERSECTION_ROOT, + useExisting: ElementRef, + }, + ], +}) +export class LandingComponent { + current = 0; + + tags = ['Angular', 'Open source']; + + date: TuiDay | null = null; + + readonly labels = ['New', 'Read', 'Archived', 'Junk']; + + @HostBinding('style.background') + get background(): string { + return this.current ? '#5f6ed0' : '#3dc67c'; + } + + onIntersection([{isIntersecting}]: IntersectionObserverEntry[], index: number) { + if (isIntersecting) { + this.current = index; + } + } + + onDay(date: TuiDay) { + this.date = date; + } + + stop(e?: KeyboardEvent) { + if (e && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) { + e.stopPropagation(); + } + } +} diff --git a/projects/demo/src/modules/app/landing/landing.module.ts b/projects/demo/src/modules/app/landing/landing.module.ts new file mode 100644 index 000000000000..41adf15bd69c --- /dev/null +++ b/projects/demo/src/modules/app/landing/landing.module.ts @@ -0,0 +1,43 @@ +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {FormsModule} from '@angular/forms'; +import {RouterModule} from '@angular/router'; +import {IntersectionObserverModule} from '@ng-web-apis/intersection-observer'; +import {TuiPreventDefaultModule, TuiRepeatTimesModule} from '@taiga-ui/cdk'; +import { + TuiButtonModule, + TuiCalendarModule, + TuiHintControllerModule, + TuiTextfieldControllerModule, +} from '@taiga-ui/core'; +import { + TuiCheckboxLabeledModule, + TuiInputDateModule, + TuiInputTagModule, + TuiSliderModule, + TuiToggleModule, +} from '@taiga-ui/kit'; +import {LandingComponent} from './landing.component'; + +@NgModule({ + imports: [ + CommonModule, + RouterModule, + FormsModule, + IntersectionObserverModule, + TuiButtonModule, + TuiRepeatTimesModule, + TuiInputTagModule, + TuiInputDateModule, + TuiCalendarModule, + TuiTextfieldControllerModule, + TuiHintControllerModule, + TuiPreventDefaultModule, + TuiCheckboxLabeledModule, + TuiToggleModule, + TuiSliderModule, + ], + declarations: [LandingComponent], + exports: [LandingComponent], +}) +export class LandingModule {} diff --git a/projects/demo/src/modules/app/landing/landing.style.less b/projects/demo/src/modules/app/landing/landing.style.less new file mode 100644 index 000000000000..335b584f1c05 --- /dev/null +++ b/projects/demo/src/modules/app/landing/landing.style.less @@ -0,0 +1,405 @@ +@import 'taiga-ui-local'; + +@keyframes scroll { + 0% { + color: transparent; + } + + 50% { + color: rgba(0, 0, 0, 0.2); + } + + 100% { + color: transparent; + } +} + +@keyframes bounce { + to { + transform: translate3d(0, 10px, 0); + } +} + +:host { + .fullsize(); + z-index: 1; + background: #3dc67c; + transition: background 0.6s; + overflow-y: auto; + overflow-x: hidden; + scroll-snap-stop: always; + scroll-snap-type: y mandatory; +} + +.footer { + position: fixed; + left: 0; + right: 0; + bottom: 0; + display: flex; + padding: 44px; + + @media all and (max-width: 700px) { + padding: 32px; + } +} + +.by { + margin-left: auto; + filter: invert(1); +} + +.taiga { + position: fixed; + left: 40px; + top: 40px; + width: 35px; + filter: brightness(0) invert(1); +} + +.browse { + .transition(background); + color: var(--tui-base-01); + background: #ff603e; + + &:hover { + background: var(--tui-accent); + } + + &:active { + background: var(--tui-accent-active); + } + + &_desktop { + display: none; + } + + @media all and (min-width: 600px) { + &_mobile { + display: none; + } + + &_desktop { + display: block; + } + } +} + +.initial { + color: var(--tui-text-01); + background: white; + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 60vw; + line-height: initial; + padding: 40px; + box-sizing: border-box; + pointer-events: none; + transform-origin: left; + transition: transform 0.6s; + + @media all and (max-width: 700px) { + width: 100vw; + } + + &_hidden { + transform: translate3d(-100%, 0, 0); + transition: transform 0.6s 0.4s; + } +} + +.map { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + background: #3dc67c; + border: 44px solid transparent; + border-bottom-width: 120px; + overflow: hidden; + + @media all and (min-width: 700px) { + display: none; + } +} + +.wrapper { + position: relative; + transition: opacity 0.6s 0.4s; + white-space: nowrap; + margin: 0; + font-size: ~'min(6vw, 10vh)'; + + @media all and (max-width: 700px) { + font-size: ~'min(10vw, 10vh)'; + } + + @media all and (max-height: 420px) { + font-size: ~'min(6vw, 8vh)'; + } + + &_hidden { + opacity: 0; + transition: opacity 0.6s; + } +} + +.logo { + width: 1em; +} + +.block { + display: block; +} + +.screen { + width: 100vw; + min-height: 100vh; + scroll-snap-align: start; + scroll-snap-stop: always; +} + +.dash { + letter-spacing: -0.2em; + margin-right: 0.3em; +} + +.title { + font-size: 56px; + line-height: 65px; + margin: 0; +} + +.topography { + position: absolute; + top: -50px; + left: -30vw; + overflow: hidden; +} + +.components { + position: sticky; + left: 0; + top: 130px; + transition: transform 0.6s; + transform: translate3d(100vw, 0, 0); + transform-origin: top left; + + @media all and (max-width: 700px), all and (max-height: 500px) { + transform: scale(0.7) translate3d(100vw, 0, 0); + } + + &_first { + transform: translate3d(130px, 0, 0); + transition: transform 0.6s 0.6s; + + @media all and (max-width: 700px), all and (max-height: 500px) { + transform: scale(0.7) translate3d(50px, 0, 0); + } + } + + &_second { + transform: translate3d(calc(100vw - 2400px), 0, 0); + + @media all and (max-width: 700px), all and (max-height: 500px) { + transform: scale(0.7) translate3d(calc(100vw - 1900px), 0, 0); + } + } +} + +.container { + position: absolute; + width: 793px; + height: 500px; + background: white; + border-radius: 60px; + padding: 44px 48px; + box-sizing: border-box; + overflow: hidden; + + &_dark { + top: 0; + left: 1606px; + width: 858px; + padding: 60px 64px; + background: var(--tui-text-01); + color: #fff; + } +} + +.flex { + display: flex; +} + +.date { + width: 288px; + margin-right: 45px; +} + +.calendar { + .shadow(2); + border-radius: var(--tui-radius); + border: 1px solid var(--tui-base-03); + margin-top: 4px; + width: 288px; + box-sizing: border-box; +} + +.controls { + flex: 1; + margin-left: 45px; +} + +.icons { + display: flex; + justify-content: space-between; +} + +.button, +.error { + .transition('color, background'); + background: var(--tui-base-02); + color: var(--tui-primary); + + &:hover, + &:active { + background: var(--tui-base-03); + color: var(--tui-primary-hover); + } +} + +.error { + color: var(--tui-negative); + + &:hover, + &:active { + color: var(--tui-negative-hover); + } +} + +.make { + position: absolute; + left: 744px; + top: 53px; + width: 752px; + height: 132px; + border-radius: 132px; + font-size: 49px; + line-height: 132px; + font-weight: bold; + text-align: center; + color: #fff; + background: #ff603e; + box-sizing: border-box; + + &:before { + .fullsize(); + content: ''; + box-shadow: inset 0 0 0 2px var(--tui-text-01); + pointer-events: none; + } + + &:after { + content: ''; + width: 12px; + height: 12px; + top: -6px; + left: -6px; + border-radius: 3px; + position: absolute; + background: var(--tui-text-01); + color: var(--tui-text-01); + box-shadow: 0 132px, 372px 0, 372px 132px, 744px 0, 744px 132px; + } +} + +.width { + position: absolute; + left: 4px; + top: 50%; + margin-top: -10px; +} + +.customize { + position: absolute; + left: 957px; + top: 283px; + width: 400px; + font-size: 56px; + font-weight: bold; + line-height: 79px; + color: white; +} + +.arrow { + position: absolute; + left: 329px; + bottom: 191px; +} + +.opensource { + width: 300px; + font-size: 77px; + line-height: 75px; + font-weight: bold; + margin: 0; +} + +.contributions { + width: 350px; + margin-top: 50px; + font-size: 17px; + line-height: 34px; +} + +.os { + position: absolute; + top: 42px; + left: 490px; + overflow: visible; +} + +.link { + color: white; +} + +.scroll { + .transition(opacity); + position: absolute; + top: 50%; + left: 50%; + margin: -35px -12px; + width: 25px; + height: 60px; + border-radius: 20px; + border: 3px solid rgba(0, 0, 0, 0.2); + animation: bounce 1s infinite alternate; + + &:before, + &:after { + content: ''; + position: absolute; + width: 8px; + height: 8px; + left: 6.5px; + top: 15px; + transform: rotate(-45deg); + border-bottom: 3px solid; + border-left: 3px solid; + color: transparent; + animation-fill-mode: both; + animation: scroll 1s infinite; + } + + &:after { + top: 30px; + animation: scroll 1s 0.3s infinite; + } + + &_hidden { + opacity: 0; + } +} diff --git a/projects/demo/src/modules/app/landing/landing.template.html b/projects/demo/src/modules/app/landing/landing.template.html new file mode 100644 index 000000000000..d5726bbdb65d --- /dev/null +++ b/projects/demo/src/modules/app/landing/landing.template.html @@ -0,0 +1,213 @@ + + +
+
+ +
+
+

Dozens of
components

+ +
+
+ + Choose date + + +
+
+ + {{label}} + +
+
+ + +
+ + + +
+
+
+
+
+ + + + + + Make it +
+
+ Customize design the way you like it + + + +
+
+

It’s open source

+

+ We use these components in our work ourselves, so we often release + updates. Contributions are welcome — + + GitHub repo + +

+ + + + + +
+
+ +
+
+ +
+

+ + Taiga UI —— + + + powerful set of + open source + components + for Angular +

+
+ +
+ + diff --git a/projects/demo/src/modules/app/languages.ts b/projects/demo/src/modules/app/languages.ts deleted file mode 100644 index 0138709d7765..000000000000 --- a/projects/demo/src/modules/app/languages.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as less from 'highlight.js/lib/languages/less'; -import * as typescript from 'highlight.js/lib/languages/typescript'; -import * as xml from 'highlight.js/lib/languages/xml'; -import {HighlightLanguage} from 'ngx-highlightjs'; - -/** - * Import every language you wish to highlight here - * NOTE: The name of each language must match the file name its imported from - */ -export function languages(): ReadonlyArray { - return [ - {name: 'typescript', func: typescript}, - {name: 'less', func: less}, - {name: 'xml', func: xml}, - ]; -} diff --git a/projects/demo/src/modules/app/log.service.ts b/projects/demo/src/modules/app/log.service.ts index 2d901fbd79f8..eb2ce8947c01 100644 --- a/projects/demo/src/modules/app/log.service.ts +++ b/projects/demo/src/modules/app/log.service.ts @@ -9,12 +9,12 @@ export class LogService { ) {} log(value: any) { - this.notifications.showNotification(String(value)).subscribe(); + this.notifications.show(String(value)).subscribe(); } event(eventName: string, value: any) { this.notifications - .showNotification(String(value), {label: `event (${eventName})`}) + .show(String(value), {label: `event (${eventName})`}) .subscribe(); // нужно, чтобы на витрине в консоли можно было посмотреть объект события diff --git a/projects/demo/src/modules/app/logo/logo.component.ts b/projects/demo/src/modules/app/logo/logo.component.ts new file mode 100644 index 000000000000..5d8f6cee4cd2 --- /dev/null +++ b/projects/demo/src/modules/app/logo/logo.component.ts @@ -0,0 +1,12 @@ +import {ChangeDetectionStrategy, Component} from '@angular/core'; +import {PolymorpheusComponent} from '@tinkoff/ng-polymorpheus'; + +@Component({ + selector: 'logo', + templateUrl: './logo.template.html', + styleUrls: ['./logo.style.less'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class LogoComponent {} + +export const LOGO_CONTENT = new PolymorpheusComponent(LogoComponent); diff --git a/projects/demo/src/modules/app/logo/logo.module.ts b/projects/demo/src/modules/app/logo/logo.module.ts new file mode 100644 index 000000000000..4431d794429a --- /dev/null +++ b/projects/demo/src/modules/app/logo/logo.module.ts @@ -0,0 +1,8 @@ +import {NgModule} from '@angular/core'; +import {LogoComponent} from './logo.component'; + +@NgModule({ + declarations: [LogoComponent], + exports: [LogoComponent], +}) +export class LogoModule {} diff --git a/projects/demo/src/modules/app/logo/logo.style.less b/projects/demo/src/modules/app/logo/logo.style.less new file mode 100644 index 000000000000..2fa52a8e9416 --- /dev/null +++ b/projects/demo/src/modules/app/logo/logo.style.less @@ -0,0 +1,19 @@ +@import 'taiga-ui-local'; + +:host { + display: flex; +} + +.logo { + width: 30px; + margin-right: 10px; +} + +.by { + opacity: 0.4; + margin-left: 14px; + + @media @mobile { + display: none; + } +} diff --git a/projects/demo/src/modules/app/logo/logo.template.html b/projects/demo/src/modules/app/logo/logo.template.html new file mode 100644 index 000000000000..6d9dc654a33d --- /dev/null +++ b/projects/demo/src/modules/app/logo/logo.template.html @@ -0,0 +1,3 @@ + +Taiga UI +by Tinkoff diff --git a/projects/demo/src/modules/charts/axes/axes.template.html b/projects/demo/src/modules/charts/axes/axes.template.html index 1e5c4aee90d3..607a30f9258f 100644 --- a/projects/demo/src/modules/charts/axes/axes.template.html +++ b/projects/demo/src/modules/charts/axes/axes.template.html @@ -85,7 +85,7 @@ i18n documentationPropertyName="axisYLabels" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly string[]" [documentationPropertyValues]="labelsVariants" [(documentationPropertyValue)]="axisYLabels" > @@ -113,7 +113,7 @@ i18n documentationPropertyName="axisYSecondaryLabels" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly string[]" [documentationPropertyValues]="labelsVariants" [(documentationPropertyValue)]="axisYSecondaryLabels" > diff --git a/projects/demo/src/modules/charts/bar-chart/bar-chart.component.ts b/projects/demo/src/modules/charts/bar-chart/bar-chart.component.ts index 74ac79086680..b1b59ac448af 100644 --- a/projects/demo/src/modules/charts/bar-chart/bar-chart.component.ts +++ b/projects/demo/src/modules/charts/bar-chart/bar-chart.component.ts @@ -19,7 +19,7 @@ import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; import {changeDetection} from '../../../change-detection-strategy'; import {FrontEndExample} from '../../interfaces/front-end-example'; -const MONTHS: ReadonlyArray = [ +const MONTHS: readonly string[] = [ 'Jan 2019', 'Feb', 'Mar', @@ -83,9 +83,13 @@ export class ExampleTuiBarChartComponent { readonly contentVariants: ReadonlyArray< PolymorpheusContent> - > = [({$implicit}) => this.getHint($implicit), ({$implicit}) => MONTHS[$implicit]]; + > = [ + '', + ({$implicit}) => this.getHint($implicit), + ({$implicit}) => MONTHS[$implicit], + ]; - hintContent: PolymorpheusContent> | null = null; + hintContent = this.contentVariants[0]; readonly hintModeVariants: ReadonlyArray = [ null, diff --git a/projects/demo/src/modules/charts/bar-chart/bar-chart.template.html b/projects/demo/src/modules/charts/bar-chart/bar-chart.template.html index 4da690aec010..82cad17d0eaf 100644 --- a/projects/demo/src/modules/charts/bar-chart/bar-chart.template.html +++ b/projects/demo/src/modules/charts/bar-chart/bar-chart.template.html @@ -91,7 +91,7 @@ i18n documentationPropertyName="value" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray>" + documentationPropertyType="ReadonlyArray" [documentationPropertyValues]="valueVariants" [(documentationPropertyValue)]="value" > diff --git a/projects/demo/src/modules/charts/bar-set/bar-set.template.html b/projects/demo/src/modules/charts/bar-set/bar-set.template.html index 1959a06f4f52..dcc9dd30fa7e 100644 --- a/projects/demo/src/modules/charts/bar-set/bar-set.template.html +++ b/projects/demo/src/modules/charts/bar-set/bar-set.template.html @@ -90,7 +90,7 @@ i18n documentationPropertyName="value" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly number[]" [documentationPropertyValues]="valueVariants" [(documentationPropertyValue)]="value" > diff --git a/projects/demo/src/modules/charts/bar/bar.template.html b/projects/demo/src/modules/charts/bar/bar.template.html index df2fef47a3d8..8b9f73972543 100644 --- a/projects/demo/src/modules/charts/bar/bar.template.html +++ b/projects/demo/src/modules/charts/bar/bar.template.html @@ -55,7 +55,7 @@ i18n documentationPropertyName="value" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly number[]" [documentationPropertyValues]="valueVariants" [(documentationPropertyValue)]="value" > diff --git a/projects/demo/src/modules/charts/line-days-chart/examples/1/index.ts b/projects/demo/src/modules/charts/line-days-chart/examples/1/index.ts index 2c4daa780dc6..aeb10933000f 100644 --- a/projects/demo/src/modules/charts/line-days-chart/examples/1/index.ts +++ b/projects/demo/src/modules/charts/line-days-chart/examples/1/index.ts @@ -33,9 +33,9 @@ export class TuiLineDaysChartExample1 { readonly yStringify: TuiStringHandler = y => `${(10 * y).toLocaleString('en-US', {maximumFractionDigits: 0})} $`; - constructor(@Inject(TUI_MONTHS) private readonly months: ReadonlyArray) {} + constructor(@Inject(TUI_MONTHS) private readonly months: readonly string[]) {} - get labels(): ReadonlyArray { + get labels(): readonly string[] { return this.computeLabels(this.range, this.months); } @@ -62,8 +62,8 @@ export class TuiLineDaysChartExample1 { @tuiPure private computeLabels( {from, to}: TuiDayRange, - months: ReadonlyArray, - ): ReadonlyArray { + months: readonly string[], + ): readonly string[] { return Array.from( {length: TuiMonth.lengthBetween(from, to) + 1}, (_, i) => months[from.append({month: i}).month], diff --git a/projects/demo/src/modules/charts/line-days-chart/examples/2/pipe.ts b/projects/demo/src/modules/charts/line-days-chart/examples/2/pipe.ts index 79b4de77fb60..edcd92540737 100644 --- a/projects/demo/src/modules/charts/line-days-chart/examples/2/pipe.ts +++ b/projects/demo/src/modules/charts/line-days-chart/examples/2/pipe.ts @@ -6,9 +6,9 @@ import {TUI_MONTHS, TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk'; name: 'labels', }) export class LabelsPipe implements PipeTransform { - constructor(@Inject(TUI_MONTHS) private readonly months: ReadonlyArray) {} + constructor(@Inject(TUI_MONTHS) private readonly months: readonly string[]) {} - transform({from, to}: TuiDayRange): ReadonlyArray { + transform({from, to}: TuiDayRange): readonly string[] { const length = TuiDay.lengthBetween(from, to); if (length > 90) { @@ -38,7 +38,7 @@ export class LabelsPipe implements PipeTransform { } } -function onlyMondays(range: ReadonlyArray): ReadonlyArray { +function onlyMondays(range: ReadonlyArray): readonly string[] { return range.filter(day => !day.dayOfWeek()).map(String); } diff --git a/projects/demo/src/modules/charts/line-days-chart/line-days-chart.component.ts b/projects/demo/src/modules/charts/line-days-chart/line-days-chart.component.ts index 299951ac8b7c..0e990c127250 100644 --- a/projects/demo/src/modules/charts/line-days-chart/line-days-chart.component.ts +++ b/projects/demo/src/modules/charts/line-days-chart/line-days-chart.component.ts @@ -104,5 +104,5 @@ export class ExampleTuiLineDaysChartComponent { height = 200; - constructor(@Inject(TUI_MONTHS) private readonly months: ReadonlyArray) {} + constructor(@Inject(TUI_MONTHS) private readonly months: readonly string[]) {} } diff --git a/projects/demo/src/modules/charts/pie-chart/pie-chart.component.ts b/projects/demo/src/modules/charts/pie-chart/pie-chart.component.ts index f7f9eaef8431..78f5114f4c5e 100644 --- a/projects/demo/src/modules/charts/pie-chart/pie-chart.component.ts +++ b/projects/demo/src/modules/charts/pie-chart/pie-chart.component.ts @@ -47,9 +47,9 @@ export class ExampleTuiPieChartComponent { value = this.valueVariants[0]; - readonly activeItemIndexVariants = [0, 1, 2]; + readonly activeItemIndexVariants = [NaN, 0, 1, 2]; - activeItemIndex = null; + activeItemIndex = this.activeItemIndexVariants[0]; readonly sizeVariants: ReadonlyArray = [ 'xs', @@ -71,11 +71,12 @@ export class ExampleTuiPieChartComponent { readonly contentVariants: ReadonlyArray< PolymorpheusContent> > = [ + '', ({$implicit}) => this.getPercent($implicit), ({$implicit}) => this.format($implicit), ]; - hintContent: PolymorpheusContent> | null = null; + hintContent = this.contentVariants[0]; getPercent(index: number): string { return `${round((100 * this.value[index]) / sum(...this.value), 2)} %`; diff --git a/projects/demo/src/modules/charts/pie-chart/pie-chart.template.html b/projects/demo/src/modules/charts/pie-chart/pie-chart.template.html index b47a8eda2960..f008ac6043ca 100644 --- a/projects/demo/src/modules/charts/pie-chart/pie-chart.template.html +++ b/projects/demo/src/modules/charts/pie-chart/pie-chart.template.html @@ -35,7 +35,7 @@ i18n documentationPropertyName="activeItemIndex" documentationPropertyMode="input-output" - documentationPropertyType="number | null" + documentationPropertyType="number" [documentationPropertyValues]="activeItemIndexVariants" [(documentationPropertyValue)]="activeItemIndex" > @@ -75,7 +75,7 @@ i18n documentationPropertyName="value" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly number[]" [documentationPropertyValues]="valueVariants" [(documentationPropertyValue)]="value" > diff --git a/projects/demo/src/modules/charts/ring-chart/ring-chart.component.ts b/projects/demo/src/modules/charts/ring-chart/ring-chart.component.ts index 874359c324bd..18afe5622c1c 100644 --- a/projects/demo/src/modules/charts/ring-chart/ring-chart.component.ts +++ b/projects/demo/src/modules/charts/ring-chart/ring-chart.component.ts @@ -51,9 +51,9 @@ export class ExampleTuiRingChartComponent { value = this.valueVariants[0]; - readonly activeItemIndexVariants = [0, 1, 2]; + readonly activeItemIndexVariants = [NaN, 0, 1, 2]; - activeItemIndex = null; + activeItemIndex = this.activeItemIndexVariants[0]; readonly sizeVariants: ReadonlyArray = ['s', 'm', 'l', 'xl']; @@ -67,15 +67,16 @@ export class ExampleTuiRingChartComponent { colorHandler = this.colorHandlerVariants[0]; readonly contentVariants: ReadonlyArray> = [ + '', ({$implicit, value}) => - $implicit === null + isNaN($implicit) ? '' : `${round((100 * value[$implicit]) / sum(...value), 2)} %`, ({$implicit, value}) => - $implicit === null + isNaN($implicit) ? `${formatNumber(sum(...value))}\nВсего` : `${formatNumber(value[$implicit])}\nСектор №${$implicit + 1}`, ]; - content: PolymorpheusContent | null = null; + content = this.contentVariants[0]; } diff --git a/projects/demo/src/modules/charts/ring-chart/ring-chart.template.html b/projects/demo/src/modules/charts/ring-chart/ring-chart.template.html index 1c648ddf8094..09303b74c0bf 100644 --- a/projects/demo/src/modules/charts/ring-chart/ring-chart.template.html +++ b/projects/demo/src/modules/charts/ring-chart/ring-chart.template.html @@ -35,7 +35,7 @@ i18n documentationPropertyName="activeItemIndex" documentationPropertyMode="input-output" - documentationPropertyType="number | null" + documentationPropertyType="number" [documentationPropertyValues]="activeItemIndexVariants" [(documentationPropertyValue)]="activeItemIndex" > @@ -76,7 +76,7 @@ i18n documentationPropertyName="value" documentationPropertyMode="input" - documentationPropertyType="ReadonlyArray" + documentationPropertyType="readonly number[]" [documentationPropertyValues]="valueVariants" [(documentationPropertyValue)]="value" > diff --git a/projects/demo/src/modules/components/abstract/reactive-field.ts b/projects/demo/src/modules/components/abstract/reactive-field.ts index 0ddf90772829..8bda39092870 100644 --- a/projects/demo/src/modules/components/abstract/reactive-field.ts +++ b/projects/demo/src/modules/components/abstract/reactive-field.ts @@ -29,7 +29,7 @@ export abstract class AbstractExampleTuiReactiveField extends AbstractExampleTui readonly sizeVariants: ReadonlyArray = ['s', 'm', 'l']; - readonly hintContentVariants: ReadonlyArray = ['Иванов Иван Иванович']; + readonly hintContentVariants: readonly string[] = ['Иванов Иван Иванович']; readonly hintDirectionVariants: ReadonlyArray = [ 'left', diff --git a/projects/demo/src/modules/components/action/examples/1/index.ts b/projects/demo/src/modules/components/action/examples/1/index.ts index b97e173219b7..ea15e21aa356 100644 --- a/projects/demo/src/modules/components/action/examples/1/index.ts +++ b/projects/demo/src/modules/components/action/examples/1/index.ts @@ -17,6 +17,6 @@ export class TuiActionExample1 { ) {} onClick(result: string) { - this.notificationsService.showNotification(result).subscribe(); + this.notificationsService.show(result).subscribe(); } } diff --git a/projects/demo/src/modules/components/avatar/avatar.component.ts b/projects/demo/src/modules/components/avatar/avatar.component.ts index a177558d4053..722fdf811476 100644 --- a/projects/demo/src/modules/components/avatar/avatar.component.ts +++ b/projects/demo/src/modules/components/avatar/avatar.component.ts @@ -31,7 +31,7 @@ export class ExampleTuiAvatarComponent { HTML: example2Html, }; - readonly avatarUrlVariants: ReadonlyArray = [ + readonly avatarUrlVariants: readonly string[] = [ 'https://ng-web-apis.github.io/dist/assets/images/web-api.svg', ]; diff --git a/projects/demo/src/modules/components/data-list/examples/4/index.ts b/projects/demo/src/modules/components/data-list/examples/4/index.ts index 627b0f25f036..70789713f58c 100644 --- a/projects/demo/src/modules/components/data-list/examples/4/index.ts +++ b/projects/demo/src/modules/components/data-list/examples/4/index.ts @@ -44,15 +44,12 @@ export class TuiDataListExample4 { readonly items = [INCOME, EXPENSES]; - readonly identityMatcher: TuiIdentityMatcher> = ( - items1, - items2, - ) => + readonly identityMatcher: TuiIdentityMatcher = (items1, items2) => items1.length === items2.length && items1.every(item => items2.indexOf(item) !== -1); readonly valueContent: TuiStringHandler< - TuiContextWithImplicit> + TuiContextWithImplicit > = ({$implicit}) => { if (!$implicit.length) { return 'All'; diff --git a/projects/demo/src/modules/components/error/error.component.ts b/projects/demo/src/modules/components/error/error.component.ts index b86d62bb8ade..1bfad17cc325 100644 --- a/projects/demo/src/modules/components/error/error.component.ts +++ b/projects/demo/src/modules/components/error/error.component.ts @@ -26,7 +26,7 @@ export class ExampleTuiErrorComponent { @ViewChild('errorContent') errorContent?: TemplateRef<{}>; - readonly errorVariants: ReadonlyArray = [ + readonly errorVariants: readonly string[] = [ 'Error as string', 'Error as HTML content', ]; diff --git a/projects/demo/src/modules/components/filter/examples/4/index.ts b/projects/demo/src/modules/components/filter/examples/4/index.ts index 3686b1790549..014f376daa18 100644 --- a/projects/demo/src/modules/components/filter/examples/4/index.ts +++ b/projects/demo/src/modules/components/filter/examples/4/index.ts @@ -23,10 +23,10 @@ enum Department { export class TuiFilterExample4 { readonly items = Object.values(Department); - readonly filters$ = new BehaviorSubject>([]); + readonly filters$ = new BehaviorSubject([]); @tuiPure - get model$(): Observable> { + get model$(): Observable { return this.filters$.pipe( map(value => (value.length === this.items.length ? [] : value)), ); @@ -43,7 +43,7 @@ export class TuiFilterExample4 { ); } - onModelChange(model: ReadonlyArray) { + onModelChange(model: readonly string[]) { this.filters$.next(model); } diff --git a/projects/demo/src/modules/components/filter/filter.component.ts b/projects/demo/src/modules/components/filter/filter.component.ts index 9beea244b8d8..fbfe1cd010bc 100644 --- a/projects/demo/src/modules/components/filter/filter.component.ts +++ b/projects/demo/src/modules/components/filter/filter.component.ts @@ -104,6 +104,6 @@ export class ExampleTuiFilterComponent { ) {} onToggledItemChange(item: any) { - this.notifications.showNotification(String(item)).subscribe(); + this.notifications.show(String(item)).subscribe(); } } diff --git a/projects/demo/src/modules/components/input-copy/input-copy.component.ts b/projects/demo/src/modules/components/input-copy/input-copy.component.ts index 37c0dd96b6a3..fea27f0ef373 100644 --- a/projects/demo/src/modules/components/input-copy/input-copy.component.ts +++ b/projects/demo/src/modules/components/input-copy/input-copy.component.ts @@ -42,7 +42,7 @@ export class ExampleTuiInputCopyComponent extends AbstractExampleTuiReactiveFiel readonly control = new FormControl('', Validators.required); - readonly maxLengthVariants: ReadonlyArray = [10]; + readonly maxLengthVariants: readonly number[] = [10]; readonly autocompleteVariants = [ 'off', diff --git a/projects/demo/src/modules/components/input-file/examples/3/index.ts b/projects/demo/src/modules/components/input-file/examples/3/index.ts index 007f98df9b84..34dd42ecbfc6 100644 --- a/projects/demo/src/modules/components/input-file/examples/3/index.ts +++ b/projects/demo/src/modules/components/input-file/examples/3/index.ts @@ -105,9 +105,7 @@ export class TuiInputFileExample3 { const removed = getRemoved(this.files, files); if (removed) { - this.notificationsService - .showNotification(`"${removed.name}" was removed`) - .subscribe(); + this.notificationsService.show(`"${removed.name}" was removed`).subscribe(); } } diff --git a/projects/demo/src/modules/components/input-inline/examples/2/component.ts b/projects/demo/src/modules/components/input-inline/examples/2/component.ts index 994263ced971..bc86f71c2310 100644 --- a/projects/demo/src/modules/components/input-inline/examples/2/component.ts +++ b/projects/demo/src/modules/components/input-inline/examples/2/component.ts @@ -31,8 +31,6 @@ export class TuiInputInlineExample2 { } private saveHeading(newHeading: string) { - this.notifications - .showNotification(newHeading, {label: 'New heading'}) - .subscribe(); + this.notifications.show(newHeading, {label: 'New heading'}).subscribe(); } } diff --git a/projects/demo/src/modules/components/input-inline/input-inline.component.ts b/projects/demo/src/modules/components/input-inline/input-inline.component.ts index 225fee04fa05..251212b22324 100644 --- a/projects/demo/src/modules/components/input-inline/input-inline.component.ts +++ b/projects/demo/src/modules/components/input-inline/input-inline.component.ts @@ -39,7 +39,7 @@ export class ExampleTuiInputInlineComponent extends AbstractExampleTuiReactiveFi control = new FormControl('111', Validators.required); - readonly maxLengthVariants: ReadonlyArray = [10]; + readonly maxLengthVariants: readonly number[] = [10]; maxLength = null; readonly textMaskOptionsVariants: ReadonlyArray = [ diff --git a/projects/demo/src/modules/components/input-number/input-number.component.ts b/projects/demo/src/modules/components/input-number/input-number.component.ts index 177b71218318..88eba944015f 100644 --- a/projects/demo/src/modules/components/input-number/input-number.component.ts +++ b/projects/demo/src/modules/components/input-number/input-number.component.ts @@ -37,11 +37,11 @@ export class ExampleTuiInputNumberComponent extends AbstractExampleTuiReactiveFi readonly exampleImportModule = exampleImportModule; readonly exampleInsertTemplate = exampleInsertTemplate; - readonly minVariants: ReadonlyArray = [-Infinity, -500, 5, 25]; + readonly minVariants: readonly number[] = [-Infinity, -500, 5, 25]; min = this.minVariants[0]; - readonly maxVariants: ReadonlyArray = [Infinity, 10, 500]; + readonly maxVariants: readonly number[] = [Infinity, 10, 500]; max = this.maxVariants[0]; @@ -75,7 +75,7 @@ export class ExampleTuiInputNumberComponent extends AbstractExampleTuiReactiveFi cleaner = false; - readonly precisionVariants: ReadonlyArray = [2, 3, 4]; + readonly precisionVariants: readonly number[] = [2, 3, 4]; precision = this.precisionVariants[0]; diff --git a/projects/demo/src/modules/components/input-password/input-password.component.ts b/projects/demo/src/modules/components/input-password/input-password.component.ts index e2eafa627871..6b5830a1a32c 100644 --- a/projects/demo/src/modules/components/input-password/input-password.component.ts +++ b/projects/demo/src/modules/components/input-password/input-password.component.ts @@ -36,7 +36,7 @@ export class ExampleTuiInputPasswordComponent extends AbstractExampleTuiReactive TypeScript: example1Ts, }; - readonly maxLengthVariants: ReadonlyArray = [10]; + readonly maxLengthVariants: readonly number[] = [10]; autocompleteVariants = ['off', 'new-password', 'current-password']; diff --git a/projects/demo/src/modules/components/input-range/input-range.component.ts b/projects/demo/src/modules/components/input-range/input-range.component.ts index 007aa96ffe91..bd65419cf12a 100644 --- a/projects/demo/src/modules/components/input-range/input-range.component.ts +++ b/projects/demo/src/modules/components/input-range/input-range.component.ts @@ -37,23 +37,23 @@ export class ExampleTuiInputRangeComponent extends AbstractExampleTuiReactiveFie control = new FormControl(); - minVariants: ReadonlyArray = [0, 5, 7.77, -10]; + minVariants: readonly number[] = [0, 5, 7.77, -10]; min = this.minVariants[0]; - maxVariants: ReadonlyArray = [10, 100, 10000]; + maxVariants: readonly number[] = [10, 100, 10000]; max = this.maxVariants[0]; - segmentsVariants: ReadonlyArray = [0, 1, 5, 13]; + segmentsVariants: readonly number[] = [0, 1, 5, 13]; segments = this.segmentsVariants[0]; - stepsVariants: ReadonlyArray = [0, 4, 10]; + stepsVariants: readonly number[] = [0, 4, 10]; steps = this.stepsVariants[0]; - quantumVariants: ReadonlyArray = [1, 10, 100]; + quantumVariants: readonly number[] = [1, 10, 100]; quantum = this.quantumVariants[0]; @@ -71,11 +71,11 @@ export class ExampleTuiInputRangeComponent extends AbstractExampleTuiReactiveFie segmentsPluralize = null; - minLabelVariants: ReadonlyArray = ['', 'Ничего']; + minLabelVariants: readonly string[] = ['', 'Ничего']; minLabel = this.minLabelVariants[0]; - maxLabelVariants: ReadonlyArray = ['', 'Всё']; + maxLabelVariants: readonly string[] = ['', 'Всё']; maxLabel = this.maxLabelVariants[0]; diff --git a/projects/demo/src/modules/components/input-slider/input-slider.component.ts b/projects/demo/src/modules/components/input-slider/input-slider.component.ts index a7e8fb2bb8be..07bbd9ed1fd3 100644 --- a/projects/demo/src/modules/components/input-slider/input-slider.component.ts +++ b/projects/demo/src/modules/components/input-slider/input-slider.component.ts @@ -37,23 +37,23 @@ export class ExampleTuiInputSliderComponent extends AbstractExampleTuiReactiveFi readonly control = new FormControl(); - readonly minVariants: ReadonlyArray = [0, 1, 5, 7.77, -10]; + readonly minVariants: readonly number[] = [0, 1, 5, 7.77, -10]; min = this.minVariants[0]; - readonly maxVariants: ReadonlyArray = [10, 100, 10000]; + readonly maxVariants: readonly number[] = [10, 100, 10000]; max = this.maxVariants[0]; - readonly segmentsVariants: ReadonlyArray = [0, 1, 5, 13]; + readonly segmentsVariants: readonly number[] = [0, 1, 5, 13]; segments = this.segmentsVariants[0]; - readonly stepsVariants: ReadonlyArray = [0, 4, 10]; + readonly stepsVariants: readonly number[] = [0, 4, 10]; steps = this.stepsVariants[0]; - readonly quantumVariants: ReadonlyArray = [1, 0.01, 10, 100]; + readonly quantumVariants: readonly number[] = [1, 0.01, 10, 100]; quantum = this.quantumVariants[0]; @@ -71,15 +71,15 @@ export class ExampleTuiInputSliderComponent extends AbstractExampleTuiReactiveFi segmentsPluralize = null; - readonly secondaryVariants: ReadonlyArray = ['getter процентов', 'условно']; + readonly secondaryVariants: readonly string[] = ['getter процентов', 'условно']; secondarySelected = null; - readonly minLabelVariants: ReadonlyArray = ['', 'Ничего']; + readonly minLabelVariants: readonly string[] = ['', 'Ничего']; minLabel = this.minLabelVariants[0]; - readonly maxLabelVariants: ReadonlyArray = ['', 'Всё']; + readonly maxLabelVariants: readonly string[] = ['', 'Всё']; maxLabel = this.maxLabelVariants[0]; diff --git a/projects/demo/src/modules/components/input-tag/examples/2/index.ts b/projects/demo/src/modules/components/input-tag/examples/2/index.ts index e6443f6a7117..aa69c841c2f0 100644 --- a/projects/demo/src/modules/components/input-tag/examples/2/index.ts +++ b/projects/demo/src/modules/components/input-tag/examples/2/index.ts @@ -4,7 +4,7 @@ import {delay, startWith, switchMap} from 'rxjs/operators'; import {changeDetection} from '../../../../../change-detection-strategy'; import {encapsulation} from '../../../../../view-encapsulation'; -const databaseMockData: ReadonlyArray = [ +const databaseMockData: readonly string[] = [ 'John Cleese', 'Eric Idle', 'Michael Palin', @@ -27,9 +27,7 @@ export class TuiInputTagExample2 { readonly items$ = this.search$.pipe( switchMap(search => - this.serverRequest(search).pipe( - startWith | null>(null), - ), + this.serverRequest(search).pipe(startWith(null)), ), startWith(databaseMockData), ); @@ -41,7 +39,7 @@ export class TuiInputTagExample2 { /** * Server request emulation */ - private serverRequest(search: string): Observable> { + private serverRequest(search: string): Observable { const result = databaseMockData.filter( item => item.toLowerCase().indexOf(search.toLowerCase()) !== -1, ); diff --git a/projects/demo/src/modules/components/input-tag/examples/4/index.ts b/projects/demo/src/modules/components/input-tag/examples/4/index.ts index 148cd737be0d..40cacf5bf564 100644 --- a/projects/demo/src/modules/components/input-tag/examples/4/index.ts +++ b/projects/demo/src/modules/components/input-tag/examples/4/index.ts @@ -38,12 +38,12 @@ export class TuiInputTagExample4 { readonly control = new FormControl([], createControlValidator(this.tagValidator)); - get filtered(): ReadonlyArray { + get filtered(): readonly string[] { return this.filter(this.search, this.control.value); } @tuiPure - private filter(search: string, value: ReadonlyArray): ReadonlyArray { + private filter(search: string, value: readonly string[]): readonly string[] { return ITEMS.filter( item => TUI_DEFAULT_MATCHER(item, search) && value.indexOf(item) === -1, ); diff --git a/projects/demo/src/modules/components/mobile-calendar/examples/1/index.ts b/projects/demo/src/modules/components/mobile-calendar/examples/1/index.ts index dd935890f317..2e88efb8a35a 100644 --- a/projects/demo/src/modules/components/mobile-calendar/examples/1/index.ts +++ b/projects/demo/src/modules/components/mobile-calendar/examples/1/index.ts @@ -25,7 +25,7 @@ export class TuiMobileCalendarExample1 { constructor( @Inject(TuiDialogService) dialogService: TuiDialogService, @Inject(Injector) injector: Injector, - @Inject(TUI_MONTHS) private readonly months: ReadonlyArray, + @Inject(TUI_MONTHS) private readonly months: readonly string[], ) { const dataStream = tuiReplayedValueChangesFrom(this.control); const computedInjector = Injector.create({ diff --git a/projects/demo/src/modules/components/mobile-dialog/examples/1/index.ts b/projects/demo/src/modules/components/mobile-dialog/examples/1/index.ts index c4a34e40e060..78e032c6abea 100644 --- a/projects/demo/src/modules/components/mobile-dialog/examples/1/index.ts +++ b/projects/demo/src/modules/components/mobile-dialog/examples/1/index.ts @@ -38,9 +38,7 @@ export class TuiMobileDialogExample1 { }, ) .pipe( - switchMap(index => - this.notifications.showNotification(`Выбрано: ${actions[index]}`), - ), + switchMap(index => this.notifications.show(`Выбрано: ${actions[index]}`)), ) .subscribe(); } diff --git a/projects/demo/src/modules/components/money/money.component.ts b/projects/demo/src/modules/components/money/money.component.ts index e29c98fd60af..4e5e3d6e4989 100644 --- a/projects/demo/src/modules/components/money/money.component.ts +++ b/projects/demo/src/modules/components/money/money.component.ts @@ -74,13 +74,7 @@ export class ExampleTuiMoneyComponent { currency = this.currencyVariants[0]; - readonly valueVariants: ReadonlyArray = [ - -12345.1, - 237, - 1234, - 123123414.0234, - 0, - ]; + readonly valueVariants: readonly number[] = [-12345.1, 237, 1234, 123123414.0234, 0]; value = this.valueVariants[0]; @@ -96,7 +90,7 @@ export class ExampleTuiMoneyComponent { sign = this.signVariants[0]; - readonly precisionVariants: ReadonlyArray = [2, 3, 4]; + readonly precisionVariants: readonly number[] = [2, 3, 4]; precision = this.precisionVariants[0]; diff --git a/projects/demo/src/modules/components/multi-select/examples/1/index.ts b/projects/demo/src/modules/components/multi-select/examples/1/index.ts index ae9285474ec4..dc76d5003cf3 100644 --- a/projects/demo/src/modules/components/multi-select/examples/1/index.ts +++ b/projects/demo/src/modules/components/multi-select/examples/1/index.ts @@ -4,7 +4,7 @@ import {TUI_DEFAULT_MATCHER, tuiPure} from '@taiga-ui/cdk'; import {changeDetection} from '../../../../../change-detection-strategy'; import {encapsulation} from '../../../../../view-encapsulation'; -const ITEMS: ReadonlyArray = [ +const ITEMS: readonly string[] = [ 'Luke Skywalker', 'Leia Organa Solo', 'Darth Vader', @@ -26,7 +26,7 @@ export class TuiMultiSelectExample1 { readonly control = new FormControl([ITEMS[0]]); @tuiPure - filter(search: string | null): ReadonlyArray { + filter(search: string | null): readonly string[] { return ITEMS.filter(item => TUI_DEFAULT_MATCHER(item, search || '')); } } diff --git a/projects/demo/src/modules/components/multi-select/examples/5/index.ts b/projects/demo/src/modules/components/multi-select/examples/5/index.ts index a49de0dd578e..57d5a9ffed27 100644 --- a/projects/demo/src/modules/components/multi-select/examples/5/index.ts +++ b/projects/demo/src/modules/components/multi-select/examples/5/index.ts @@ -10,7 +10,7 @@ import {encapsulation} from '../../../../../view-encapsulation'; encapsulation, }) export class TuiMultiSelectExample5 { - readonly jedi: ReadonlyArray = [ + readonly jedi: readonly string[] = [ 'Luke Skywalker', 'Princess Leia', 'Han Solo', @@ -18,7 +18,7 @@ export class TuiMultiSelectExample5 { 'Yoda', ]; - readonly sith: ReadonlyArray = ['Emperor', 'Darth Vader', 'Darth Maul']; + readonly sith: readonly string[] = ['Emperor', 'Darth Vader', 'Darth Maul']; - value: ReadonlyArray = [this.jedi[0]]; + value: readonly string[] = [this.jedi[0]]; } diff --git a/projects/demo/src/modules/components/multi-select/multi-select.component.ts b/projects/demo/src/modules/components/multi-select/multi-select.component.ts index 0585f781adc8..73bddf03e7c4 100644 --- a/projects/demo/src/modules/components/multi-select/multi-select.component.ts +++ b/projects/demo/src/modules/components/multi-select/multi-select.component.ts @@ -145,7 +145,7 @@ export class ExampleTuiMultiSelectComponent extends AbstractExampleTuiReactiveFi identityMatcher = this.identityMatcherVariants[0]; - readonly maxLengthVariants: ReadonlyArray = [10]; + readonly maxLengthVariants: readonly number[] = [10]; maxLength = null; diff --git a/projects/demo/src/modules/components/primitive-textfield/primitive-textfield.component.ts b/projects/demo/src/modules/components/primitive-textfield/primitive-textfield.component.ts index 2d2499fd5392..4e330fa64fbd 100644 --- a/projects/demo/src/modules/components/primitive-textfield/primitive-textfield.component.ts +++ b/projects/demo/src/modules/components/primitive-textfield/primitive-textfield.component.ts @@ -79,7 +79,7 @@ export class ExampleTuiPrimitiveTextfieldComponent extends AbstractExampleTuiFie postfix = ''; - readonly maxLengthVariants: ReadonlyArray = [10]; + readonly maxLengthVariants: readonly number[] = [10]; maxLength = null; @@ -129,7 +129,7 @@ export class ExampleTuiPrimitiveTextfieldComponent extends AbstractExampleTuiFie size = this.sizeVariants[2]; - readonly hintContentVariants: ReadonlyArray = ['Ivan Ivanov']; + readonly hintContentVariants: readonly string[] = ['Ivan Ivanov']; readonly hintDirectionVariants: ReadonlyArray = [ 'left', diff --git a/projects/demo/src/modules/components/pull-to-refresh/examples/1/index.ts b/projects/demo/src/modules/components/pull-to-refresh/examples/1/index.ts index 330f5ffea2c5..3f6a94e99066 100644 --- a/projects/demo/src/modules/components/pull-to-refresh/examples/1/index.ts +++ b/projects/demo/src/modules/components/pull-to-refresh/examples/1/index.ts @@ -32,7 +32,7 @@ export class TuiPullToRefreshExample1 { constructor(private readonly notifications: TuiNotificationsService) {} onPull() { - this.notifications.showNotification('Загрузка новых данных...').subscribe(); + this.notifications.show('Загрузка новых данных...').subscribe(); } finishLoading() { diff --git a/projects/demo/src/modules/components/pull-to-refresh/examples/2/index.ts b/projects/demo/src/modules/components/pull-to-refresh/examples/2/index.ts index 52bf8f87d4b9..8aece6a004c4 100644 --- a/projects/demo/src/modules/components/pull-to-refresh/examples/2/index.ts +++ b/projects/demo/src/modules/components/pull-to-refresh/examples/2/index.ts @@ -32,7 +32,7 @@ export class TuiPullToRefreshExample2 { constructor(private readonly notifications: TuiNotificationsService) {} onPull() { - this.notifications.showNotification('Загрузка новых данных...').subscribe(); + this.notifications.show('Загрузка новых данных...').subscribe(); } finishLoading() { diff --git a/projects/demo/src/modules/components/range/range.component.ts b/projects/demo/src/modules/components/range/range.component.ts index 945a3c53bb34..eb866ff9ecd8 100644 --- a/projects/demo/src/modules/components/range/range.component.ts +++ b/projects/demo/src/modules/components/range/range.component.ts @@ -46,19 +46,19 @@ export class ExampleTuiRangeComponent { size: TuiSizeS = this.sizeVariants[1]; - minVariants: ReadonlyArray = [0, 1, 5, 7.77]; + minVariants: readonly number[] = [0, 1, 5, 7.77]; min = this.minVariants[0]; - maxVariants: ReadonlyArray = [10, 100, 10000]; + maxVariants: readonly number[] = [10, 100, 10000]; max = this.maxVariants[0]; - segmentsVariants: ReadonlyArray = [0, 1, 5, 13]; + segmentsVariants: readonly number[] = [0, 1, 5, 13]; segments = this.segmentsVariants[0]; - stepsVariants: ReadonlyArray = [0, 4, 10]; + stepsVariants: readonly number[] = [0, 4, 10]; steps = this.stepsVariants[0]; diff --git a/projects/demo/src/modules/components/select/examples/4/index.ts b/projects/demo/src/modules/components/select/examples/4/index.ts index 65c96dcda755..bc45aad6226d 100644 --- a/projects/demo/src/modules/components/select/examples/4/index.ts +++ b/projects/demo/src/modules/components/select/examples/4/index.ts @@ -30,6 +30,6 @@ export class TuiSelectExample4 { addMore(select: TuiSelectComponent) { select.handleOption(select.value); - this.notifications.showNotification('Add more is clicked').subscribe(); + this.notifications.show('Add more is clicked').subscribe(); } } diff --git a/projects/demo/src/modules/components/slider/slider.component.ts b/projects/demo/src/modules/components/slider/slider.component.ts index a31cdc13830c..2ef655716e4a 100644 --- a/projects/demo/src/modules/components/slider/slider.component.ts +++ b/projects/demo/src/modules/components/slider/slider.component.ts @@ -53,13 +53,13 @@ export class ExampleTuiSliderComponent { readonly sizeVariants: ReadonlyArray = ['s', 'm']; size: TuiSizeS = this.sizeVariants[1]; - readonly minVariants: ReadonlyArray = [0, 1, 5, 7.77, 5000]; + readonly minVariants: readonly number[] = [0, 1, 5, 7.77, 5000]; min = this.minVariants[0]; - readonly maxVariants: ReadonlyArray = [10, 100, 10000, 1000000]; + readonly maxVariants: readonly number[] = [10, 100, 10000, 1000000]; max = this.maxVariants[0]; - readonly segmentsVariants: ReadonlyArray = [0, 1, 3, 5, 13]; + readonly segmentsVariants: readonly number[] = [0, 1, 3, 5, 13]; segments = this.segmentsVariants[0]; - readonly stepsVariants: ReadonlyArray = [0, 3, 4, 10]; + readonly stepsVariants: readonly number[] = [0, 3, 4, 10]; steps = this.stepsVariants[0]; readonly pluralizeVariants: ReadonlyArray = [ ['год', 'года', 'лет'], diff --git a/projects/demo/src/modules/components/svg/svg.component.ts b/projects/demo/src/modules/components/svg/svg.component.ts index a3262212c429..5991da277324 100644 --- a/projects/demo/src/modules/components/svg/svg.component.ts +++ b/projects/demo/src/modules/components/svg/svg.component.ts @@ -35,7 +35,7 @@ export class ExampleTuiSvgComponent { LESS: example2Less, }; - readonly iconVariants: ReadonlyArray = [ + readonly iconVariants: readonly string[] = [ 'https://ng-web-apis.github.io/dist/assets/images/web-api.svg', 'tuiIconTooltip', ` = [50, 100, 500]; + readonly maxLengthVariants: readonly number[] = [50, 100, 500]; maxLength = null; - readonly rowsVariants: ReadonlyArray = [8, 15, 30]; + readonly rowsVariants: readonly number[] = [8, 15, 30]; rows: number = this.rowsVariants[0]; diff --git a/projects/demo/src/modules/decorators/required-setter/required-setter-demo.component.ts b/projects/demo/src/modules/decorators/required-setter/required-setter-demo.component.ts index fb5e2ab9ce0e..a02f2217e02d 100644 --- a/projects/demo/src/modules/decorators/required-setter/required-setter-demo.component.ts +++ b/projects/demo/src/modules/decorators/required-setter/required-setter-demo.component.ts @@ -23,5 +23,5 @@ export class ExampleTuiRequiredSetterDemoComponent { ); } - items: ReadonlyArray = []; + items: readonly number[] = []; } diff --git a/projects/demo/src/modules/directives/media/media.component.ts b/projects/demo/src/modules/directives/media/media.component.ts index 466e5db52fe5..a9c1e67bce2a 100644 --- a/projects/demo/src/modules/directives/media/media.component.ts +++ b/projects/demo/src/modules/directives/media/media.component.ts @@ -39,7 +39,7 @@ export class ExampleTuiMediaComponent { readonly exampleImportModule = exampleImportModule; readonly exampleInsertTemplate = exampleInsertTemplate; - readonly volumeVariants: ReadonlyArray = [1, 0.5, 0.25, 0]; + readonly volumeVariants: readonly number[] = [1, 0.5, 0.25, 0]; currentTime = 0; volume = this.volumeVariants[0]; diff --git a/projects/demo/src/modules/markup/colors/colors.constants.ts b/projects/demo/src/modules/markup/colors/colors.constants.ts index 58c133103098..9e06781f4408 100644 --- a/projects/demo/src/modules/markup/colors/colors.constants.ts +++ b/projects/demo/src/modules/markup/colors/colors.constants.ts @@ -233,7 +233,7 @@ export const STATUS_NIGHT: ReadonlyArray = [ }, ]; -export const SUPPORT: ReadonlyArray = [ +export const SUPPORT: readonly string[] = [ '--tui-support-01', '--tui-support-02', '--tui-support-03', diff --git a/projects/demo/src/modules/markup/icons/icons.component.ts b/projects/demo/src/modules/markup/icons/icons.component.ts index 1d018972b3ef..d3b22d3303e2 100644 --- a/projects/demo/src/modules/markup/icons/icons.component.ts +++ b/projects/demo/src/modules/markup/icons/icons.component.ts @@ -51,7 +51,7 @@ export const TUI_ADDITIONAL_ICONS = new InjectionToken( export interface AdditionalIcons { package: string; - icons: ReadonlyArray; + icons: readonly string[]; } @Component({ @@ -61,15 +61,15 @@ export interface AdditionalIcons { changeDetection, }) export class IconsComponent { - icons: ReadonlyArray; + icons: readonly string[]; - assets: ReadonlyArray = []; + assets: readonly string[] = []; - iconsToolbar: ReadonlyArray = []; + iconsToolbar: readonly string[] = []; - iconsLarge: ReadonlyArray = []; + iconsLarge: readonly string[] = []; - logos: ReadonlyArray = []; + logos: readonly string[] = []; search = ''; @@ -125,7 +125,7 @@ export class IconsComponent { this.clipboardCopyService.copyToClipboard(name); this.notifications - .showNotification(`Имя ${name} скопировано`, { + .show(`Имя ${name} скопировано`, { status: TuiNotification.Success, }) .subscribe(); diff --git a/projects/demo/src/modules/pipes/format-number/format-number.component.ts b/projects/demo/src/modules/pipes/format-number/format-number.component.ts index 0210dae5fe66..a0ad4a102eb3 100644 --- a/projects/demo/src/modules/pipes/format-number/format-number.component.ts +++ b/projects/demo/src/modules/pipes/format-number/format-number.component.ts @@ -28,6 +28,6 @@ export class ExampleTuiFormatNumberComponent { readonly decimalLimitVariants = [0, 2, 4]; decimalLimit = null; - readonly decimalSeparatorVariants: ReadonlyArray = [',', '.', '/']; + readonly decimalSeparatorVariants: readonly string[] = [',', '.', '/']; decimalSeparator = this.decimalSeparatorVariants[0]; } diff --git a/projects/demo/src/modules/services/notifications/examples/1/index.ts b/projects/demo/src/modules/services/notifications/examples/1/index.ts index ac14a782e89d..603f576e3490 100644 --- a/projects/demo/src/modules/services/notifications/examples/1/index.ts +++ b/projects/demo/src/modules/services/notifications/examples/1/index.ts @@ -17,7 +17,7 @@ export class TuiNotificationsExampleComponent1 { showNotification() { this.notificationsService - .showNotification('A simple option', { + .show('A simple option', { label: 'With a heading!', }) .subscribe(); diff --git a/projects/demo/src/modules/services/notifications/examples/2/index.ts b/projects/demo/src/modules/services/notifications/examples/2/index.ts index ae06d47a1dd9..5215a3dd3c1f 100644 --- a/projects/demo/src/modules/services/notifications/examples/2/index.ts +++ b/projects/demo/src/modules/services/notifications/examples/2/index.ts @@ -29,7 +29,7 @@ export class TuiNotificationsExampleComponent2 { showWithdrawAlert() { this.notificationsService - .showNotification(this.withdrawTemplate || '', { + .show(this.withdrawTemplate || '', { label: 'A template sample', status: TuiNotification.Warning, autoClose: false, @@ -39,7 +39,7 @@ export class TuiNotificationsExampleComponent2 { showDepositAlert() { this.notificationsService - .showNotification(this.depositTemplate || '', { + .show(this.depositTemplate || '', { label: 'A template sample', status: TuiNotification.Success, autoClose: false, diff --git a/projects/demo/src/modules/services/notifications/examples/3/index.ts b/projects/demo/src/modules/services/notifications/examples/3/index.ts index a4d04bf33676..f8919d2a93d7 100644 --- a/projects/demo/src/modules/services/notifications/examples/3/index.ts +++ b/projects/demo/src/modules/services/notifications/examples/3/index.ts @@ -23,7 +23,7 @@ export class TuiNotificationsExampleComponent3 { @Inject(Injector) private injector: Injector, ) { this.notification = notificationsService - .showNotification( + .show( new PolymorpheusComponent(AlertExampleComponent, this.injector), { label: 'Question', @@ -33,7 +33,7 @@ export class TuiNotificationsExampleComponent3 { ) .pipe( switchMap(response => - notificationsService.showNotification('Got a value — ' + response, { + notificationsService.show('Got a value — ' + response, { label: 'Information', }), ), diff --git a/projects/demo/src/modules/services/notifications/examples/4/index.ts b/projects/demo/src/modules/services/notifications/examples/4/index.ts index f1b6cdc17997..c86b808906d3 100644 --- a/projects/demo/src/modules/services/notifications/examples/4/index.ts +++ b/projects/demo/src/modules/services/notifications/examples/4/index.ts @@ -23,7 +23,7 @@ export class TuiNotificationsExampleComponent4 { @Inject(Injector) private injector: Injector, ) { this.notification = notificationsService - .showNotification( + .show( new PolymorpheusComponent(AlertExampleWithDataComponent, this.injector), { label: @@ -35,7 +35,7 @@ export class TuiNotificationsExampleComponent4 { ) .pipe( switchMap(response => - notificationsService.showNotification('Got a value — ' + response, { + notificationsService.show('Got a value — ' + response, { label: 'Information', }), ), diff --git a/projects/demo/src/modules/services/notifications/notifications.component.ts b/projects/demo/src/modules/services/notifications/notifications.component.ts index 8d60708ff4dc..ad8844eedfd9 100644 --- a/projects/demo/src/modules/services/notifications/notifications.component.ts +++ b/projects/demo/src/modules/services/notifications/notifications.component.ts @@ -108,7 +108,7 @@ export class ExampleTuiNotificationsComponent { showNotification() { this.notificationsService - .showNotification(this.selectedContent, { + .show(this.selectedContent, { label: this.label, data: this.data, status: this.status, @@ -117,7 +117,7 @@ export class ExampleTuiNotificationsComponent { }) .pipe( switchMap(response => - this.notificationsService.showNotification(response, { + this.notificationsService.show(response, { label: 'Notification responded with:', }), ), diff --git a/projects/demo/src/modules/services/table-bar/examples/1/index.ts b/projects/demo/src/modules/services/table-bar/examples/1/index.ts index fe0265d46636..0c0dc3192d39 100644 --- a/projects/demo/src/modules/services/table-bar/examples/1/index.ts +++ b/projects/demo/src/modules/services/table-bar/examples/1/index.ts @@ -27,7 +27,7 @@ export class TuiTableBarExampleComponent1 { this.subscription.unsubscribe(); this.subscription = this.tableBarsService - .showTableBar(this.tableBarTemplate || '', { + .open(this.tableBarTemplate || '', { hasCloseButton: true, }) .subscribe(); diff --git a/projects/demo/src/modules/services/table-bar/table-bar.component.ts b/projects/demo/src/modules/services/table-bar/table-bar.component.ts index 909b4ec6e647..80e438ad46be 100644 --- a/projects/demo/src/modules/services/table-bar/table-bar.component.ts +++ b/projects/demo/src/modules/services/table-bar/table-bar.component.ts @@ -63,7 +63,7 @@ export class ExampleTuiTableBarComponent implements OnDestroy { this.subscription.unsubscribe(); this.subscription = this.tableBarsService - .showTableBar(this.tableBarTemplate || '', { + .open(this.tableBarTemplate || '', { adaptive: this.adaptive, mode: this.mode, hasCloseButton: this.hasCloseButton, diff --git a/projects/demo/src/modules/tokens/css-vars.ts b/projects/demo/src/modules/tokens/css-vars.ts index 4b091bfb54fa..3efdb369926f 100644 --- a/projects/demo/src/modules/tokens/css-vars.ts +++ b/projects/demo/src/modules/tokens/css-vars.ts @@ -1,6 +1,6 @@ import {InjectionToken} from '@angular/core'; -export const CSS_VARS = new InjectionToken>( +export const CSS_VARS = new InjectionToken( 'CSS vars list for customization', { factory: () => [], diff --git a/projects/demo/src/polyfills.ts b/projects/demo/src/polyfills.ts index 34660383d50d..4e24ded0d4c4 100644 --- a/projects/demo/src/polyfills.ts +++ b/projects/demo/src/polyfills.ts @@ -67,3 +67,5 @@ import 'zone.js/dist/zone'; // Included with Angular CLI. import 'prismjs'; import 'prismjs/components/prism-typescript.min.js'; + +import 'intersection-observer'; diff --git a/projects/demo/static.paths.ts b/projects/demo/static.paths.ts deleted file mode 100644 index c0cd514c0868..000000000000 --- a/projects/demo/static.paths.ts +++ /dev/null @@ -1 +0,0 @@ -export const PRERENDERED_ROUTES: ReadonlyArray = []; diff --git a/projects/demo/tsconfig.server.json b/projects/demo/tsconfig.server.json index 877c14932f68..eb9ea03b9902 100644 --- a/projects/demo/tsconfig.server.json +++ b/projects/demo/tsconfig.server.json @@ -1,11 +1,11 @@ { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig", "compilerOptions": { + "outDir": "./dist/out-tsc-server", "module": "commonjs" }, + "files": ["src/main.server.ts", "server.ts"], "angularCompilerOptions": { - "entryModule": "src/modules/app/app.server.module#AppServerModule" - }, - "files": ["src/main.server.ts"], - "include": ["projects/demo/src/**/*.d.ts"] + "entryModule": "./src/app/app.server.module#AppServerModule" + } } diff --git a/projects/demo/tsconfig.ssr.json b/projects/demo/tsconfig.ssr.json deleted file mode 100644 index dc3617f5010e..000000000000 --- a/projects/demo/tsconfig.ssr.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/ssr", - "module": "commonjs" - }, - "include": ["src/typings.d.ts", "server.ts", "prerender.ts"] -} diff --git a/projects/icons/src/icons/all.ts b/projects/icons/all.ts similarity index 80% rename from projects/icons/src/icons/all.ts rename to projects/icons/all.ts index 0ea065296039..e13e266fa006 100644 --- a/projects/icons/src/icons/all.ts +++ b/projects/icons/all.ts @@ -18,12 +18,20 @@ var tuiIconArrowLeftLgLarge = ""; +var tuiIconArrowLongDownLeft = ""; + +var tuiIconArrowLongDownRight = ""; + var tuiIconArrowLongLeft = ""; var tuiIconArrowLongRight = ""; var tuiIconArrowLongUp = ""; +var tuiIconArrowLongUpLeft = ""; + +var tuiIconArrowLongUpRight = ""; + var tuiIconArrowRight = ""; var tuiIconArrowRightLarge = ""; @@ -310,6 +318,64 @@ var tuiIconToggleOn = ""; +var tuiIconToolbarAttach = ""; + +var tuiIconToolbarBold = ""; + +var tuiIconToolbarClearFormat = ""; + +var tuiIconToolbarCode = ""; + +var tuiIconToolbarColor = ""; + +var tuiIconToolbarFont = ""; + +var tuiIconToolbarFormat = ""; + +var tuiIconToolbarHilite = ""; + +var tuiIconToolbarHr = ""; + +var tuiIconToolbarImg = ""; + +var tuiIconToolbarIndent = ""; + +var tuiIconToolbarItalic = ""; + +var tuiIconToolbarJustifyCenter = ""; + +var tuiIconToolbarJustifyFull = ""; + +var tuiIconToolbarJustifyLeft = ""; + +var tuiIconToolbarJustifyRight = ""; + +var tuiIconToolbarLink = ""; + +var tuiIconToolbarOL = ""; + +var tuiIconToolbarOutdent = ""; + +var tuiIconToolbarQuote = ""; + +var tuiIconToolbarRedo = ""; + +var tuiIconToolbarStrikeThrough = ""; + +var tuiIconToolbarSubscript = ""; + +var tuiIconToolbarSuperscript = ""; + +var tuiIconToolbarTeX = ""; + +var tuiIconToolbarTransparent = ""; + +var tuiIconToolbarUL = ""; + +var tuiIconToolbarUnderline = ""; + +var tuiIconToolbarUndo = ""; + var tuiIconTooltip = ""; var tuiIconTooltipLarge = ""; @@ -342,4 +408,4 @@ var tuiIconWifiOffLarge = ""; -export { tuiIcon2Info, tuiIconAlertCircle2Large, tuiIconAlertCircleLarge, tuiIconArrowDown, tuiIconArrowDown2Large, tuiIconArrowDownLarge, tuiIconArrowLeft, tuiIconArrowLeftLarge, tuiIconArrowLeftLgLarge, tuiIconArrowLongDown, tuiIconArrowLongLeft, tuiIconArrowLongRight, tuiIconArrowLongUp, tuiIconArrowRight, tuiIconArrowRightLarge, tuiIconArrowRightLgLarge, tuiIconArrowUp, tuiIconArrowUp2Large, tuiIconArrowUpLarge, tuiIconAttach, tuiIconAttachLarge, tuiIconAttention, tuiIconBackCircleLarge, tuiIconBell, tuiIconBellLarge, tuiIconBookmark, tuiIconBookmarkLarge, tuiIconCalendar, tuiIconCalendarLarge, tuiIconCall, tuiIconCallIn, tuiIconCallInLarge, tuiIconCallLarge, tuiIconCallOut, tuiIconCallOutLarge, tuiIconCallTransferLarge, tuiIconCameraLarge, tuiIconCancel, tuiIconCancelCircleLarge, tuiIconCard, tuiIconCardsLarge, tuiIconChartBar, tuiIconChartLarge, tuiIconChartLineLarge, tuiIconCheck, tuiIconCheckCircle, tuiIconCheckCircle2Large, tuiIconCheckCircleLarge, tuiIconCheckLarge, tuiIconCheckList, tuiIconCloseCircleLarge, tuiIconCloseLarge, tuiIconCloseLgLarge, tuiIconCloud, tuiIconCode, tuiIconCodeLarge, tuiIconCollapse, tuiIconComment, tuiIconCommentLarge, tuiIconCompanyLarge, tuiIconCopy, tuiIconCopyLarge, tuiIconDeleteLarge, tuiIconDesktopLarge, tuiIconDislikeLarge, tuiIconDone, tuiIconDownload, tuiIconDownloadLarge, tuiIconDraft, tuiIconDragLarge, tuiIconEdit, tuiIconEdit2Large, tuiIconExpand, tuiIconExternal, tuiIconExternalLarge, tuiIconEyeClosed, tuiIconEyeOpen, tuiIconFile, tuiIconFileLarge, tuiIconFilter, tuiIconFilterLarge, tuiIconFlag, tuiIconFlagLarge, tuiIconFolder, tuiIconFolderLarge, tuiIconFrameLarge, tuiIconGeoLarge, tuiIconHeart, tuiIconHeartLarge, tuiIconHelpCircleLarge, tuiIconHideLarge, tuiIconImgLarge, tuiIconInfo, tuiIconInfoCircleLarge, tuiIconLikeLarge, tuiIconLink, tuiIconLinkedLarge, tuiIconLock, tuiIconLockLarge, tuiIconLockOpenLarge, tuiIconLoginLarge, tuiIconLogoutLarge, tuiIconMail, tuiIconMailLarge, tuiIconMenuLarge, tuiIconMicLarge, tuiIconMicOffLarge, tuiIconMinus, tuiIconMinus2, tuiIconMinusLarge, tuiIconMobile, tuiIconMobileLarge, tuiIconMoreHorLarge, tuiIconMoreVer, tuiIconMoreVertLarge, tuiIconMusicLarge, tuiIconNavBack, tuiIconPause2, tuiIconPause2Large, tuiIconPicture, tuiIconPiechartLarge, tuiIconPin, tuiIconPlay2, tuiIconPlay2Large, tuiIconPlus, tuiIconPlusCircleLarge, tuiIconPlusLarge, tuiIconPrintLarge, tuiIconRedo, tuiIconRefresh, tuiIconRenewLarge, tuiIconRotate, tuiIconSearch, tuiIconSearchLarge, tuiIconSettings, tuiIconSettings2Large, tuiIconShowLarge, tuiIconSortDown, tuiIconSortUp, tuiIconSound, tuiIconSoundLarge, tuiIconSoundOff, tuiIconSoundOffLarge, tuiIconStar, tuiIconStarLarge, tuiIconStop, tuiIconStopLarge, tuiIconStructureLarge, tuiIconSubitem, tuiIconSublevelLarge, tuiIconTime, tuiIconTimeLarge, tuiIconToggleOff, tuiIconToggleOffLarge, tuiIconToggleOn, tuiIconToggleOnLarge, tuiIconTooltip, tuiIconTooltipLarge, tuiIconTrash, tuiIconTrashLarge, tuiIconUndo, tuiIconUndoLarge, tuiIconUpload, tuiIconUploadLarge, tuiIconUser, tuiIconUsers, tuiIconVideo, tuiIconVideoLarge, tuiIconViewListLarge, tuiIconWarningLarge, tuiIconWifiOffLarge, tuiIconWifiOnLarge }; +export { tuiIcon2Info, tuiIconAlertCircle2Large, tuiIconAlertCircleLarge, tuiIconArrowDown, tuiIconArrowDown2Large, tuiIconArrowDownLarge, tuiIconArrowLeft, tuiIconArrowLeftLarge, tuiIconArrowLeftLgLarge, tuiIconArrowLongDown, tuiIconArrowLongDownLeft, tuiIconArrowLongDownRight, tuiIconArrowLongLeft, tuiIconArrowLongRight, tuiIconArrowLongUp, tuiIconArrowLongUpLeft, tuiIconArrowLongUpRight, tuiIconArrowRight, tuiIconArrowRightLarge, tuiIconArrowRightLgLarge, tuiIconArrowUp, tuiIconArrowUp2Large, tuiIconArrowUpLarge, tuiIconAttach, tuiIconAttachLarge, tuiIconAttention, tuiIconBackCircleLarge, tuiIconBell, tuiIconBellLarge, tuiIconBookmark, tuiIconBookmarkLarge, tuiIconCalendar, tuiIconCalendarLarge, tuiIconCall, tuiIconCallIn, tuiIconCallInLarge, tuiIconCallLarge, tuiIconCallOut, tuiIconCallOutLarge, tuiIconCallTransferLarge, tuiIconCameraLarge, tuiIconCancel, tuiIconCancelCircleLarge, tuiIconCard, tuiIconCardsLarge, tuiIconChartBar, tuiIconChartLarge, tuiIconChartLineLarge, tuiIconCheck, tuiIconCheckCircle, tuiIconCheckCircle2Large, tuiIconCheckCircleLarge, tuiIconCheckLarge, tuiIconCheckList, tuiIconCloseCircleLarge, tuiIconCloseLarge, tuiIconCloseLgLarge, tuiIconCloud, tuiIconCode, tuiIconCodeLarge, tuiIconCollapse, tuiIconComment, tuiIconCommentLarge, tuiIconCompanyLarge, tuiIconCopy, tuiIconCopyLarge, tuiIconDeleteLarge, tuiIconDesktopLarge, tuiIconDislikeLarge, tuiIconDone, tuiIconDownload, tuiIconDownloadLarge, tuiIconDraft, tuiIconDragLarge, tuiIconEdit, tuiIconEdit2Large, tuiIconExpand, tuiIconExternal, tuiIconExternalLarge, tuiIconEyeClosed, tuiIconEyeOpen, tuiIconFile, tuiIconFileLarge, tuiIconFilter, tuiIconFilterLarge, tuiIconFlag, tuiIconFlagLarge, tuiIconFolder, tuiIconFolderLarge, tuiIconFrameLarge, tuiIconGeoLarge, tuiIconHeart, tuiIconHeartLarge, tuiIconHelpCircleLarge, tuiIconHideLarge, tuiIconImgLarge, tuiIconInfo, tuiIconInfoCircleLarge, tuiIconLikeLarge, tuiIconLink, tuiIconLinkedLarge, tuiIconLock, tuiIconLockLarge, tuiIconLockOpenLarge, tuiIconLoginLarge, tuiIconLogoutLarge, tuiIconMail, tuiIconMailLarge, tuiIconMenuLarge, tuiIconMicLarge, tuiIconMicOffLarge, tuiIconMinus, tuiIconMinus2, tuiIconMinusLarge, tuiIconMobile, tuiIconMobileLarge, tuiIconMoreHorLarge, tuiIconMoreVer, tuiIconMoreVertLarge, tuiIconMusicLarge, tuiIconNavBack, tuiIconPause2, tuiIconPause2Large, tuiIconPicture, tuiIconPiechartLarge, tuiIconPin, tuiIconPlay2, tuiIconPlay2Large, tuiIconPlus, tuiIconPlusCircleLarge, tuiIconPlusLarge, tuiIconPrintLarge, tuiIconRedo, tuiIconRefresh, tuiIconRenewLarge, tuiIconRotate, tuiIconSearch, tuiIconSearchLarge, tuiIconSettings, tuiIconSettings2Large, tuiIconShowLarge, tuiIconSortDown, tuiIconSortUp, tuiIconSound, tuiIconSoundLarge, tuiIconSoundOff, tuiIconSoundOffLarge, tuiIconStar, tuiIconStarLarge, tuiIconStop, tuiIconStopLarge, tuiIconStructureLarge, tuiIconSubitem, tuiIconSublevelLarge, tuiIconTime, tuiIconTimeLarge, tuiIconToggleOff, tuiIconToggleOffLarge, tuiIconToggleOn, tuiIconToggleOnLarge, tuiIconToolbarAttach, tuiIconToolbarBold, tuiIconToolbarClearFormat, tuiIconToolbarCode, tuiIconToolbarColor, tuiIconToolbarFont, tuiIconToolbarFormat, tuiIconToolbarHilite, tuiIconToolbarHr, tuiIconToolbarImg, tuiIconToolbarIndent, tuiIconToolbarItalic, tuiIconToolbarJustifyCenter, tuiIconToolbarJustifyFull, tuiIconToolbarJustifyLeft, tuiIconToolbarJustifyRight, tuiIconToolbarLink, tuiIconToolbarOL, tuiIconToolbarOutdent, tuiIconToolbarQuote, tuiIconToolbarRedo, tuiIconToolbarStrikeThrough, tuiIconToolbarSubscript, tuiIconToolbarSuperscript, tuiIconToolbarTeX, tuiIconToolbarTransparent, tuiIconToolbarUL, tuiIconToolbarUnderline, tuiIconToolbarUndo, tuiIconTooltip, tuiIconTooltipLarge, tuiIconTrash, tuiIconTrashLarge, tuiIconUndo, tuiIconUndoLarge, tuiIconUpload, tuiIconUploadLarge, tuiIconUser, tuiIconUsers, tuiIconVideo, tuiIconVideoLarge, tuiIconViewListLarge, tuiIconWarningLarge, tuiIconWifiOffLarge, tuiIconWifiOnLarge }; diff --git a/projects/icons/src/constants/icons.ts b/projects/icons/constants/icons.ts similarity index 98% rename from projects/icons/src/constants/icons.ts rename to projects/icons/constants/icons.ts index c8c326c1250a..6aca37e3cc29 100644 --- a/projects/icons/src/constants/icons.ts +++ b/projects/icons/constants/icons.ts @@ -28,7 +28,7 @@ import { tuiIconToggleOffLarge, tuiIconTooltip, tuiIconTrashLarge, -} from '../icons/all'; +} from '../all'; export const tuiCoreIcons = { tuiIconArrowRight, diff --git a/projects/icons/ng-package.json b/projects/icons/ng-package.json index f62b94fb1f88..14ba68779e0b 100644 --- a/projects/icons/ng-package.json +++ b/projects/icons/ng-package.json @@ -1,7 +1,8 @@ { "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/icons", + "assets": ["src"], "lib": { - "entryFile": "src/public-api.ts" + "entryFile": "./public-api.ts" } } diff --git a/projects/icons/src/public-api.ts b/projects/icons/public-api.ts similarity index 74% rename from projects/icons/src/public-api.ts rename to projects/icons/public-api.ts index 73bde9eddd55..d259890383b8 100644 --- a/projects/icons/src/public-api.ts +++ b/projects/icons/public-api.ts @@ -1,5 +1,5 @@ /** * Public API Surface of @taiga-ui/icons */ -export * from './icons/all'; +export * from './all'; export * from './constants/icons'; diff --git a/scripts/compileIcons.ts b/projects/icons/scripts/compile-icons.ts similarity index 81% rename from scripts/compileIcons.ts rename to projects/icons/scripts/compile-icons.ts index ca7bc7f252b7..92b8110baf41 100644 --- a/scripts/compileIcons.ts +++ b/projects/icons/scripts/compile-icons.ts @@ -1,13 +1,11 @@ import {readdirSync, unlinkSync, writeFileSync} from 'fs'; import {rollup} from 'rollup'; -import {rollupSvgo} from './rollupSvgo'; +import {rollupSvgo} from './rollup-svgo'; const typescript = require('rollup-plugin-typescript2'); - -const projectPath = process.argv[2]; -const hasSrc = projectPath.includes('icons'); -const allToCompilePath = `${projectPath}${hasSrc ? '/src' : ''}/icons/all-to-compile.ts`; -const iconsSrc = `${projectPath}${hasSrc ? '/src' : ''}/icons/src/`; +const projectPath = 'projects/icons'; +const allToCompilePath = `${projectPath}/all-to-compile.ts`; +const iconsSrc = `${projectPath}/src/`; const inputOptions = { input: allToCompilePath, @@ -39,7 +37,7 @@ async function build(): Promise { await bundle.write({ format: 'es', - file: projectPath + '/src/icons/all.ts', + file: projectPath + '/all.ts', }); deleteAllToCompileFile(); @@ -56,7 +54,7 @@ function prepareAllToCompileFile() { }.svg';\n` ); }, '')} - + export { ${icons.reduce((acc, el) => { return acc + `${el.split('.')[0]},\n`; diff --git a/projects/icons/scripts/copy-icons.js b/projects/icons/scripts/copy-icons.js deleted file mode 100644 index 30357620f94b..000000000000 --- a/projects/icons/scripts/copy-icons.js +++ /dev/null @@ -1,4 +0,0 @@ -const fs = require('fs-extra'); -const {resolve} = require('path'); - -fs.copy(resolve(__dirname, '..', 'src/icons/src'), './dist/icons/src'); diff --git a/projects/icons/scripts/process-icons.js b/projects/icons/scripts/process-icons.js new file mode 100644 index 000000000000..629be2a4e0e8 --- /dev/null +++ b/projects/icons/scripts/process-icons.js @@ -0,0 +1,68 @@ +const fs = require('fs'); +const glob = require('glob'); +const WIDTH_SEARCH = 'width="'; +const HEIGHT_SEARCH = 'height="'; +const START = ' { + files.forEach(file => { + const src = String(fs.readFileSync(file)); + const wrapped = wrapIcon(src, file.replace('.svg', '')); + const final = + typeof wrapped === 'string' + ? wrapped.replace('${wrapped.src}`; + + fs.writeFileSync(file, final); + }); + }); +} + +function wrapIcon(source, name) { + const indexOfSTART = source.indexOf(START); + const src = source.substring(indexOfSTART); + const attibutes = src.substring(indexOfSTART, src.indexOf('>', indexOfSTART)); + + if ( + !attibutes || + !attibutes.includes(WIDTH_SEARCH) || + !attibutes.includes(HEIGHT_SEARCH) + ) { + return ''; + } + + const indexOfWidth = attibutes.indexOf(WIDTH_SEARCH); + const indexOfHeight = attibutes.indexOf(HEIGHT_SEARCH); + const widthOffset = indexOfWidth + WIDTH_SEARCH.length; + const heightOffset = indexOfHeight + HEIGHT_SEARCH.length; + const widthString = attibutes.substring( + widthOffset, + attibutes.indexOf('"', widthOffset), + ); + const heightString = attibutes.substring( + heightOffset, + attibutes.indexOf('"', heightOffset), + ); + + if ( + !heightString || + !widthString || + widthString.includes('%') || + heightString.includes('%') + ) { + return src.replace(START, `${src}`, + }; +} diff --git a/scripts/rollup-pluginutils.d.ts b/projects/icons/scripts/rollup-pluginutils.d.ts similarity index 100% rename from scripts/rollup-pluginutils.d.ts rename to projects/icons/scripts/rollup-pluginutils.d.ts diff --git a/scripts/rollupSvgo.ts b/projects/icons/scripts/rollup-svgo.ts similarity index 100% rename from scripts/rollupSvgo.ts rename to projects/icons/scripts/rollup-svgo.ts diff --git a/projects/icons/src/icons/src/AD.png b/projects/icons/src/AD.png similarity index 100% rename from projects/icons/src/icons/src/AD.png rename to projects/icons/src/AD.png diff --git a/projects/icons/src/icons/src/AE.png b/projects/icons/src/AE.png similarity index 100% rename from projects/icons/src/icons/src/AE.png rename to projects/icons/src/AE.png diff --git a/projects/icons/src/icons/src/AF.png b/projects/icons/src/AF.png similarity index 100% rename from projects/icons/src/icons/src/AF.png rename to projects/icons/src/AF.png diff --git a/projects/icons/src/icons/src/AG.png b/projects/icons/src/AG.png similarity index 100% rename from projects/icons/src/icons/src/AG.png rename to projects/icons/src/AG.png diff --git a/projects/icons/src/icons/src/AI.png b/projects/icons/src/AI.png similarity index 100% rename from projects/icons/src/icons/src/AI.png rename to projects/icons/src/AI.png diff --git a/projects/icons/src/icons/src/AL.png b/projects/icons/src/AL.png similarity index 100% rename from projects/icons/src/icons/src/AL.png rename to projects/icons/src/AL.png diff --git a/projects/icons/src/icons/src/AM.png b/projects/icons/src/AM.png similarity index 100% rename from projects/icons/src/icons/src/AM.png rename to projects/icons/src/AM.png diff --git a/projects/icons/src/icons/src/AN.png b/projects/icons/src/AN.png similarity index 100% rename from projects/icons/src/icons/src/AN.png rename to projects/icons/src/AN.png diff --git a/projects/icons/src/icons/src/AO.png b/projects/icons/src/AO.png similarity index 100% rename from projects/icons/src/icons/src/AO.png rename to projects/icons/src/AO.png diff --git a/projects/icons/src/icons/src/AR.png b/projects/icons/src/AR.png similarity index 100% rename from projects/icons/src/icons/src/AR.png rename to projects/icons/src/AR.png diff --git a/projects/icons/src/AT.png b/projects/icons/src/AT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/AU.png b/projects/icons/src/AU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/AW.png b/projects/icons/src/AW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/AX.png b/projects/icons/src/AX.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/AZ.png b/projects/icons/src/AZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BA.png b/projects/icons/src/BA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BB.png b/projects/icons/src/BB.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BD.png b/projects/icons/src/BD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BE.png b/projects/icons/src/BE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BF.png b/projects/icons/src/BF.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BG.png b/projects/icons/src/BG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BH.png b/projects/icons/src/BH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BI.png b/projects/icons/src/BI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BJ.png b/projects/icons/src/BJ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BM.png b/projects/icons/src/BM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BN.png b/projects/icons/src/BN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BO.png b/projects/icons/src/BO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BR.png b/projects/icons/src/BR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BS.png b/projects/icons/src/BS.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BT.png b/projects/icons/src/BT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BW.png b/projects/icons/src/BW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BY.png b/projects/icons/src/BY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/BZ.png b/projects/icons/src/BZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CA.png b/projects/icons/src/CA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CD.png b/projects/icons/src/CD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CF.png b/projects/icons/src/CF.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CG.png b/projects/icons/src/CG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CH.png b/projects/icons/src/CH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CI.png b/projects/icons/src/CI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CL.png b/projects/icons/src/CL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CM.png b/projects/icons/src/CM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CN.png b/projects/icons/src/CN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CO.png b/projects/icons/src/CO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CR.png b/projects/icons/src/CR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CU.png b/projects/icons/src/CU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CV.png b/projects/icons/src/CV.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CY.png b/projects/icons/src/CY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/CZ.png b/projects/icons/src/CZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DE.png b/projects/icons/src/DE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DJ.png b/projects/icons/src/DJ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DK.png b/projects/icons/src/DK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DM.png b/projects/icons/src/DM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DO.png b/projects/icons/src/DO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/DZ.png b/projects/icons/src/DZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/EC.png b/projects/icons/src/EC.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/EE.png b/projects/icons/src/EE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/EG.png b/projects/icons/src/EG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ER.png b/projects/icons/src/ER.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ES.png b/projects/icons/src/ES.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ET.png b/projects/icons/src/ET.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/FI.png b/projects/icons/src/FI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/FJ.png b/projects/icons/src/FJ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/FK.png b/projects/icons/src/FK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/FM.png b/projects/icons/src/FM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/FR.png b/projects/icons/src/FR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GA.png b/projects/icons/src/GA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GD.png b/projects/icons/src/GD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GE.png b/projects/icons/src/GE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GG.png b/projects/icons/src/GG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GH.png b/projects/icons/src/GH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GI.png b/projects/icons/src/GI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GL.png b/projects/icons/src/GL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GM.png b/projects/icons/src/GM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GN.png b/projects/icons/src/GN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GQ.png b/projects/icons/src/GQ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GR.png b/projects/icons/src/GR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GT.png b/projects/icons/src/GT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GW.png b/projects/icons/src/GW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/GY.png b/projects/icons/src/GY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/HK.png b/projects/icons/src/HK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/HN.png b/projects/icons/src/HN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/HR.png b/projects/icons/src/HR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/HT.png b/projects/icons/src/HT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/HU.png b/projects/icons/src/HU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ID.png b/projects/icons/src/ID.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IE.png b/projects/icons/src/IE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IL.png b/projects/icons/src/IL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IM.png b/projects/icons/src/IM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IN.png b/projects/icons/src/IN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IQ.png b/projects/icons/src/IQ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IR.png b/projects/icons/src/IR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IS.png b/projects/icons/src/IS.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/IT.png b/projects/icons/src/IT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/JE.png b/projects/icons/src/JE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/JM.png b/projects/icons/src/JM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/JO.png b/projects/icons/src/JO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/JP.png b/projects/icons/src/JP.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KE.png b/projects/icons/src/KE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KG.png b/projects/icons/src/KG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KH.png b/projects/icons/src/KH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KM.png b/projects/icons/src/KM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KN.png b/projects/icons/src/KN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KP.png b/projects/icons/src/KP.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KR.png b/projects/icons/src/KR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KW.png b/projects/icons/src/KW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KY.png b/projects/icons/src/KY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/KZ.png b/projects/icons/src/KZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LA.png b/projects/icons/src/LA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LB.png b/projects/icons/src/LB.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LC.png b/projects/icons/src/LC.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LI.png b/projects/icons/src/LI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LK.png b/projects/icons/src/LK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LR.png b/projects/icons/src/LR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LS.png b/projects/icons/src/LS.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LT.png b/projects/icons/src/LT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LU.png b/projects/icons/src/LU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LV.png b/projects/icons/src/LV.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/LY.png b/projects/icons/src/LY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MA.png b/projects/icons/src/MA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MC.png b/projects/icons/src/MC.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MD.png b/projects/icons/src/MD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ME.png b/projects/icons/src/ME.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MG.png b/projects/icons/src/MG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MK.png b/projects/icons/src/MK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ML.png b/projects/icons/src/ML.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MM.png b/projects/icons/src/MM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MN.png b/projects/icons/src/MN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MO.png b/projects/icons/src/MO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MR.png b/projects/icons/src/MR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MS.png b/projects/icons/src/MS.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MT.png b/projects/icons/src/MT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MU.png b/projects/icons/src/MU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MV.png b/projects/icons/src/MV.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MW.png b/projects/icons/src/MW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MX.png b/projects/icons/src/MX.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MY.png b/projects/icons/src/MY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/MZ.png b/projects/icons/src/MZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NA.png b/projects/icons/src/NA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NE.png b/projects/icons/src/NE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NG.png b/projects/icons/src/NG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NI.png b/projects/icons/src/NI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NL.png b/projects/icons/src/NL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NO.png b/projects/icons/src/NO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NP.png b/projects/icons/src/NP.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/NZ.png b/projects/icons/src/NZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/OM.png b/projects/icons/src/OM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PA.png b/projects/icons/src/PA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PE.png b/projects/icons/src/PE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PF.png b/projects/icons/src/PF.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PG.png b/projects/icons/src/PG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PH.png b/projects/icons/src/PH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PK.png b/projects/icons/src/PK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PL.png b/projects/icons/src/PL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PR.png b/projects/icons/src/PR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PT.png b/projects/icons/src/PT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PW.png b/projects/icons/src/PW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/PY.png b/projects/icons/src/PY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/QA.png b/projects/icons/src/QA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/RO.png b/projects/icons/src/RO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/RS.png b/projects/icons/src/RS.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/RU.png b/projects/icons/src/RU.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/RW.png b/projects/icons/src/RW.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SA.png b/projects/icons/src/SA.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SB.png b/projects/icons/src/SB.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SC.png b/projects/icons/src/SC.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SD.png b/projects/icons/src/SD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SE.png b/projects/icons/src/SE.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SG.png b/projects/icons/src/SG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SH.png b/projects/icons/src/SH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SI.png b/projects/icons/src/SI.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SK.png b/projects/icons/src/SK.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SL.png b/projects/icons/src/SL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SM.png b/projects/icons/src/SM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SN.png b/projects/icons/src/SN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SO.png b/projects/icons/src/SO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SR.png b/projects/icons/src/SR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/ST.png b/projects/icons/src/ST.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SV.png b/projects/icons/src/SV.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SY.png b/projects/icons/src/SY.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/SZ.png b/projects/icons/src/SZ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TC.png b/projects/icons/src/TC.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TD.png b/projects/icons/src/TD.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TG.png b/projects/icons/src/TG.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TH.png b/projects/icons/src/TH.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TJ.png b/projects/icons/src/TJ.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TL.png b/projects/icons/src/TL.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TM.png b/projects/icons/src/TM.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TN.png b/projects/icons/src/TN.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TO.png b/projects/icons/src/TO.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TR.png b/projects/icons/src/TR.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/TT.png b/projects/icons/src/TT.png new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/icons/src/icons/src/AT.png b/projects/icons/src/icons/src/AT.png deleted file mode 100644 index 0565bb90e1bd..000000000000 Binary files a/projects/icons/src/icons/src/AT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/AU.png b/projects/icons/src/icons/src/AU.png deleted file mode 100644 index b88c9d302f98..000000000000 Binary files a/projects/icons/src/icons/src/AU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/AW.png b/projects/icons/src/icons/src/AW.png deleted file mode 100644 index 52cabb3192a0..000000000000 Binary files a/projects/icons/src/icons/src/AW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/AX.png b/projects/icons/src/icons/src/AX.png deleted file mode 100644 index 2f201bb0bcb2..000000000000 Binary files a/projects/icons/src/icons/src/AX.png and /dev/null differ diff --git a/projects/icons/src/icons/src/AZ.png b/projects/icons/src/icons/src/AZ.png deleted file mode 100644 index 58e033b665a2..000000000000 Binary files a/projects/icons/src/icons/src/AZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BA.png b/projects/icons/src/icons/src/BA.png deleted file mode 100644 index 9c04d9f2fdab..000000000000 Binary files a/projects/icons/src/icons/src/BA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BB.png b/projects/icons/src/icons/src/BB.png deleted file mode 100644 index 3cf38b549f2d..000000000000 Binary files a/projects/icons/src/icons/src/BB.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BD.png b/projects/icons/src/icons/src/BD.png deleted file mode 100644 index ce8d2f736641..000000000000 Binary files a/projects/icons/src/icons/src/BD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BE.png b/projects/icons/src/icons/src/BE.png deleted file mode 100644 index 3ff7f405cce8..000000000000 Binary files a/projects/icons/src/icons/src/BE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BF.png b/projects/icons/src/icons/src/BF.png deleted file mode 100644 index c31d9377018d..000000000000 Binary files a/projects/icons/src/icons/src/BF.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BG.png b/projects/icons/src/icons/src/BG.png deleted file mode 100644 index 443185f08b95..000000000000 Binary files a/projects/icons/src/icons/src/BG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BH.png b/projects/icons/src/icons/src/BH.png deleted file mode 100644 index bb2534738651..000000000000 Binary files a/projects/icons/src/icons/src/BH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BI.png b/projects/icons/src/icons/src/BI.png deleted file mode 100644 index 1d076b470345..000000000000 Binary files a/projects/icons/src/icons/src/BI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BJ.png b/projects/icons/src/icons/src/BJ.png deleted file mode 100644 index 7210027b3426..000000000000 Binary files a/projects/icons/src/icons/src/BJ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BM.png b/projects/icons/src/icons/src/BM.png deleted file mode 100644 index b305d1af8d6e..000000000000 Binary files a/projects/icons/src/icons/src/BM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BN.png b/projects/icons/src/icons/src/BN.png deleted file mode 100644 index eab13ea3c247..000000000000 Binary files a/projects/icons/src/icons/src/BN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BO.png b/projects/icons/src/icons/src/BO.png deleted file mode 100644 index cabfc5806db8..000000000000 Binary files a/projects/icons/src/icons/src/BO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BR.png b/projects/icons/src/icons/src/BR.png deleted file mode 100644 index 15dddc68f902..000000000000 Binary files a/projects/icons/src/icons/src/BR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BS.png b/projects/icons/src/icons/src/BS.png deleted file mode 100644 index 127caf66a5df..000000000000 Binary files a/projects/icons/src/icons/src/BS.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BT.png b/projects/icons/src/icons/src/BT.png deleted file mode 100644 index 6add15ed2345..000000000000 Binary files a/projects/icons/src/icons/src/BT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BW.png b/projects/icons/src/icons/src/BW.png deleted file mode 100644 index 8809762098db..000000000000 Binary files a/projects/icons/src/icons/src/BW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BY.png b/projects/icons/src/icons/src/BY.png deleted file mode 100644 index 847d9cbf5cdb..000000000000 Binary files a/projects/icons/src/icons/src/BY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/BZ.png b/projects/icons/src/icons/src/BZ.png deleted file mode 100644 index 032d382e885b..000000000000 Binary files a/projects/icons/src/icons/src/BZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CA.png b/projects/icons/src/icons/src/CA.png deleted file mode 100644 index 0d59bc73e565..000000000000 Binary files a/projects/icons/src/icons/src/CA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CD.png b/projects/icons/src/icons/src/CD.png deleted file mode 100644 index a802d3eadcc4..000000000000 Binary files a/projects/icons/src/icons/src/CD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CF.png b/projects/icons/src/icons/src/CF.png deleted file mode 100644 index 17f946d56d8d..000000000000 Binary files a/projects/icons/src/icons/src/CF.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CG.png b/projects/icons/src/icons/src/CG.png deleted file mode 100644 index 41556fa3e494..000000000000 Binary files a/projects/icons/src/icons/src/CG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CH.png b/projects/icons/src/icons/src/CH.png deleted file mode 100644 index 64710d93944d..000000000000 Binary files a/projects/icons/src/icons/src/CH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CI.png b/projects/icons/src/icons/src/CI.png deleted file mode 100644 index 5149283c7796..000000000000 Binary files a/projects/icons/src/icons/src/CI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CL.png b/projects/icons/src/icons/src/CL.png deleted file mode 100644 index d6b08c5cd12d..000000000000 Binary files a/projects/icons/src/icons/src/CL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CM.png b/projects/icons/src/icons/src/CM.png deleted file mode 100644 index 157992666553..000000000000 Binary files a/projects/icons/src/icons/src/CM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CN.png b/projects/icons/src/icons/src/CN.png deleted file mode 100644 index b5ff437e30fa..000000000000 Binary files a/projects/icons/src/icons/src/CN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CO.png b/projects/icons/src/icons/src/CO.png deleted file mode 100644 index 0b30f9a0d151..000000000000 Binary files a/projects/icons/src/icons/src/CO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CR.png b/projects/icons/src/icons/src/CR.png deleted file mode 100644 index ec6014a0c035..000000000000 Binary files a/projects/icons/src/icons/src/CR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CU.png b/projects/icons/src/icons/src/CU.png deleted file mode 100644 index fb3dd69b8a6e..000000000000 Binary files a/projects/icons/src/icons/src/CU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CV.png b/projects/icons/src/icons/src/CV.png deleted file mode 100644 index f66b5a42ac43..000000000000 Binary files a/projects/icons/src/icons/src/CV.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CY.png b/projects/icons/src/icons/src/CY.png deleted file mode 100644 index 57833ed53740..000000000000 Binary files a/projects/icons/src/icons/src/CY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/CZ.png b/projects/icons/src/icons/src/CZ.png deleted file mode 100644 index c0611f9f6276..000000000000 Binary files a/projects/icons/src/icons/src/CZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DE.png b/projects/icons/src/icons/src/DE.png deleted file mode 100644 index ecd7db30ab6a..000000000000 Binary files a/projects/icons/src/icons/src/DE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DJ.png b/projects/icons/src/icons/src/DJ.png deleted file mode 100644 index 84a3e44c1ebd..000000000000 Binary files a/projects/icons/src/icons/src/DJ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DK.png b/projects/icons/src/icons/src/DK.png deleted file mode 100644 index a31de2dbe241..000000000000 Binary files a/projects/icons/src/icons/src/DK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DM.png b/projects/icons/src/icons/src/DM.png deleted file mode 100644 index ab78dd01b6ea..000000000000 Binary files a/projects/icons/src/icons/src/DM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DO.png b/projects/icons/src/icons/src/DO.png deleted file mode 100644 index 0f13193ded48..000000000000 Binary files a/projects/icons/src/icons/src/DO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/DZ.png b/projects/icons/src/icons/src/DZ.png deleted file mode 100644 index 41e1bd102927..000000000000 Binary files a/projects/icons/src/icons/src/DZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/EC.png b/projects/icons/src/icons/src/EC.png deleted file mode 100644 index b76a5e877ab6..000000000000 Binary files a/projects/icons/src/icons/src/EC.png and /dev/null differ diff --git a/projects/icons/src/icons/src/EE.png b/projects/icons/src/icons/src/EE.png deleted file mode 100644 index 9a699c1cb795..000000000000 Binary files a/projects/icons/src/icons/src/EE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/EG.png b/projects/icons/src/icons/src/EG.png deleted file mode 100644 index 8514601202bb..000000000000 Binary files a/projects/icons/src/icons/src/EG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ER.png b/projects/icons/src/icons/src/ER.png deleted file mode 100644 index 580e5b7a2432..000000000000 Binary files a/projects/icons/src/icons/src/ER.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ES.png b/projects/icons/src/icons/src/ES.png deleted file mode 100644 index 46525a89414f..000000000000 Binary files a/projects/icons/src/icons/src/ES.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ET.png b/projects/icons/src/icons/src/ET.png deleted file mode 100644 index 2b7b6c7ad948..000000000000 Binary files a/projects/icons/src/icons/src/ET.png and /dev/null differ diff --git a/projects/icons/src/icons/src/FI.png b/projects/icons/src/icons/src/FI.png deleted file mode 100644 index 96891636380b..000000000000 Binary files a/projects/icons/src/icons/src/FI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/FJ.png b/projects/icons/src/icons/src/FJ.png deleted file mode 100644 index f4b75cb2d84f..000000000000 Binary files a/projects/icons/src/icons/src/FJ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/FK.png b/projects/icons/src/icons/src/FK.png deleted file mode 100644 index fcee64360a69..000000000000 Binary files a/projects/icons/src/icons/src/FK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/FM.png b/projects/icons/src/icons/src/FM.png deleted file mode 100644 index 9309f4c7e1a7..000000000000 Binary files a/projects/icons/src/icons/src/FM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/FR.png b/projects/icons/src/icons/src/FR.png deleted file mode 100644 index a657bfb3a660..000000000000 Binary files a/projects/icons/src/icons/src/FR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GA.png b/projects/icons/src/icons/src/GA.png deleted file mode 100644 index ca6bf954148c..000000000000 Binary files a/projects/icons/src/icons/src/GA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GD.png b/projects/icons/src/icons/src/GD.png deleted file mode 100644 index e0ba0257b748..000000000000 Binary files a/projects/icons/src/icons/src/GD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GE.png b/projects/icons/src/icons/src/GE.png deleted file mode 100644 index 9d4ddda8f6c6..000000000000 Binary files a/projects/icons/src/icons/src/GE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GG.png b/projects/icons/src/icons/src/GG.png deleted file mode 100644 index bcf70f344dc9..000000000000 Binary files a/projects/icons/src/icons/src/GG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GH.png b/projects/icons/src/icons/src/GH.png deleted file mode 100644 index d0febf646c14..000000000000 Binary files a/projects/icons/src/icons/src/GH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GI.png b/projects/icons/src/icons/src/GI.png deleted file mode 100644 index 60f19931791e..000000000000 Binary files a/projects/icons/src/icons/src/GI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GL.png b/projects/icons/src/icons/src/GL.png deleted file mode 100644 index 752e62de92af..000000000000 Binary files a/projects/icons/src/icons/src/GL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GM.png b/projects/icons/src/icons/src/GM.png deleted file mode 100644 index 9896b88cfb94..000000000000 Binary files a/projects/icons/src/icons/src/GM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GN.png b/projects/icons/src/icons/src/GN.png deleted file mode 100644 index 2d95d3b07ed0..000000000000 Binary files a/projects/icons/src/icons/src/GN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GQ.png b/projects/icons/src/icons/src/GQ.png deleted file mode 100644 index 4f366a0a34be..000000000000 Binary files a/projects/icons/src/icons/src/GQ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GR.png b/projects/icons/src/icons/src/GR.png deleted file mode 100644 index 266b1591a9fa..000000000000 Binary files a/projects/icons/src/icons/src/GR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GT.png b/projects/icons/src/icons/src/GT.png deleted file mode 100644 index b686412b9ef1..000000000000 Binary files a/projects/icons/src/icons/src/GT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GW.png b/projects/icons/src/icons/src/GW.png deleted file mode 100644 index 923828396f16..000000000000 Binary files a/projects/icons/src/icons/src/GW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/GY.png b/projects/icons/src/icons/src/GY.png deleted file mode 100644 index e74ed8661c23..000000000000 Binary files a/projects/icons/src/icons/src/GY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/HK.png b/projects/icons/src/icons/src/HK.png deleted file mode 100644 index f8c7e24527e2..000000000000 Binary files a/projects/icons/src/icons/src/HK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/HN.png b/projects/icons/src/icons/src/HN.png deleted file mode 100644 index b914d9108c07..000000000000 Binary files a/projects/icons/src/icons/src/HN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/HR.png b/projects/icons/src/icons/src/HR.png deleted file mode 100644 index a3ed4f8c91cc..000000000000 Binary files a/projects/icons/src/icons/src/HR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/HT.png b/projects/icons/src/icons/src/HT.png deleted file mode 100644 index 75f1f2f0a9dc..000000000000 Binary files a/projects/icons/src/icons/src/HT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/HU.png b/projects/icons/src/icons/src/HU.png deleted file mode 100644 index dd46cd92d2d9..000000000000 Binary files a/projects/icons/src/icons/src/HU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ID.png b/projects/icons/src/icons/src/ID.png deleted file mode 100644 index 05d8a2ce794c..000000000000 Binary files a/projects/icons/src/icons/src/ID.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IE.png b/projects/icons/src/icons/src/IE.png deleted file mode 100644 index d5071eb53aca..000000000000 Binary files a/projects/icons/src/icons/src/IE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IL.png b/projects/icons/src/icons/src/IL.png deleted file mode 100644 index 36752f633c2d..000000000000 Binary files a/projects/icons/src/icons/src/IL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IM.png b/projects/icons/src/icons/src/IM.png deleted file mode 100644 index 5e7ab1f702fc..000000000000 Binary files a/projects/icons/src/icons/src/IM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IN.png b/projects/icons/src/icons/src/IN.png deleted file mode 100644 index 58651e18a20c..000000000000 Binary files a/projects/icons/src/icons/src/IN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IQ.png b/projects/icons/src/icons/src/IQ.png deleted file mode 100644 index 57feaef9d0fd..000000000000 Binary files a/projects/icons/src/icons/src/IQ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IR.png b/projects/icons/src/icons/src/IR.png deleted file mode 100644 index 0063d0ced09b..000000000000 Binary files a/projects/icons/src/icons/src/IR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IS.png b/projects/icons/src/icons/src/IS.png deleted file mode 100644 index 8d152ba68b52..000000000000 Binary files a/projects/icons/src/icons/src/IS.png and /dev/null differ diff --git a/projects/icons/src/icons/src/IT.png b/projects/icons/src/icons/src/IT.png deleted file mode 100644 index cbf47cd675a9..000000000000 Binary files a/projects/icons/src/icons/src/IT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/JE.png b/projects/icons/src/icons/src/JE.png deleted file mode 100644 index 47d9cf1f8518..000000000000 Binary files a/projects/icons/src/icons/src/JE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/JM.png b/projects/icons/src/icons/src/JM.png deleted file mode 100644 index 0d3bc7be04a8..000000000000 Binary files a/projects/icons/src/icons/src/JM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/JO.png b/projects/icons/src/icons/src/JO.png deleted file mode 100644 index 3a9ce598acb7..000000000000 Binary files a/projects/icons/src/icons/src/JO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/JP.png b/projects/icons/src/icons/src/JP.png deleted file mode 100644 index 9d35672d95e6..000000000000 Binary files a/projects/icons/src/icons/src/JP.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KE.png b/projects/icons/src/icons/src/KE.png deleted file mode 100644 index 1c7f41fd6786..000000000000 Binary files a/projects/icons/src/icons/src/KE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KG.png b/projects/icons/src/icons/src/KG.png deleted file mode 100644 index ff2a9411df97..000000000000 Binary files a/projects/icons/src/icons/src/KG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KH.png b/projects/icons/src/icons/src/KH.png deleted file mode 100644 index f4efd83ef20a..000000000000 Binary files a/projects/icons/src/icons/src/KH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KM.png b/projects/icons/src/icons/src/KM.png deleted file mode 100644 index ff1acfa2be88..000000000000 Binary files a/projects/icons/src/icons/src/KM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KN.png b/projects/icons/src/icons/src/KN.png deleted file mode 100644 index 53cdd801df8b..000000000000 Binary files a/projects/icons/src/icons/src/KN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KP.png b/projects/icons/src/icons/src/KP.png deleted file mode 100644 index b117f39d4ffc..000000000000 Binary files a/projects/icons/src/icons/src/KP.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KR.png b/projects/icons/src/icons/src/KR.png deleted file mode 100644 index 82bde0611173..000000000000 Binary files a/projects/icons/src/icons/src/KR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KW.png b/projects/icons/src/icons/src/KW.png deleted file mode 100644 index a7744c84afe0..000000000000 Binary files a/projects/icons/src/icons/src/KW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KY.png b/projects/icons/src/icons/src/KY.png deleted file mode 100644 index ed2edbc72034..000000000000 Binary files a/projects/icons/src/icons/src/KY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/KZ.png b/projects/icons/src/icons/src/KZ.png deleted file mode 100644 index f46c56544b29..000000000000 Binary files a/projects/icons/src/icons/src/KZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LA.png b/projects/icons/src/icons/src/LA.png deleted file mode 100644 index fad340ebfe5f..000000000000 Binary files a/projects/icons/src/icons/src/LA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LB.png b/projects/icons/src/icons/src/LB.png deleted file mode 100644 index 2fcebd7a7c9d..000000000000 Binary files a/projects/icons/src/icons/src/LB.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LC.png b/projects/icons/src/icons/src/LC.png deleted file mode 100644 index 8a8825ff9cf4..000000000000 Binary files a/projects/icons/src/icons/src/LC.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LI.png b/projects/icons/src/icons/src/LI.png deleted file mode 100644 index 4149dfe180e9..000000000000 Binary files a/projects/icons/src/icons/src/LI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LK.png b/projects/icons/src/icons/src/LK.png deleted file mode 100644 index cbb55a79cedd..000000000000 Binary files a/projects/icons/src/icons/src/LK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LR.png b/projects/icons/src/icons/src/LR.png deleted file mode 100644 index 42cdab86df98..000000000000 Binary files a/projects/icons/src/icons/src/LR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LS.png b/projects/icons/src/icons/src/LS.png deleted file mode 100644 index 87a322b94954..000000000000 Binary files a/projects/icons/src/icons/src/LS.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LT.png b/projects/icons/src/icons/src/LT.png deleted file mode 100644 index 0a06931df11f..000000000000 Binary files a/projects/icons/src/icons/src/LT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LU.png b/projects/icons/src/icons/src/LU.png deleted file mode 100644 index f671f77e4a08..000000000000 Binary files a/projects/icons/src/icons/src/LU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LV.png b/projects/icons/src/icons/src/LV.png deleted file mode 100644 index 2d34c7551cb0..000000000000 Binary files a/projects/icons/src/icons/src/LV.png and /dev/null differ diff --git a/projects/icons/src/icons/src/LY.png b/projects/icons/src/icons/src/LY.png deleted file mode 100644 index 59e21fd771d4..000000000000 Binary files a/projects/icons/src/icons/src/LY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MA.png b/projects/icons/src/icons/src/MA.png deleted file mode 100644 index af129f17c248..000000000000 Binary files a/projects/icons/src/icons/src/MA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MC.png b/projects/icons/src/icons/src/MC.png deleted file mode 100644 index 4b694b540c53..000000000000 Binary files a/projects/icons/src/icons/src/MC.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MD.png b/projects/icons/src/icons/src/MD.png deleted file mode 100644 index 36e653cd7b74..000000000000 Binary files a/projects/icons/src/icons/src/MD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ME.png b/projects/icons/src/icons/src/ME.png deleted file mode 100644 index fa2b76523e05..000000000000 Binary files a/projects/icons/src/icons/src/ME.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MG.png b/projects/icons/src/icons/src/MG.png deleted file mode 100644 index a004e4fdd1b1..000000000000 Binary files a/projects/icons/src/icons/src/MG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MK.png b/projects/icons/src/icons/src/MK.png deleted file mode 100644 index 9dbbe7fb9d8b..000000000000 Binary files a/projects/icons/src/icons/src/MK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ML.png b/projects/icons/src/icons/src/ML.png deleted file mode 100644 index c2e7a80cf2a8..000000000000 Binary files a/projects/icons/src/icons/src/ML.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MM.png b/projects/icons/src/icons/src/MM.png deleted file mode 100644 index 76d44499c85f..000000000000 Binary files a/projects/icons/src/icons/src/MM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MN.png b/projects/icons/src/icons/src/MN.png deleted file mode 100644 index 8c072b2ba0e1..000000000000 Binary files a/projects/icons/src/icons/src/MN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MO.png b/projects/icons/src/icons/src/MO.png deleted file mode 100644 index a3d6befc1a09..000000000000 Binary files a/projects/icons/src/icons/src/MO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MR.png b/projects/icons/src/icons/src/MR.png deleted file mode 100644 index 24f3d82e4a23..000000000000 Binary files a/projects/icons/src/icons/src/MR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MS.png b/projects/icons/src/icons/src/MS.png deleted file mode 100644 index e07c5b6175a2..000000000000 Binary files a/projects/icons/src/icons/src/MS.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MT.png b/projects/icons/src/icons/src/MT.png deleted file mode 100644 index 9aaf9e6f42f2..000000000000 Binary files a/projects/icons/src/icons/src/MT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MU.png b/projects/icons/src/icons/src/MU.png deleted file mode 100644 index 7820fd4835bb..000000000000 Binary files a/projects/icons/src/icons/src/MU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MV.png b/projects/icons/src/icons/src/MV.png deleted file mode 100644 index 6491aec2a2c4..000000000000 Binary files a/projects/icons/src/icons/src/MV.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MW.png b/projects/icons/src/icons/src/MW.png deleted file mode 100644 index 7ae21321ee1a..000000000000 Binary files a/projects/icons/src/icons/src/MW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MX.png b/projects/icons/src/icons/src/MX.png deleted file mode 100644 index 3a7bb07fc741..000000000000 Binary files a/projects/icons/src/icons/src/MX.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MY.png b/projects/icons/src/icons/src/MY.png deleted file mode 100644 index 7c7f8369fbdd..000000000000 Binary files a/projects/icons/src/icons/src/MY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/MZ.png b/projects/icons/src/icons/src/MZ.png deleted file mode 100644 index d7aeb647d0bf..000000000000 Binary files a/projects/icons/src/icons/src/MZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NA.png b/projects/icons/src/icons/src/NA.png deleted file mode 100644 index 1fe0caf45854..000000000000 Binary files a/projects/icons/src/icons/src/NA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NE.png b/projects/icons/src/icons/src/NE.png deleted file mode 100644 index 7222feafa987..000000000000 Binary files a/projects/icons/src/icons/src/NE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NG.png b/projects/icons/src/icons/src/NG.png deleted file mode 100644 index 8e58b61c394f..000000000000 Binary files a/projects/icons/src/icons/src/NG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NI.png b/projects/icons/src/icons/src/NI.png deleted file mode 100644 index ced9ae7a9ff4..000000000000 Binary files a/projects/icons/src/icons/src/NI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NL.png b/projects/icons/src/icons/src/NL.png deleted file mode 100644 index 98ec90f36e77..000000000000 Binary files a/projects/icons/src/icons/src/NL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NO.png b/projects/icons/src/icons/src/NO.png deleted file mode 100644 index 6aa6779020b8..000000000000 Binary files a/projects/icons/src/icons/src/NO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NP.png b/projects/icons/src/icons/src/NP.png deleted file mode 100644 index ce97c53ff867..000000000000 Binary files a/projects/icons/src/icons/src/NP.png and /dev/null differ diff --git a/projects/icons/src/icons/src/NZ.png b/projects/icons/src/icons/src/NZ.png deleted file mode 100644 index 635746d74654..000000000000 Binary files a/projects/icons/src/icons/src/NZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/OM.png b/projects/icons/src/icons/src/OM.png deleted file mode 100644 index 36ee51e22402..000000000000 Binary files a/projects/icons/src/icons/src/OM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PA.png b/projects/icons/src/icons/src/PA.png deleted file mode 100644 index 20eaa26048cd..000000000000 Binary files a/projects/icons/src/icons/src/PA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PE.png b/projects/icons/src/icons/src/PE.png deleted file mode 100644 index 5d17f9d10ba8..000000000000 Binary files a/projects/icons/src/icons/src/PE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PF.png b/projects/icons/src/icons/src/PF.png deleted file mode 100644 index 4254c9a80183..000000000000 Binary files a/projects/icons/src/icons/src/PF.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PG.png b/projects/icons/src/icons/src/PG.png deleted file mode 100644 index fccb27355506..000000000000 Binary files a/projects/icons/src/icons/src/PG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PH.png b/projects/icons/src/icons/src/PH.png deleted file mode 100644 index cfad85214b0c..000000000000 Binary files a/projects/icons/src/icons/src/PH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PK.png b/projects/icons/src/icons/src/PK.png deleted file mode 100644 index 3c53c097472f..000000000000 Binary files a/projects/icons/src/icons/src/PK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PL.png b/projects/icons/src/icons/src/PL.png deleted file mode 100644 index d87f8f7bbec5..000000000000 Binary files a/projects/icons/src/icons/src/PL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PR.png b/projects/icons/src/icons/src/PR.png deleted file mode 100644 index c51d9b6aac41..000000000000 Binary files a/projects/icons/src/icons/src/PR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PT.png b/projects/icons/src/icons/src/PT.png deleted file mode 100644 index c10f5cc01256..000000000000 Binary files a/projects/icons/src/icons/src/PT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PW.png b/projects/icons/src/icons/src/PW.png deleted file mode 100644 index 20862d7f76f5..000000000000 Binary files a/projects/icons/src/icons/src/PW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/PY.png b/projects/icons/src/icons/src/PY.png deleted file mode 100644 index 00400ac3bc94..000000000000 Binary files a/projects/icons/src/icons/src/PY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/QA.png b/projects/icons/src/icons/src/QA.png deleted file mode 100644 index 909d31246215..000000000000 Binary files a/projects/icons/src/icons/src/QA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/RO.png b/projects/icons/src/icons/src/RO.png deleted file mode 100644 index 08a1415f0e08..000000000000 Binary files a/projects/icons/src/icons/src/RO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/RS.png b/projects/icons/src/icons/src/RS.png deleted file mode 100644 index f532c5c2a935..000000000000 Binary files a/projects/icons/src/icons/src/RS.png and /dev/null differ diff --git a/projects/icons/src/icons/src/RU.png b/projects/icons/src/icons/src/RU.png deleted file mode 100644 index 4313abbb1c9d..000000000000 Binary files a/projects/icons/src/icons/src/RU.png and /dev/null differ diff --git a/projects/icons/src/icons/src/RW.png b/projects/icons/src/icons/src/RW.png deleted file mode 100644 index 79b97f8c824a..000000000000 Binary files a/projects/icons/src/icons/src/RW.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SA.png b/projects/icons/src/icons/src/SA.png deleted file mode 100644 index 8d3cde6556b7..000000000000 Binary files a/projects/icons/src/icons/src/SA.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SB.png b/projects/icons/src/icons/src/SB.png deleted file mode 100644 index 06523704671e..000000000000 Binary files a/projects/icons/src/icons/src/SB.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SC.png b/projects/icons/src/icons/src/SC.png deleted file mode 100644 index 11648d3e88c2..000000000000 Binary files a/projects/icons/src/icons/src/SC.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SD.png b/projects/icons/src/icons/src/SD.png deleted file mode 100644 index eff1e63e1b15..000000000000 Binary files a/projects/icons/src/icons/src/SD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SE.png b/projects/icons/src/icons/src/SE.png deleted file mode 100644 index cec93f99407c..000000000000 Binary files a/projects/icons/src/icons/src/SE.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SG.png b/projects/icons/src/icons/src/SG.png deleted file mode 100644 index 46ece6adb139..000000000000 Binary files a/projects/icons/src/icons/src/SG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SH.png b/projects/icons/src/icons/src/SH.png deleted file mode 100644 index d50f0f9a034c..000000000000 Binary files a/projects/icons/src/icons/src/SH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SI.png b/projects/icons/src/icons/src/SI.png deleted file mode 100644 index 74c318082f02..000000000000 Binary files a/projects/icons/src/icons/src/SI.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SK.png b/projects/icons/src/icons/src/SK.png deleted file mode 100644 index ea9e3fd8d1bb..000000000000 Binary files a/projects/icons/src/icons/src/SK.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SL.png b/projects/icons/src/icons/src/SL.png deleted file mode 100644 index dd3e9434093f..000000000000 Binary files a/projects/icons/src/icons/src/SL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SM.png b/projects/icons/src/icons/src/SM.png deleted file mode 100644 index 6223ba589d5a..000000000000 Binary files a/projects/icons/src/icons/src/SM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SN.png b/projects/icons/src/icons/src/SN.png deleted file mode 100644 index 9975f289785a..000000000000 Binary files a/projects/icons/src/icons/src/SN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SO.png b/projects/icons/src/icons/src/SO.png deleted file mode 100644 index 14fa9e3ac6b3..000000000000 Binary files a/projects/icons/src/icons/src/SO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SR.png b/projects/icons/src/icons/src/SR.png deleted file mode 100644 index f93a165ae48f..000000000000 Binary files a/projects/icons/src/icons/src/SR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/ST.png b/projects/icons/src/icons/src/ST.png deleted file mode 100644 index 2866a8a48f6f..000000000000 Binary files a/projects/icons/src/icons/src/ST.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SV.png b/projects/icons/src/icons/src/SV.png deleted file mode 100644 index 17e904151d28..000000000000 Binary files a/projects/icons/src/icons/src/SV.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SY.png b/projects/icons/src/icons/src/SY.png deleted file mode 100644 index a5463979f5fb..000000000000 Binary files a/projects/icons/src/icons/src/SY.png and /dev/null differ diff --git a/projects/icons/src/icons/src/SZ.png b/projects/icons/src/icons/src/SZ.png deleted file mode 100644 index 0e309bb55301..000000000000 Binary files a/projects/icons/src/icons/src/SZ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TC.png b/projects/icons/src/icons/src/TC.png deleted file mode 100644 index 0408de437590..000000000000 Binary files a/projects/icons/src/icons/src/TC.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TD.png b/projects/icons/src/icons/src/TD.png deleted file mode 100644 index 5c902441e035..000000000000 Binary files a/projects/icons/src/icons/src/TD.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TG.png b/projects/icons/src/icons/src/TG.png deleted file mode 100644 index 918fea8ec5b9..000000000000 Binary files a/projects/icons/src/icons/src/TG.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TH.png b/projects/icons/src/icons/src/TH.png deleted file mode 100644 index f978afeacae2..000000000000 Binary files a/projects/icons/src/icons/src/TH.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TJ.png b/projects/icons/src/icons/src/TJ.png deleted file mode 100644 index febb8b6899f9..000000000000 Binary files a/projects/icons/src/icons/src/TJ.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TL.png b/projects/icons/src/icons/src/TL.png deleted file mode 100644 index 43633d8e60fb..000000000000 Binary files a/projects/icons/src/icons/src/TL.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TM.png b/projects/icons/src/icons/src/TM.png deleted file mode 100644 index f2f1bdcd1972..000000000000 Binary files a/projects/icons/src/icons/src/TM.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TN.png b/projects/icons/src/icons/src/TN.png deleted file mode 100644 index 57ddc50a728b..000000000000 Binary files a/projects/icons/src/icons/src/TN.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TO.png b/projects/icons/src/icons/src/TO.png deleted file mode 100644 index 27185747b402..000000000000 Binary files a/projects/icons/src/icons/src/TO.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TR.png b/projects/icons/src/icons/src/TR.png deleted file mode 100644 index 552159f81b27..000000000000 Binary files a/projects/icons/src/icons/src/TR.png and /dev/null differ diff --git a/projects/icons/src/icons/src/TT.png b/projects/icons/src/icons/src/TT.png deleted file mode 100644 index fcd8247052b7..000000000000 Binary files a/projects/icons/src/icons/src/TT.png and /dev/null differ diff --git a/projects/icons/src/icons/src/tuiIcon2Info.svg b/projects/icons/src/tuiIcon2Info.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIcon2Info.svg rename to projects/icons/src/tuiIcon2Info.svg diff --git a/projects/icons/src/icons/src/tuiIconAlertCircle2Large.svg b/projects/icons/src/tuiIconAlertCircle2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconAlertCircle2Large.svg rename to projects/icons/src/tuiIconAlertCircle2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconAlertCircleLarge.svg b/projects/icons/src/tuiIconAlertCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconAlertCircleLarge.svg rename to projects/icons/src/tuiIconAlertCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowDown.svg b/projects/icons/src/tuiIconArrowDown.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowDown.svg rename to projects/icons/src/tuiIconArrowDown.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowDown2Large.svg b/projects/icons/src/tuiIconArrowDown2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowDown2Large.svg rename to projects/icons/src/tuiIconArrowDown2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowDownLarge.svg b/projects/icons/src/tuiIconArrowDownLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowDownLarge.svg rename to projects/icons/src/tuiIconArrowDownLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLeft.svg b/projects/icons/src/tuiIconArrowLeft.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLeft.svg rename to projects/icons/src/tuiIconArrowLeft.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLeftLarge.svg b/projects/icons/src/tuiIconArrowLeftLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLeftLarge.svg rename to projects/icons/src/tuiIconArrowLeftLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLeftLgLarge.svg b/projects/icons/src/tuiIconArrowLeftLgLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLeftLgLarge.svg rename to projects/icons/src/tuiIconArrowLeftLgLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLongDown.svg b/projects/icons/src/tuiIconArrowLongDown.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLongDown.svg rename to projects/icons/src/tuiIconArrowLongDown.svg diff --git a/projects/icons/src/tuiIconArrowLongDownLeft.svg b/projects/icons/src/tuiIconArrowLongDownLeft.svg new file mode 100644 index 000000000000..ad0c17266071 --- /dev/null +++ b/projects/icons/src/tuiIconArrowLongDownLeft.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconArrowLongDownRight.svg b/projects/icons/src/tuiIconArrowLongDownRight.svg new file mode 100644 index 000000000000..aa014f222ba6 --- /dev/null +++ b/projects/icons/src/tuiIconArrowLongDownRight.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/icons/src/tuiIconArrowLongLeft.svg b/projects/icons/src/tuiIconArrowLongLeft.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLongLeft.svg rename to projects/icons/src/tuiIconArrowLongLeft.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLongRight.svg b/projects/icons/src/tuiIconArrowLongRight.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLongRight.svg rename to projects/icons/src/tuiIconArrowLongRight.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowLongUp.svg b/projects/icons/src/tuiIconArrowLongUp.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowLongUp.svg rename to projects/icons/src/tuiIconArrowLongUp.svg diff --git a/projects/icons/src/tuiIconArrowLongUpLeft.svg b/projects/icons/src/tuiIconArrowLongUpLeft.svg new file mode 100644 index 000000000000..38c4d5b51c00 --- /dev/null +++ b/projects/icons/src/tuiIconArrowLongUpLeft.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconArrowLongUpRight.svg b/projects/icons/src/tuiIconArrowLongUpRight.svg new file mode 100644 index 000000000000..b1e4c80cb50e --- /dev/null +++ b/projects/icons/src/tuiIconArrowLongUpRight.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/icons/src/tuiIconArrowRight.svg b/projects/icons/src/tuiIconArrowRight.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowRight.svg rename to projects/icons/src/tuiIconArrowRight.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowRightLarge.svg b/projects/icons/src/tuiIconArrowRightLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowRightLarge.svg rename to projects/icons/src/tuiIconArrowRightLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowRightLgLarge.svg b/projects/icons/src/tuiIconArrowRightLgLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowRightLgLarge.svg rename to projects/icons/src/tuiIconArrowRightLgLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowUp.svg b/projects/icons/src/tuiIconArrowUp.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowUp.svg rename to projects/icons/src/tuiIconArrowUp.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowUp2Large.svg b/projects/icons/src/tuiIconArrowUp2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowUp2Large.svg rename to projects/icons/src/tuiIconArrowUp2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconArrowUpLarge.svg b/projects/icons/src/tuiIconArrowUpLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconArrowUpLarge.svg rename to projects/icons/src/tuiIconArrowUpLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconAttach.svg b/projects/icons/src/tuiIconAttach.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconAttach.svg rename to projects/icons/src/tuiIconAttach.svg diff --git a/projects/icons/src/icons/src/tuiIconAttachLarge.svg b/projects/icons/src/tuiIconAttachLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconAttachLarge.svg rename to projects/icons/src/tuiIconAttachLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconAttention.svg b/projects/icons/src/tuiIconAttention.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconAttention.svg rename to projects/icons/src/tuiIconAttention.svg diff --git a/projects/icons/src/icons/src/tuiIconBackCircleLarge.svg b/projects/icons/src/tuiIconBackCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconBackCircleLarge.svg rename to projects/icons/src/tuiIconBackCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconBell.svg b/projects/icons/src/tuiIconBell.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconBell.svg rename to projects/icons/src/tuiIconBell.svg diff --git a/projects/icons/src/icons/src/tuiIconBellLarge.svg b/projects/icons/src/tuiIconBellLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconBellLarge.svg rename to projects/icons/src/tuiIconBellLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconBookmark.svg b/projects/icons/src/tuiIconBookmark.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconBookmark.svg rename to projects/icons/src/tuiIconBookmark.svg diff --git a/projects/icons/src/icons/src/tuiIconBookmarkLarge.svg b/projects/icons/src/tuiIconBookmarkLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconBookmarkLarge.svg rename to projects/icons/src/tuiIconBookmarkLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCalendar.svg b/projects/icons/src/tuiIconCalendar.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCalendar.svg rename to projects/icons/src/tuiIconCalendar.svg diff --git a/projects/icons/src/icons/src/tuiIconCalendarLarge.svg b/projects/icons/src/tuiIconCalendarLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCalendarLarge.svg rename to projects/icons/src/tuiIconCalendarLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCall.svg b/projects/icons/src/tuiIconCall.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCall.svg rename to projects/icons/src/tuiIconCall.svg diff --git a/projects/icons/src/icons/src/tuiIconCallIn.svg b/projects/icons/src/tuiIconCallIn.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallIn.svg rename to projects/icons/src/tuiIconCallIn.svg diff --git a/projects/icons/src/icons/src/tuiIconCallInLarge.svg b/projects/icons/src/tuiIconCallInLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallInLarge.svg rename to projects/icons/src/tuiIconCallInLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCallLarge.svg b/projects/icons/src/tuiIconCallLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallLarge.svg rename to projects/icons/src/tuiIconCallLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCallOut.svg b/projects/icons/src/tuiIconCallOut.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallOut.svg rename to projects/icons/src/tuiIconCallOut.svg diff --git a/projects/icons/src/icons/src/tuiIconCallOutLarge.svg b/projects/icons/src/tuiIconCallOutLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallOutLarge.svg rename to projects/icons/src/tuiIconCallOutLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCallTransferLarge.svg b/projects/icons/src/tuiIconCallTransferLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCallTransferLarge.svg rename to projects/icons/src/tuiIconCallTransferLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCameraLarge.svg b/projects/icons/src/tuiIconCameraLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCameraLarge.svg rename to projects/icons/src/tuiIconCameraLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCancel.svg b/projects/icons/src/tuiIconCancel.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCancel.svg rename to projects/icons/src/tuiIconCancel.svg diff --git a/projects/icons/src/icons/src/tuiIconCancelCircleLarge.svg b/projects/icons/src/tuiIconCancelCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCancelCircleLarge.svg rename to projects/icons/src/tuiIconCancelCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCard.svg b/projects/icons/src/tuiIconCard.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCard.svg rename to projects/icons/src/tuiIconCard.svg diff --git a/projects/icons/src/icons/src/tuiIconCardsLarge.svg b/projects/icons/src/tuiIconCardsLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCardsLarge.svg rename to projects/icons/src/tuiIconCardsLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconChartBar.svg b/projects/icons/src/tuiIconChartBar.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconChartBar.svg rename to projects/icons/src/tuiIconChartBar.svg diff --git a/projects/icons/src/icons/src/tuiIconChartLarge.svg b/projects/icons/src/tuiIconChartLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconChartLarge.svg rename to projects/icons/src/tuiIconChartLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconChartLineLarge.svg b/projects/icons/src/tuiIconChartLineLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconChartLineLarge.svg rename to projects/icons/src/tuiIconChartLineLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCheck.svg b/projects/icons/src/tuiIconCheck.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheck.svg rename to projects/icons/src/tuiIconCheck.svg diff --git a/projects/icons/src/icons/src/tuiIconCheckCircle.svg b/projects/icons/src/tuiIconCheckCircle.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheckCircle.svg rename to projects/icons/src/tuiIconCheckCircle.svg diff --git a/projects/icons/src/icons/src/tuiIconCheckCircle2Large.svg b/projects/icons/src/tuiIconCheckCircle2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheckCircle2Large.svg rename to projects/icons/src/tuiIconCheckCircle2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconCheckCircleLarge.svg b/projects/icons/src/tuiIconCheckCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheckCircleLarge.svg rename to projects/icons/src/tuiIconCheckCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCheckLarge.svg b/projects/icons/src/tuiIconCheckLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheckLarge.svg rename to projects/icons/src/tuiIconCheckLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCheckList.svg b/projects/icons/src/tuiIconCheckList.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCheckList.svg rename to projects/icons/src/tuiIconCheckList.svg diff --git a/projects/icons/src/icons/src/tuiIconCloseCircleLarge.svg b/projects/icons/src/tuiIconCloseCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCloseCircleLarge.svg rename to projects/icons/src/tuiIconCloseCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCloseLarge.svg b/projects/icons/src/tuiIconCloseLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCloseLarge.svg rename to projects/icons/src/tuiIconCloseLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCloseLgLarge.svg b/projects/icons/src/tuiIconCloseLgLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCloseLgLarge.svg rename to projects/icons/src/tuiIconCloseLgLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCloud.svg b/projects/icons/src/tuiIconCloud.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCloud.svg rename to projects/icons/src/tuiIconCloud.svg diff --git a/projects/icons/src/icons/src/tuiIconCode.svg b/projects/icons/src/tuiIconCode.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCode.svg rename to projects/icons/src/tuiIconCode.svg diff --git a/projects/icons/src/icons/src/tuiIconCodeLarge.svg b/projects/icons/src/tuiIconCodeLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCodeLarge.svg rename to projects/icons/src/tuiIconCodeLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCollapse.svg b/projects/icons/src/tuiIconCollapse.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCollapse.svg rename to projects/icons/src/tuiIconCollapse.svg diff --git a/projects/icons/src/icons/src/tuiIconComment.svg b/projects/icons/src/tuiIconComment.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconComment.svg rename to projects/icons/src/tuiIconComment.svg diff --git a/projects/icons/src/icons/src/tuiIconCommentLarge.svg b/projects/icons/src/tuiIconCommentLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCommentLarge.svg rename to projects/icons/src/tuiIconCommentLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCompanyLarge.svg b/projects/icons/src/tuiIconCompanyLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCompanyLarge.svg rename to projects/icons/src/tuiIconCompanyLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconCopy.svg b/projects/icons/src/tuiIconCopy.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCopy.svg rename to projects/icons/src/tuiIconCopy.svg diff --git a/projects/icons/src/icons/src/tuiIconCopyLarge.svg b/projects/icons/src/tuiIconCopyLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconCopyLarge.svg rename to projects/icons/src/tuiIconCopyLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconDeleteLarge.svg b/projects/icons/src/tuiIconDeleteLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDeleteLarge.svg rename to projects/icons/src/tuiIconDeleteLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconDesktopLarge.svg b/projects/icons/src/tuiIconDesktopLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDesktopLarge.svg rename to projects/icons/src/tuiIconDesktopLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconDislikeLarge.svg b/projects/icons/src/tuiIconDislikeLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDislikeLarge.svg rename to projects/icons/src/tuiIconDislikeLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconDone.svg b/projects/icons/src/tuiIconDone.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDone.svg rename to projects/icons/src/tuiIconDone.svg diff --git a/projects/icons/src/icons/src/tuiIconDownload.svg b/projects/icons/src/tuiIconDownload.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDownload.svg rename to projects/icons/src/tuiIconDownload.svg diff --git a/projects/icons/src/icons/src/tuiIconDownloadLarge.svg b/projects/icons/src/tuiIconDownloadLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDownloadLarge.svg rename to projects/icons/src/tuiIconDownloadLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconDraft.svg b/projects/icons/src/tuiIconDraft.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDraft.svg rename to projects/icons/src/tuiIconDraft.svg diff --git a/projects/icons/src/icons/src/tuiIconDragLarge.svg b/projects/icons/src/tuiIconDragLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconDragLarge.svg rename to projects/icons/src/tuiIconDragLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconEdit.svg b/projects/icons/src/tuiIconEdit.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconEdit.svg rename to projects/icons/src/tuiIconEdit.svg diff --git a/projects/icons/src/icons/src/tuiIconEdit2Large.svg b/projects/icons/src/tuiIconEdit2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconEdit2Large.svg rename to projects/icons/src/tuiIconEdit2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconExpand.svg b/projects/icons/src/tuiIconExpand.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconExpand.svg rename to projects/icons/src/tuiIconExpand.svg diff --git a/projects/icons/src/icons/src/tuiIconExternal.svg b/projects/icons/src/tuiIconExternal.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconExternal.svg rename to projects/icons/src/tuiIconExternal.svg diff --git a/projects/icons/src/icons/src/tuiIconExternalLarge.svg b/projects/icons/src/tuiIconExternalLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconExternalLarge.svg rename to projects/icons/src/tuiIconExternalLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconEyeClosed.svg b/projects/icons/src/tuiIconEyeClosed.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconEyeClosed.svg rename to projects/icons/src/tuiIconEyeClosed.svg diff --git a/projects/icons/src/icons/src/tuiIconEyeOpen.svg b/projects/icons/src/tuiIconEyeOpen.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconEyeOpen.svg rename to projects/icons/src/tuiIconEyeOpen.svg diff --git a/projects/icons/src/icons/src/tuiIconFile.svg b/projects/icons/src/tuiIconFile.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFile.svg rename to projects/icons/src/tuiIconFile.svg diff --git a/projects/icons/src/icons/src/tuiIconFileLarge.svg b/projects/icons/src/tuiIconFileLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFileLarge.svg rename to projects/icons/src/tuiIconFileLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconFilter.svg b/projects/icons/src/tuiIconFilter.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFilter.svg rename to projects/icons/src/tuiIconFilter.svg diff --git a/projects/icons/src/icons/src/tuiIconFilterLarge.svg b/projects/icons/src/tuiIconFilterLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFilterLarge.svg rename to projects/icons/src/tuiIconFilterLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconFlag.svg b/projects/icons/src/tuiIconFlag.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFlag.svg rename to projects/icons/src/tuiIconFlag.svg diff --git a/projects/icons/src/icons/src/tuiIconFlagLarge.svg b/projects/icons/src/tuiIconFlagLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFlagLarge.svg rename to projects/icons/src/tuiIconFlagLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconFolder.svg b/projects/icons/src/tuiIconFolder.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFolder.svg rename to projects/icons/src/tuiIconFolder.svg diff --git a/projects/icons/src/icons/src/tuiIconFolderLarge.svg b/projects/icons/src/tuiIconFolderLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFolderLarge.svg rename to projects/icons/src/tuiIconFolderLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconFrameLarge.svg b/projects/icons/src/tuiIconFrameLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconFrameLarge.svg rename to projects/icons/src/tuiIconFrameLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconGeoLarge.svg b/projects/icons/src/tuiIconGeoLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconGeoLarge.svg rename to projects/icons/src/tuiIconGeoLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconHeart.svg b/projects/icons/src/tuiIconHeart.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconHeart.svg rename to projects/icons/src/tuiIconHeart.svg diff --git a/projects/icons/src/icons/src/tuiIconHeartLarge.svg b/projects/icons/src/tuiIconHeartLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconHeartLarge.svg rename to projects/icons/src/tuiIconHeartLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconHelpCircleLarge.svg b/projects/icons/src/tuiIconHelpCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconHelpCircleLarge.svg rename to projects/icons/src/tuiIconHelpCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconHideLarge.svg b/projects/icons/src/tuiIconHideLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconHideLarge.svg rename to projects/icons/src/tuiIconHideLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconImgLarge.svg b/projects/icons/src/tuiIconImgLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconImgLarge.svg rename to projects/icons/src/tuiIconImgLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconInfo.svg b/projects/icons/src/tuiIconInfo.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconInfo.svg rename to projects/icons/src/tuiIconInfo.svg diff --git a/projects/icons/src/icons/src/tuiIconInfoCircleLarge.svg b/projects/icons/src/tuiIconInfoCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconInfoCircleLarge.svg rename to projects/icons/src/tuiIconInfoCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLikeLarge.svg b/projects/icons/src/tuiIconLikeLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLikeLarge.svg rename to projects/icons/src/tuiIconLikeLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLink.svg b/projects/icons/src/tuiIconLink.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLink.svg rename to projects/icons/src/tuiIconLink.svg diff --git a/projects/icons/src/icons/src/tuiIconLinkedLarge.svg b/projects/icons/src/tuiIconLinkedLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLinkedLarge.svg rename to projects/icons/src/tuiIconLinkedLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLock.svg b/projects/icons/src/tuiIconLock.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLock.svg rename to projects/icons/src/tuiIconLock.svg diff --git a/projects/icons/src/icons/src/tuiIconLockLarge.svg b/projects/icons/src/tuiIconLockLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLockLarge.svg rename to projects/icons/src/tuiIconLockLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLockOpenLarge.svg b/projects/icons/src/tuiIconLockOpenLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLockOpenLarge.svg rename to projects/icons/src/tuiIconLockOpenLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLoginLarge.svg b/projects/icons/src/tuiIconLoginLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLoginLarge.svg rename to projects/icons/src/tuiIconLoginLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconLogoutLarge.svg b/projects/icons/src/tuiIconLogoutLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconLogoutLarge.svg rename to projects/icons/src/tuiIconLogoutLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMail.svg b/projects/icons/src/tuiIconMail.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMail.svg rename to projects/icons/src/tuiIconMail.svg diff --git a/projects/icons/src/icons/src/tuiIconMailLarge.svg b/projects/icons/src/tuiIconMailLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMailLarge.svg rename to projects/icons/src/tuiIconMailLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMenuLarge.svg b/projects/icons/src/tuiIconMenuLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMenuLarge.svg rename to projects/icons/src/tuiIconMenuLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMicLarge.svg b/projects/icons/src/tuiIconMicLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMicLarge.svg rename to projects/icons/src/tuiIconMicLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMicOffLarge.svg b/projects/icons/src/tuiIconMicOffLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMicOffLarge.svg rename to projects/icons/src/tuiIconMicOffLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMinus.svg b/projects/icons/src/tuiIconMinus.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMinus.svg rename to projects/icons/src/tuiIconMinus.svg diff --git a/projects/icons/src/icons/src/tuiIconMinus2.svg b/projects/icons/src/tuiIconMinus2.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMinus2.svg rename to projects/icons/src/tuiIconMinus2.svg diff --git a/projects/icons/src/icons/src/tuiIconMinusLarge.svg b/projects/icons/src/tuiIconMinusLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMinusLarge.svg rename to projects/icons/src/tuiIconMinusLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMobile.svg b/projects/icons/src/tuiIconMobile.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMobile.svg rename to projects/icons/src/tuiIconMobile.svg diff --git a/projects/icons/src/icons/src/tuiIconMobileLarge.svg b/projects/icons/src/tuiIconMobileLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMobileLarge.svg rename to projects/icons/src/tuiIconMobileLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMoreHorLarge.svg b/projects/icons/src/tuiIconMoreHorLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMoreHorLarge.svg rename to projects/icons/src/tuiIconMoreHorLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMoreVer.svg b/projects/icons/src/tuiIconMoreVer.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMoreVer.svg rename to projects/icons/src/tuiIconMoreVer.svg diff --git a/projects/icons/src/icons/src/tuiIconMoreVertLarge.svg b/projects/icons/src/tuiIconMoreVertLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMoreVertLarge.svg rename to projects/icons/src/tuiIconMoreVertLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconMusicLarge.svg b/projects/icons/src/tuiIconMusicLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconMusicLarge.svg rename to projects/icons/src/tuiIconMusicLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconNavBack.svg b/projects/icons/src/tuiIconNavBack.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconNavBack.svg rename to projects/icons/src/tuiIconNavBack.svg diff --git a/projects/icons/src/icons/src/tuiIconPause2.svg b/projects/icons/src/tuiIconPause2.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPause2.svg rename to projects/icons/src/tuiIconPause2.svg diff --git a/projects/icons/src/icons/src/tuiIconPause2Large.svg b/projects/icons/src/tuiIconPause2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPause2Large.svg rename to projects/icons/src/tuiIconPause2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconPicture.svg b/projects/icons/src/tuiIconPicture.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPicture.svg rename to projects/icons/src/tuiIconPicture.svg diff --git a/projects/icons/src/icons/src/tuiIconPiechartLarge.svg b/projects/icons/src/tuiIconPiechartLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPiechartLarge.svg rename to projects/icons/src/tuiIconPiechartLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconPin.svg b/projects/icons/src/tuiIconPin.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPin.svg rename to projects/icons/src/tuiIconPin.svg diff --git a/projects/icons/src/icons/src/tuiIconPlay2.svg b/projects/icons/src/tuiIconPlay2.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPlay2.svg rename to projects/icons/src/tuiIconPlay2.svg diff --git a/projects/icons/src/icons/src/tuiIconPlay2Large.svg b/projects/icons/src/tuiIconPlay2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPlay2Large.svg rename to projects/icons/src/tuiIconPlay2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconPlus.svg b/projects/icons/src/tuiIconPlus.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPlus.svg rename to projects/icons/src/tuiIconPlus.svg diff --git a/projects/icons/src/icons/src/tuiIconPlusCircleLarge.svg b/projects/icons/src/tuiIconPlusCircleLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPlusCircleLarge.svg rename to projects/icons/src/tuiIconPlusCircleLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconPlusLarge.svg b/projects/icons/src/tuiIconPlusLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPlusLarge.svg rename to projects/icons/src/tuiIconPlusLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconPrintLarge.svg b/projects/icons/src/tuiIconPrintLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconPrintLarge.svg rename to projects/icons/src/tuiIconPrintLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconRedo.svg b/projects/icons/src/tuiIconRedo.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconRedo.svg rename to projects/icons/src/tuiIconRedo.svg diff --git a/projects/icons/src/icons/src/tuiIconRefresh.svg b/projects/icons/src/tuiIconRefresh.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconRefresh.svg rename to projects/icons/src/tuiIconRefresh.svg diff --git a/projects/icons/src/icons/src/tuiIconRenewLarge.svg b/projects/icons/src/tuiIconRenewLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconRenewLarge.svg rename to projects/icons/src/tuiIconRenewLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconRotate.svg b/projects/icons/src/tuiIconRotate.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconRotate.svg rename to projects/icons/src/tuiIconRotate.svg diff --git a/projects/icons/src/icons/src/tuiIconSearch.svg b/projects/icons/src/tuiIconSearch.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSearch.svg rename to projects/icons/src/tuiIconSearch.svg diff --git a/projects/icons/src/icons/src/tuiIconSearchLarge.svg b/projects/icons/src/tuiIconSearchLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSearchLarge.svg rename to projects/icons/src/tuiIconSearchLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconSettings.svg b/projects/icons/src/tuiIconSettings.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSettings.svg rename to projects/icons/src/tuiIconSettings.svg diff --git a/projects/icons/src/icons/src/tuiIconSettings2Large.svg b/projects/icons/src/tuiIconSettings2Large.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSettings2Large.svg rename to projects/icons/src/tuiIconSettings2Large.svg diff --git a/projects/icons/src/icons/src/tuiIconShowLarge.svg b/projects/icons/src/tuiIconShowLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconShowLarge.svg rename to projects/icons/src/tuiIconShowLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconSortDown.svg b/projects/icons/src/tuiIconSortDown.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSortDown.svg rename to projects/icons/src/tuiIconSortDown.svg diff --git a/projects/icons/src/icons/src/tuiIconSortUp.svg b/projects/icons/src/tuiIconSortUp.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSortUp.svg rename to projects/icons/src/tuiIconSortUp.svg diff --git a/projects/icons/src/icons/src/tuiIconSound.svg b/projects/icons/src/tuiIconSound.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSound.svg rename to projects/icons/src/tuiIconSound.svg diff --git a/projects/icons/src/icons/src/tuiIconSoundLarge.svg b/projects/icons/src/tuiIconSoundLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSoundLarge.svg rename to projects/icons/src/tuiIconSoundLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconSoundOff.svg b/projects/icons/src/tuiIconSoundOff.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSoundOff.svg rename to projects/icons/src/tuiIconSoundOff.svg diff --git a/projects/icons/src/icons/src/tuiIconSoundOffLarge.svg b/projects/icons/src/tuiIconSoundOffLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSoundOffLarge.svg rename to projects/icons/src/tuiIconSoundOffLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconStar.svg b/projects/icons/src/tuiIconStar.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconStar.svg rename to projects/icons/src/tuiIconStar.svg diff --git a/projects/icons/src/icons/src/tuiIconStarLarge.svg b/projects/icons/src/tuiIconStarLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconStarLarge.svg rename to projects/icons/src/tuiIconStarLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconStop.svg b/projects/icons/src/tuiIconStop.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconStop.svg rename to projects/icons/src/tuiIconStop.svg diff --git a/projects/icons/src/icons/src/tuiIconStopLarge.svg b/projects/icons/src/tuiIconStopLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconStopLarge.svg rename to projects/icons/src/tuiIconStopLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconStructureLarge.svg b/projects/icons/src/tuiIconStructureLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconStructureLarge.svg rename to projects/icons/src/tuiIconStructureLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconSubitem.svg b/projects/icons/src/tuiIconSubitem.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSubitem.svg rename to projects/icons/src/tuiIconSubitem.svg diff --git a/projects/icons/src/icons/src/tuiIconSublevelLarge.svg b/projects/icons/src/tuiIconSublevelLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconSublevelLarge.svg rename to projects/icons/src/tuiIconSublevelLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconTime.svg b/projects/icons/src/tuiIconTime.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTime.svg rename to projects/icons/src/tuiIconTime.svg diff --git a/projects/icons/src/icons/src/tuiIconTimeLarge.svg b/projects/icons/src/tuiIconTimeLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTimeLarge.svg rename to projects/icons/src/tuiIconTimeLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconToggleOff.svg b/projects/icons/src/tuiIconToggleOff.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconToggleOff.svg rename to projects/icons/src/tuiIconToggleOff.svg diff --git a/projects/icons/src/icons/src/tuiIconToggleOffLarge.svg b/projects/icons/src/tuiIconToggleOffLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconToggleOffLarge.svg rename to projects/icons/src/tuiIconToggleOffLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconToggleOn.svg b/projects/icons/src/tuiIconToggleOn.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconToggleOn.svg rename to projects/icons/src/tuiIconToggleOn.svg diff --git a/projects/icons/src/icons/src/tuiIconToggleOnLarge.svg b/projects/icons/src/tuiIconToggleOnLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconToggleOnLarge.svg rename to projects/icons/src/tuiIconToggleOnLarge.svg diff --git a/projects/icons/src/tuiIconToolbarAttach.svg b/projects/icons/src/tuiIconToolbarAttach.svg new file mode 100644 index 000000000000..a9ff7e2f8fc0 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarAttach.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarBold.svg b/projects/icons/src/tuiIconToolbarBold.svg new file mode 100644 index 000000000000..6f8f2a1cc1c7 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarBold.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarClearFormat.svg b/projects/icons/src/tuiIconToolbarClearFormat.svg new file mode 100644 index 000000000000..afbb11c44bef --- /dev/null +++ b/projects/icons/src/tuiIconToolbarClearFormat.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarCode.svg b/projects/icons/src/tuiIconToolbarCode.svg new file mode 100644 index 000000000000..d1e3db4de669 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarCode.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarColor.svg b/projects/icons/src/tuiIconToolbarColor.svg new file mode 100644 index 000000000000..4499e36efa44 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarColor.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarFont.svg b/projects/icons/src/tuiIconToolbarFont.svg new file mode 100644 index 000000000000..8d88e02f56b6 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarFont.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarFormat.svg b/projects/icons/src/tuiIconToolbarFormat.svg new file mode 100644 index 000000000000..ac9ce5471334 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarFormat.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarHilite.svg b/projects/icons/src/tuiIconToolbarHilite.svg new file mode 100644 index 000000000000..6acc59d1591a --- /dev/null +++ b/projects/icons/src/tuiIconToolbarHilite.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/projects/icons/src/tuiIconToolbarHr.svg b/projects/icons/src/tuiIconToolbarHr.svg new file mode 100644 index 000000000000..d76457a53647 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarHr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarImg.svg b/projects/icons/src/tuiIconToolbarImg.svg new file mode 100644 index 000000000000..4da8f3012c4b --- /dev/null +++ b/projects/icons/src/tuiIconToolbarImg.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarIndent.svg b/projects/icons/src/tuiIconToolbarIndent.svg new file mode 100644 index 000000000000..78fd2a306e04 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarIndent.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarItalic.svg b/projects/icons/src/tuiIconToolbarItalic.svg new file mode 100644 index 000000000000..cf3fbe16104d --- /dev/null +++ b/projects/icons/src/tuiIconToolbarItalic.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarJustifyCenter.svg b/projects/icons/src/tuiIconToolbarJustifyCenter.svg new file mode 100644 index 000000000000..d1def9fea6cb --- /dev/null +++ b/projects/icons/src/tuiIconToolbarJustifyCenter.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarJustifyFull.svg b/projects/icons/src/tuiIconToolbarJustifyFull.svg new file mode 100644 index 000000000000..13acf1f390d6 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarJustifyFull.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarJustifyLeft.svg b/projects/icons/src/tuiIconToolbarJustifyLeft.svg new file mode 100644 index 000000000000..31023cff0944 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarJustifyLeft.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarJustifyRight.svg b/projects/icons/src/tuiIconToolbarJustifyRight.svg new file mode 100644 index 000000000000..3daf20129244 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarJustifyRight.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarLink.svg b/projects/icons/src/tuiIconToolbarLink.svg new file mode 100644 index 000000000000..bd198c079ef9 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarLink.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarOL.svg b/projects/icons/src/tuiIconToolbarOL.svg new file mode 100644 index 000000000000..330443f16f3d --- /dev/null +++ b/projects/icons/src/tuiIconToolbarOL.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarOutdent.svg b/projects/icons/src/tuiIconToolbarOutdent.svg new file mode 100644 index 000000000000..3da14d50190f --- /dev/null +++ b/projects/icons/src/tuiIconToolbarOutdent.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarQuote.svg b/projects/icons/src/tuiIconToolbarQuote.svg new file mode 100644 index 000000000000..c4914c1e4807 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarQuote.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarRedo.svg b/projects/icons/src/tuiIconToolbarRedo.svg new file mode 100644 index 000000000000..8c05e373dad6 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarRedo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarStrikeThrough.svg b/projects/icons/src/tuiIconToolbarStrikeThrough.svg new file mode 100644 index 000000000000..0f63ca88b49a --- /dev/null +++ b/projects/icons/src/tuiIconToolbarStrikeThrough.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarSubscript.svg b/projects/icons/src/tuiIconToolbarSubscript.svg new file mode 100644 index 000000000000..b071fb05437b --- /dev/null +++ b/projects/icons/src/tuiIconToolbarSubscript.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarSuperscript.svg b/projects/icons/src/tuiIconToolbarSuperscript.svg new file mode 100644 index 000000000000..bff710ba7dd9 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarSuperscript.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarTeX.svg b/projects/icons/src/tuiIconToolbarTeX.svg new file mode 100644 index 000000000000..b1f3ad311534 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarTeX.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarTransparent.svg b/projects/icons/src/tuiIconToolbarTransparent.svg new file mode 100644 index 000000000000..ef51476030ca --- /dev/null +++ b/projects/icons/src/tuiIconToolbarTransparent.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarUL.svg b/projects/icons/src/tuiIconToolbarUL.svg new file mode 100644 index 000000000000..775bc8db5f92 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarUL.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarUnderline.svg b/projects/icons/src/tuiIconToolbarUnderline.svg new file mode 100644 index 000000000000..dda137ffb42b --- /dev/null +++ b/projects/icons/src/tuiIconToolbarUnderline.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/projects/icons/src/tuiIconToolbarUndo.svg b/projects/icons/src/tuiIconToolbarUndo.svg new file mode 100644 index 000000000000..cf38f9ca1753 --- /dev/null +++ b/projects/icons/src/tuiIconToolbarUndo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/icons/src/icons/src/tuiIconTooltip.svg b/projects/icons/src/tuiIconTooltip.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTooltip.svg rename to projects/icons/src/tuiIconTooltip.svg diff --git a/projects/icons/src/icons/src/tuiIconTooltipLarge.svg b/projects/icons/src/tuiIconTooltipLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTooltipLarge.svg rename to projects/icons/src/tuiIconTooltipLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconTrash.svg b/projects/icons/src/tuiIconTrash.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTrash.svg rename to projects/icons/src/tuiIconTrash.svg diff --git a/projects/icons/src/icons/src/tuiIconTrashLarge.svg b/projects/icons/src/tuiIconTrashLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconTrashLarge.svg rename to projects/icons/src/tuiIconTrashLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconUndo.svg b/projects/icons/src/tuiIconUndo.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUndo.svg rename to projects/icons/src/tuiIconUndo.svg diff --git a/projects/icons/src/icons/src/tuiIconUndoLarge.svg b/projects/icons/src/tuiIconUndoLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUndoLarge.svg rename to projects/icons/src/tuiIconUndoLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconUpload.svg b/projects/icons/src/tuiIconUpload.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUpload.svg rename to projects/icons/src/tuiIconUpload.svg diff --git a/projects/icons/src/icons/src/tuiIconUploadLarge.svg b/projects/icons/src/tuiIconUploadLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUploadLarge.svg rename to projects/icons/src/tuiIconUploadLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconUser.svg b/projects/icons/src/tuiIconUser.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUser.svg rename to projects/icons/src/tuiIconUser.svg diff --git a/projects/icons/src/icons/src/tuiIconUsers.svg b/projects/icons/src/tuiIconUsers.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconUsers.svg rename to projects/icons/src/tuiIconUsers.svg diff --git a/projects/icons/src/icons/src/tuiIconVideo.svg b/projects/icons/src/tuiIconVideo.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconVideo.svg rename to projects/icons/src/tuiIconVideo.svg diff --git a/projects/icons/src/icons/src/tuiIconVideoLarge.svg b/projects/icons/src/tuiIconVideoLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconVideoLarge.svg rename to projects/icons/src/tuiIconVideoLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconViewListLarge.svg b/projects/icons/src/tuiIconViewListLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconViewListLarge.svg rename to projects/icons/src/tuiIconViewListLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconWarningLarge.svg b/projects/icons/src/tuiIconWarningLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconWarningLarge.svg rename to projects/icons/src/tuiIconWarningLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconWifiOffLarge.svg b/projects/icons/src/tuiIconWifiOffLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconWifiOffLarge.svg rename to projects/icons/src/tuiIconWifiOffLarge.svg diff --git a/projects/icons/src/icons/src/tuiIconWifiOnLarge.svg b/projects/icons/src/tuiIconWifiOnLarge.svg similarity index 100% rename from projects/icons/src/icons/src/tuiIconWifiOnLarge.svg rename to projects/icons/src/tuiIconWifiOnLarge.svg diff --git a/projects/kit/abstract/slider/slider.common.style.less b/projects/kit/abstract/slider/slider.common.style.less index b196af47ae64..8bb371c6f942 100644 --- a/projects/kit/abstract/slider/slider.common.style.less +++ b/projects/kit/abstract/slider/slider.common.style.less @@ -2,7 +2,7 @@ @height: 2px; @dotSmallSize: 8px; -@dotMediumSize: 10px; +@dotMediumSize: 16px; :host { display: block; diff --git a/projects/kit/components/calendar-month/calendar-month.component.ts b/projects/kit/components/calendar-month/calendar-month.component.ts index ccaae3e793ab..8eeef2f07893 100644 --- a/projects/kit/components/calendar-month/calendar-month.component.ts +++ b/projects/kit/components/calendar-month/calendar-month.component.ts @@ -78,7 +78,7 @@ export class TuiCalendarMonthComponent implements TuiWithOptionalMinMax) {} + constructor(@Inject(TUI_CALENDAR_MONTHS) readonly months: readonly string[]) {} @HostBinding('class._single') get isSingle(): boolean { diff --git a/projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts b/projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts index bf6172bd6f10..afec2b857324 100644 --- a/projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts +++ b/projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts @@ -24,5 +24,5 @@ export class TuiDataListGroupWrapperComponent @Input() @tuiDefaultProp() - labels: ReadonlyArray = []; + labels: readonly string[] = []; } diff --git a/projects/kit/components/field-error/field-error.component.ts b/projects/kit/components/field-error/field-error.component.ts index 01a1db4963f0..790220ae48ae 100644 --- a/projects/kit/components/field-error/field-error.component.ts +++ b/projects/kit/components/field-error/field-error.component.ts @@ -36,13 +36,13 @@ import {takeUntil} from 'rxjs/operators'; export class TuiFieldErrorComponent implements OnInit, OnDestroy { @Input() @tuiRequiredSetter() - set order(value: ReadonlyArray) { + set order(value: readonly string[]) { this.errorsOrder = value; this.updateErrorText(); } private firstError: TuiValidationError | null = null; - private errorsOrder: ReadonlyArray = []; + private errorsOrder: readonly string[] = []; private destroy$ = new Subject(); constructor( diff --git a/projects/kit/components/input-file/input-file.component.ts b/projects/kit/components/input-file/input-file.component.ts index 1bf959d56603..2619bda9db09 100644 --- a/projects/kit/components/input-file/input-file.component.ts +++ b/projects/kit/components/input-file/input-file.component.ts @@ -185,7 +185,7 @@ export class TuiInputFileComponent ); } - get acceptArray(): ReadonlyArray { + get acceptArray(): readonly string[] { return this.getAcceptArray(this.accept); } @@ -272,7 +272,7 @@ export class TuiInputFileComponent } @tuiPure - private getAcceptArray(accept: string): ReadonlyArray { + private getAcceptArray(accept: string): readonly string[] { return accept.toLowerCase().split(','); } diff --git a/projects/kit/components/input-month-range/input-month-range.component.ts b/projects/kit/components/input-month-range/input-month-range.component.ts index 9c70147f6224..627713614393 100644 --- a/projects/kit/components/input-month-range/input-month-range.component.ts +++ b/projects/kit/components/input-month-range/input-month-range.component.ts @@ -77,7 +77,7 @@ export class TuiInputMonthRangeComponent @Inject(NgControl) control: NgControl | null, @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef, - @Inject(TUI_MONTHS) private readonly months: ReadonlyArray, + @Inject(TUI_MONTHS) private readonly months: readonly string[], @Inject(TUI_TEXTFIELD_SIZE) private readonly textfieldSize: TuiTextfieldSizeDirective, ) { diff --git a/projects/kit/components/input-month/input-month.component.ts b/projects/kit/components/input-month/input-month.component.ts index 56f2c2e26770..b2363994906b 100644 --- a/projects/kit/components/input-month/input-month.component.ts +++ b/projects/kit/components/input-month/input-month.component.ts @@ -72,7 +72,7 @@ export class TuiInputMonthComponent @Inject(NgControl) control: NgControl | null, @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef, - @Inject(TUI_MONTHS) private readonly months: ReadonlyArray, + @Inject(TUI_MONTHS) private readonly months: readonly string[], @Inject(TUI_TEXTFIELD_SIZE) private readonly textfieldSize: TuiTextfieldSizeDirective, ) { diff --git a/projects/kit/components/input-tag/input-tag.component.ts b/projects/kit/components/input-tag/input-tag.component.ts index 8525a025b078..c7af0481a8c0 100644 --- a/projects/kit/components/input-tag/input-tag.component.ts +++ b/projects/kit/components/input-tag/input-tag.component.ts @@ -43,7 +43,6 @@ import { TUI_HINT_WATCHED_CONTROLLER, TUI_TEXTIFELD_WATCHED_CONTROLLER, TuiAppearance, - TuiBrightness, TuiDataListDirective, TuiDataListHost, TuiHintControllerDirective, @@ -57,6 +56,7 @@ import { TuiTextfieldController, } from '@taiga-ui/core'; import {ALLOWED_SPACE_REGEXP} from '@taiga-ui/kit/components/tag'; +import {TuiStatus} from '@taiga-ui/kit/enums'; import {FIXED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers'; import {PolymorpheusContent} from '@tinkoff/ng-polymorpheus'; import {merge, Subject} from 'rxjs'; @@ -261,8 +261,10 @@ export class TuiInputTagComponent return this.hasCleaner || this.hasTooltip || this.iconAlignRight; } - get mode(): TuiBrightness { - return (this.modeDirective && this.modeDirective.mode) || TuiBrightness.Dark; + get status(): TuiStatus { + return this.modeDirective && this.modeDirective.mode + ? TuiStatus.Default + : TuiStatus.Primary; } get appearance(): TuiAppearance { diff --git a/projects/kit/components/input-tag/input-tag.module.ts b/projects/kit/components/input-tag/input-tag.module.ts index 02eab11d5512..b5ad3e671392 100644 --- a/projects/kit/components/input-tag/input-tag.module.ts +++ b/projects/kit/components/input-tag/input-tag.module.ts @@ -9,7 +9,6 @@ import { } from '@taiga-ui/cdk'; import { TuiHostedDropdownModule, - TuiModeModule, TuiScrollbarModule, TuiSvgModule, TuiTooltipModule, @@ -24,7 +23,6 @@ import {TuiInputTagComponent} from './input-tag.component'; CommonModule, FormsModule, PolymorpheusModule, - TuiModeModule, TuiFocusableModule, TuiHoveredModule, TuiActiveZoneModule, diff --git a/projects/kit/components/input-tag/input-tag.template.html b/projects/kit/components/input-tag/input-tag.template.html index 60dfb3492f08..9ac64326b6c0 100644 --- a/projects/kit/components/input-tag/input-tag.template.html +++ b/projects/kit/components/input-tag/input-tag.template.html @@ -47,7 +47,7 @@ -
+
@@ -56,6 +56,7 @@ #tag class="tag" automation-id="tui-input-tag__tag" + [status]="status" [leftContent]="getLeftContent(item)" [allowSpaces]="allowSpaces" [tuiFocusable]="false" diff --git a/projects/kit/components/pagination/test/pagination.component.spec.ts b/projects/kit/components/pagination/test/pagination.component.spec.ts index 978475772c4b..6fdb49df89ed 100644 --- a/projects/kit/components/pagination/test/pagination.component.spec.ts +++ b/projects/kit/components/pagination/test/pagination.component.spec.ts @@ -70,7 +70,7 @@ describe('TuiPaginationComponent', () => { fixture.detectChanges(); } - function getElements(): ReadonlyArray { + function getElements(): readonly number[] { return pageObject .getAllByAutomationId(`${testContext.prefix}element`) .map(({nativeElement}) => { diff --git a/projects/kit/components/radio/radio.component.ts b/projects/kit/components/radio/radio.component.ts index 69f1e141449c..564895a016ed 100644 --- a/projects/kit/components/radio/radio.component.ts +++ b/projects/kit/components/radio/radio.component.ts @@ -78,7 +78,7 @@ export class TuiRadioComponent } get appearance(): TuiAppearance { - return this.checked ? TuiAppearance.Primary : TuiAppearance.Secondary; + return this.checked ? TuiAppearance.Primary : TuiAppearance.Outline; } @HostBinding('class._disabled') diff --git a/projects/kit/components/toggle/toggle.template.html b/projects/kit/components/toggle/toggle.template.html index 4a4902ff4e59..245014d39911 100644 --- a/projects/kit/components/toggle/toggle.template.html +++ b/projects/kit/components/toggle/toggle.template.html @@ -42,6 +42,8 @@ class="checkbox" role="switch" automation-id="tui-toggle__checkbox" + [attr.aria-checked]="value" + [id]="id" [disabled]="disabled" [tuiChecked]="checked" [tuiFocusable]="focusable" diff --git a/projects/kit/directives/project-class/project-class.directive.ts b/projects/kit/directives/project-class/project-class.directive.ts index 082ccc19e54f..13563c820187 100644 --- a/projects/kit/directives/project-class/project-class.directive.ts +++ b/projects/kit/directives/project-class/project-class.directive.ts @@ -10,7 +10,7 @@ import {tuiDefaultProp} from '@taiga-ui/cdk'; export class TuiProjectClassDirective implements AfterViewChecked { @Input('tuiProjectClass') @tuiDefaultProp() - classNames: ReadonlyArray = []; + classNames: readonly string[] = []; constructor( @Inject(ElementRef) private readonly elementRef: ElementRef, diff --git a/projects/kit/tokens/i18n.ts b/projects/kit/tokens/i18n.ts index 795637eead1a..3e0d86c55712 100644 --- a/projects/kit/tokens/i18n.ts +++ b/projects/kit/tokens/i18n.ts @@ -86,7 +86,7 @@ export const TUI_PASSWORD_TEXTS = new InjectionToken<[string, string]>( }, ); -export const TUI_CALENDAR_MONTHS = new InjectionToken>( +export const TUI_CALENDAR_MONTHS = new InjectionToken( 'short calendar months i18n', { factory: () => inject(TUI_MONTHS).map(month => month.slice(0, 3)), diff --git a/projects/kit/utils/miscellaneous/create-time-periods.ts b/projects/kit/utils/miscellaneous/create-time-periods.ts index 63541619c5c8..784e09c5e63e 100644 --- a/projects/kit/utils/miscellaneous/create-time-periods.ts +++ b/projects/kit/utils/miscellaneous/create-time-periods.ts @@ -3,7 +3,7 @@ import {HOURS_IN_DAY, TuiTime} from '@taiga-ui/cdk'; export function tuiCreateTimePeriods( minHour: number = 0, maxHour: number = HOURS_IN_DAY, - minutes: ReadonlyArray = [0, 30], + minutes: readonly number[] = [0, 30], ): ReadonlyArray { const timeArray: Array = []; diff --git a/tsconfig.json b/tsconfig.json index 460a70f42ebf..fdb84aac8e28 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,7 +29,7 @@ "@taiga-ui/cdk": ["projects/cdk/index"], "@taiga-ui/cdk/*": ["projects/cdk/*"], "@taiga-ui/testing": ["projects/testing/src/public-api"], - "@taiga-ui/icons": ["projects/icons/src/public-api"], + "@taiga-ui/icons": ["projects/icons/public-api"], "@taiga-ui/core": ["projects/core/index"], "@taiga-ui/core/*": ["projects/core/*"], "@taiga-ui/kit": ["projects/kit/index"],