commit 71a3a661dc78260dbf55934d702ba71f77c1392a Author: Fuzi_fauzia Date: Fri Apr 19 12:53:45 2024 +0700 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b31f5e --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +# Modern Admin - Angular 15+ Bootstrap 5 Admin Dashboard Template + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.1 + +## Prerequisite Softwares +Min 2 GB free space on the drive +Node Js - Version 12+ +Git 2+ +npm install -g typescript +npm install -g @angular/cli + +## Development server + +Run `npm install` to install dependencies +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + + +## Firebase Deploy -- Only for production +node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --output-hashing=all +node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng s +firebase login +firebase projects:list +firebase use +firebase deploy +firebase firestore:indexes +## Types of Layouts + +Vertical Menu Template +Semi Dark Vertical Menu Template +Dark Nav Vertical Menu Template +Light Vertical Menu Template + +Vertical Modern Menu Template +Vertical Overlay Menu Template +Horizontal Menu Template +Full Width Horizontal Menu Template + +## Create New Module and Module + +# Add Module +ng g m components +cd .\src\app\components\ + +# Add component +ng g c +add new menu in menu setting +add new route in module and refernce to new +copy html to component html + +# c9 usage +cd modern-admin-angular +ng s --host 0.0.0.0 --port 8080 --disable-host-check +https://modern-admin-joshijimit.c9users.io:8080/ + +# Git commands +git pull origin wip_v1 +git push origin ui-dev-branch + +# Angular 8 Migrate + +git checkout angular8 +git pull origin angular8 +(likely to conflict with package lock file, needs to keep the existing file and avoid incoming changes. +onece merge conflict resolved with other files if any, run npm install which updates the lock file.) +git add . +git commit -m "latest pull in v8" +git push origin angular8 + +known change in Angular 8 +ViewChild should have second argument. +@ViewChild('labelImport', { static: true }) + +# CI - Gitlab +Auto deploy On merge to master branch + +# Disable experimentalDecorators warning +https://ihatetomatoes.net/how-to-remove-experimentaldecorators-warning-in-vscode/ + +# Open issue in Angular 10 +https://github.com/mattlewis92/angular-calendar/issues/1283 + +## Flickering issue +Remove all occurences of below text from index.html generated in dist folder +media="print" onload="this.media='all'" diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..2254548 --- /dev/null +++ b/angular.json @@ -0,0 +1,164 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "modern-admin": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "assets": [ + { + "glob": "**/*.@(svg|png|gif)", + "input": "./node_modules/photoswipe/src/css/default-skin", + "output": "/assets/media" + } + ], + "builder": "@angular-devkit/build-angular:browser", + "options": { + "aot": true, + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.css", + "node_modules/chartist/dist/chartist.css", + "node_modules/angular-calendar/css/angular-calendar.css", + "node_modules/flatpickr/dist/flatpickr.min.css", + "node_modules/ngx-ui-switch/ui-switch.component.css", + "node_modules/chartist-plugin-tooltips/dist/chartist-plugin-tooltip.css", + "node_modules/@swimlane/ngx-datatable/themes/bootstrap.css", + "src/assets/sass/main.scss", + "src/assets/jkanban/jkanban.min.css", + "node_modules/ngx-toastr/toastr.css", + "node_modules/photoswipe/dist/photoswipe.css", + "node_modules/photoswipe/dist/default-skin/default-skin.css" + ], + "scripts": [ + "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js", + "node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js" + ], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "serviceWorker": false + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "modern-admin:build" + }, + "configurations": { + "production": { + "browserTarget": "modern-admin:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "modern-admin:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "eslintConfig": ".eslintrc.json", + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } + } + } + }, + "modern-admin-e2e": { + "root": "e2e/", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "modern-admin:serve" + }, + "configurations": { + "production": { + "devServerTarget": "modern-admin:serve:production" + } + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "eslintConfig": ".eslintrc.json", + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } + } + } + } + }, + "defaultProject": "modern-admin", + "cli": { + "analytics": false, + "defaultCollection": "@angular-eslint/schematics" + } +} diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..7070360 --- /dev/null +++ b/changelog.md @@ -0,0 +1,7 @@ +# Modern Admin - Angular 11+ Bootstrap 5 Admin Dashboard Template + +V1.2 : [12-06-2019] : Added live chat functionality +V1.1 : [11-07-2019] : Added configuration to hide header icons + Added ngx-toastr in TODO application. + Added fully functional CRUD Firebase API integration for TODO App. +V1.0 : [10-12-2019] : Initial Release diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..3e13da8 --- /dev/null +++ b/e2e/src/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to modern-admin!'); + }); +}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts new file mode 100644 index 0000000..82ea75b --- /dev/null +++ b/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..fe773b5 --- /dev/null +++ b/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "experimentalDecorators": true, + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 0000000..dfd94e8 --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,21 @@ +/* + This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience. + It is not intended to be used to perform a compilation. + + To learn more about this file see: https://angular.io/config/solution-tsconfig. +*/ +{ + "files": [], + "references": [ + { + "path": "./src/tsconfig.app.json" + }, + { + "path": "./src/tsconfig.spec.json" + }, + { + "path": "./e2e/tsconfig.e2e.json" + } + ] + } + \ No newline at end of file diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..ccee98b --- /dev/null +++ b/firebase.json @@ -0,0 +1,31 @@ +{ + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ], + "headers": [ + { + "source": "/**", + "headers": [ + { + "key": "Cache-Control", + "value": "no-cache, no-store, must-revalidate" + } + ] + } + ] + }, + "firestore": { + "rules": "firestore.rules", + "indexes": "firestore.indexes.json" + } +} diff --git a/firestore.indexes.json b/firestore.indexes.json new file mode 100644 index 0000000..81f550b --- /dev/null +++ b/firestore.indexes.json @@ -0,0 +1,72 @@ +{ + "indexes": [ + { + "collectionGroup": "todo", + "queryScope": "COLLECTION", + "fields": [ + { + "fieldPath": "uid", + "order": "ASCENDING" + }, + { + "fieldPath": "createdDate", + "order": "DESCENDING" + } + ] + }, + { + "collectionGroup": "TODO", + "queryScope": "COLLECTION", + "fields": [ + { + "fieldPath": "uid", + "order": "ASCENDING" + }, + { + "fieldPath": "createdDate", + "order": "DESCENDING" + } + ] + }, + { + "collectionGroup": "todo", + "queryScope": "COLLECTION", + "fields": [ + { + "fieldPath": "uid", + "order": "ASCENDING" + }, + { + "fieldPath": "createdDate", + "order": "DESCENDING" + } + ] + }, + { + "collectionGroup": "todo", + "queryScope": "COLLECTION", + "fields": [ + { + "fieldPath": "assignedTo.uid", + "order": "ASCENDING" + }, + { + "fieldPath": "createdDate", + "order": "DESCENDING" + } + ] + } + ], + "fieldOverrides": [ + { + "collectionGroup": "TODO", + "fieldPath": "createdDate", + "indexes": [ + { + "order": "DESCENDING", + "queryScope": "COLLECTION" + } + ] + } + ] +} diff --git a/firestore.rules b/firestore.rules new file mode 100644 index 0000000..41251b0 --- /dev/null +++ b/firestore.rules @@ -0,0 +1,52 @@ +rules_version = '2'; +service cloud.firestore { + match /databases/{database}/documents { + // A read rule can be divided into get and list rules + match /todo/{todo} { + // Applies to single document read requests + allow get: if request.auth.uid == resource.data.uid; + + // Applies to queries and collection read requests + allow list; + } + + // A write rule can be divided into create, update, and delete rules + match /todo/{todo} { + // Applies to writes to nonexistent documents + allow create; + + // Applies to writes to existing documents + allow update; + + // Applies to delete operations + allow delete; + } + + // A read rule can be divided into get and list rules + match /users/ {users} { + // Applies to single document read requests + allow get; + + // Applies to queries and collection read requests + allow list; + + // Applies to writes to nonexistent documents + allow create; + } + + // A read rule can be divided into get and list rules + match /chatroom/ {chatroom} { + // Applies to single document read requests + allow get; + + // Applies to queries and collection read requests + allow list; + + // Applies to writes to nonexistent documents + allow create; + + // Applies to writes to existing documents + allow update; + } + } +} diff --git a/ngcc.config.js b/ngcc.config.js new file mode 100644 index 0000000..15f6b47 --- /dev/null +++ b/ngcc.config.js @@ -0,0 +1,9 @@ +module.exports = { + packages: { + 'angular2-text-mask': { + ignorableDeepImportMatchers: [ + /text-mask-core\//, + ] + }, + }, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..69e447e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,33447 @@ +{ + "name": "modern-admin-angular", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "modern-admin-angular", + "version": "0.0.0", + "hasInstallScript": true, + "dependencies": { + "chartist": "^0.11.4", + "html2canvas": "^1.0.0-rc.7", + "@angular/animations": "^15.0.4", + "save": "^2.9.0", + "@angular/core": "^15.0.4", + "@trafficguard/device-detector-js": "^2.2.1-3.13.0", + "quill-mention": "^3.1.0", + "quill": "^1.3.7", + "pug": "^3.0.2", + "ngx-dropzone": "^3.1.0", + "core-js": "^3.27.1", + "rxjs": "^7.5.5", + "@angular/router": "^15.0.4", + "@angular/fire": "^7.5.0", + "quill-delta": "^5.0.0", + "@webcomponents/webcomponentsjs": "^2.7.0", + "jspdf": "^2.5.1", + "lodash-es": "^4.17.21", + "bootstrap": "^5.2.3", + "ngx-echarts": "^15.0.1", + "tslib": "^2.4.1", + "ngx-image-cropper": "^6.3.2", + "photoswipe": "^4.1.3", + "util": "^0.12.5", + "ngx-ui-switch": "^14.0.3", + "@angular/localize": "^15.0.4", + "flatpickr": "^4.6.13", + "chartist-plugin-tooltips": "0.0.17", + "angular-calendar": "^0.31.0", + "jspdf-autotable": "^3.5.28", + "@fullcalendar/angular": "^6.0.2", + "@popperjs/core": "^2.11.6", + "ngx-masonry": "^14.0.1", + "angularx-flatpickr": "^7.0.0", + "file-saver": "^2.0.5", + "date-fns": "^2.28.0", + "icheck": "^1.0.2", + "chart.js": "^4.1.1", + "ngx-google-places-autocomplete": "^2.0.5", + "google-libphonenumber": "^3.2.31", + "@ng-select/ng-select": "^10.0.1", + "uuid": "^9.0.0", + "@cds/core": "^6.2.3", + "ng-multiselect-dropdown": "^0.3.9", + "css-select": "^5.1.0", + "@ng-bootstrap/ng-bootstrap": "^14.0.0", + "@ngx-loading-bar/core": "^6.0.2", + "sass": "^1.57.1", + "@ngx-loading-bar/router": "^6.0.2", + "deep-equal": "^2.0.5", + "tree-ngx": "^4.3.0", + "ngx-drag-and-drop-lists": "^1.3.3", + "ng-chartist": "^4.1.0", + "xlsx": "^0.18.5", + "ngx-perfect-scrollbar": "^10.1.1", + "ajv-keywords": "^5.1.0", + "@angular/forms": "^15.0.4", + "js-datepicker": "^5.18.2", + "clone": "^2.1.2", + "eventemitter3": "^5.0.0", + "@fnxone/ngx-photoswipe": "^1.0.11", + "ngx-countdown": "^15.0.0", + "angular-archwizard": "^7.0.0", + "@angular/platform-browser-dynamic": "^15.0.4", + "ngx-quill": "^20.0.1", + "@angular/common": "^15.0.4", + "ngx-toastr": "^16.0.1", + "@angular/cdk": "^15.0.4", + "@angular/platform-browser": "^15.0.4", + "echarts": "^5.4.1", + "autolinker": "^4.0.0", + "npm-force-resolutions": "0.0.10", + "@angular/compiler": "^15.0.4", + "@ngx-translate/core": "^14.0.0", + "@types/google.maps": "^3.51.0" + }, + "devDependencies": { + "eslint": "^8.30.0", + "@angular/compiler-cli": "^15.0.4", + "@angular/language-service": "^15.0.4", + "@types/jspdf": "^2.0.0", + "@angular-eslint/eslint-plugin": "15.1.0", + "@types/jasminewd2": "^2.0.8", + "@angular-eslint/builder": "15.1.0", + "karma": "^6.4.1", + "zone.js": "~0.12.0", + "ng2-charts": "^4.1.1", + "@angular-eslint/eslint-plugin-template": "15.1.0", + "firebaseui": "^6.0.2", + "ngx-spinner": "^15.0.1", + "karma-jasmine": "^5.1.0", + "@typescript-eslint/parser": "5.48.0", + "@angular/cli": "^15.0.4", + "karma-chrome-launcher": "^3.1.1", + "jasmine-core": "~4.5.0", + "postcss": "^8.4.20", + "@angular-eslint/schematics": "15.1.0", + "@swimlane/ngx-datatable": "20.1.0", + "ng-block-ui": "^3.0.2", + "ngx-clipboard": "^15.1.0", + "typescript": "^4.8.4", + "@types/jasmine": "^4.3.1", + "@types/node": "^18.11.18", + "ts-node": "~10.9.1", + "ngx-custom-validators": "^11.0.0", + "jasmine-spec-reporter": "~7.0.0", + "@typescript-eslint/eslint-plugin": "5.48.0", + "saas": "^1.0.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "@angular-devkit/build-webpack": "^0.1500.4", + "@types/chartist": "^0.9.38", + "@angular-eslint/template-parser": "15.1.0", + "@angular-devkit/build-angular": "^15.0.4", + "karma-jasmine-html-reporter": "^2.0.0", + "resize-observer-polyfill": "^1.5.1", + "firebase": "^9.15.0", + "@types/echarts": "^4.9.15" + }, + "peerDependencies": { + "postcss": "^8.3.5" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@schematics/update/node_modules/@angular-devkit/schematics": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.13.tgz", + "integrity": "sha512-DZBmfYE6xIfC6PDMvQpR8B31TtLWOmSeTQPnmSm9gj6OZpyqFqoGWOz/0l05FH6zC8HLthAAFJSEnPYyhzWDvg==", + "dependencies": { + "@angular-devkit/core": "9.1.13", + "ora": "4.0.3", + "rxjs": "6.5.4" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.0.tgz", + "integrity": "sha512-Y8Cpuheai61jCdVflt437I94n8cdRbXY0e1dQMmTWHCShJUfWwpa5y2ZMnxClWnorXy9hC/3yNZMVlu79f1zGA==", + "dependencies": { + "@firebase/app": "0.9.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/critters/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@schematics/update/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/@angular/localize": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.0.4.tgz", + "integrity": "sha512-IuvsPT5fUyf5yn58yzXbD/Mxk3MAbVbI78CRKN2CWew6jTXuiVmaxu4cbL/a2PHhq1led318PAdCMk//Dz4Ddg==", + "dependencies": { + "@babel/core": "7.19.3", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "15.0.4", + "@angular/compiler-cli": "15.0.4" + } + }, + "node_modules/terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-15.1.0.tgz", + "integrity": "sha512-Vt59o7wq3UOgHSCrOaHg0SgxgbAGhG0ofNQwd7sLqNP2/w/90dWY2jwWXIVSuZ+BmfVj3wgNi3KujbSWJP1cfg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "@typescript-eslint/utils": "5.44.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/@scarf/scarf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.1.tgz", + "integrity": "sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==", + "hasInstallScript": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "http-proxy-middleware": "^2.0.3", + "p-retry": "^4.5.0", + "@types/express": "^4.17.13", + "compression": "^1.7.4", + "webpack-dev-middleware": "^5.3.1", + "html-entities": "^2.3.2", + "ansi-html-community": "^0.0.8", + "@types/connect-history-api-fallback": "^1.3.5", + "ipaddr.js": "^2.0.1", + "@types/sockjs": "^0.3.33", + "sockjs": "^0.3.24", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "default-gateway": "^6.0.3", + "schema-utils": "^4.0.0", + "@types/bonjour": "^3.5.9", + "express": "^4.17.3", + "rimraf": "^3.0.2", + "spdy": "^4.0.2", + "open": "^8.0.9", + "@types/ws": "^8.5.1", + "selfsigned": "^2.1.1", + "connect-history-api-fallback": "^2.0.0", + "ws": "^8.4.2", + "serve-index": "^1.9.1", + "graceful-fs": "^4.2.6" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@schematics/update/node_modules/rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.0.tgz", + "integrity": "sha512-iO0fspVpiVOGxR08Y51nXoSMPH/bdRkRVQXYo4wuDDfQoZ5WZ0DXQuE0kXy3/T9QgqXdr8tSU0P0nil/jvnOcg==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.0", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dependencies": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/critters/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/@trafficguard/device-detector-js": { + "version": "2.2.1-3.13.0", + "resolved": "https://registry.npmjs.org/@trafficguard/device-detector-js/-/device-detector-js-2.2.1-3.13.0.tgz", + "integrity": "sha512-dlcdmoR2TZF2h2ufBlGJ16UqPWf1vvvqB3nwbxKW8HiCc8d7wds1L69CWPeHWYLKWg0F0Ur9NLXcyAzmH7XFmA==", + "engines": { + "node": ">= 8.11.4" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/@schematics/update/node_modules/npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dependencies": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/copy-concurrently/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@angular-devkit/core": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.0.5.tgz", + "integrity": "sha512-SxLvbpqcQfb1qRykZjqRUG/8uC1FYpneyNV9S9YglXg4JhCFhfc9AnKxuu9Bm/O8V7FghOIlGWGglCdPHra0pw==", + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@schematics/update/node_modules/http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dependencies": { + "agent-base": "4", + "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "node_modules/critters/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ngx-custom-validators/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.1.0.tgz", + "integrity": "sha512-zcOx+PnYuVDIG3wd/JVzCYdEUarKGtgIcN4iU9ZF+BVk5e8i9cbD3U8U3EDJKbrrokbFl9GBBJMCOa6XYTGJwQ==", + "dev": true + }, + "node_modules/deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dependencies": { + "is-date-object": "^1.0.5", + "regexp.prototype.flags": "^1.4.3", + "object-keys": "^1.1.1", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "which-collection": "^1.0.1", + "get-intrinsic": "^1.1.3", + "object-is": "^1.1.5", + "is-shared-array-buffer": "^1.0.2", + "object.assign": "^4.1.4", + "which-boxed-primitive": "^1.0.2", + "is-regex": "^1.1.4", + "call-bind": "^1.0.2", + "side-channel": "^1.0.4", + "isarray": "^2.0.5", + "es-get-iterator": "^1.1.2", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1500.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1500.5.tgz", + "integrity": "sha512-n1L3Q2d7HoWFRRqihu3BAUB5xZFfz8LqQoHpVNl6HN1ugtmvqDUDoKrpYVH9LCKCqfJW2Cxssy+FERiDsihIJQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "15.0.5", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dependencies": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lit": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.0.tgz", + "integrity": "sha512-GUKVozhomdYlFVuB4UNipbPB5RcXNX4ns43uDA1gSTZN1oHe7mnj05fpYbESxXfxg/Gn905HTIzymCFrr/cn3A==", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.2.0", + "lit-html": "^2.6.0" + } + }, + "node_modules/@schematics/update/node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-tree/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/pug-code-gen/node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/jspdf": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.4.8" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.2.0", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@schematics/update/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001442", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", + "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/eslint": { + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "dev": true, + "dependencies": { + "ignore": "^5.2.0", + "eslint-scope": "^7.1.1", + "js-yaml": "^4.1.0", + "natural-compare": "^1.4.0", + "doctrine": "^3.0.0", + "file-entry-cache": "^6.0.1", + "is-glob": "^4.0.0", + "lodash.merge": "^4.6.2", + "eslint-visitor-keys": "^3.3.0", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0", + "import-fresh": "^3.0.0", + "espree": "^9.4.0", + "grapheme-splitter": "^1.0.4", + "imurmurhash": "^0.1.4", + "cross-spawn": "^7.0.2", + "@eslint/eslintrc": "^1.4.1", + "regexpp": "^3.2.0", + "eslint-utils": "^3.0.0", + "is-path-inside": "^3.0.3", + "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/module-importer": "^1.0.1", + "chalk": "^4.0.0", + "strip-json-comments": "^3.1.0", + "debug": "^4.3.2", + "ajv": "^6.10.0", + "@humanwhocodes/config-array": "^0.11.8", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "esutils": "^2.0.2", + "globals": "^13.19.0", + "minimatch": "^3.1.2", + "glob-parent": "^6.0.2", + "fast-deep-equal": "^3.1.3", + "esquery": "^1.4.0", + "find-up": "^5.0.0", + "optionator": "^0.9.1", + "escape-string-regexp": "^4.0.0", + "js-sdsl": "^4.1.4" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/critters/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@schematics/update/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/move-concurrently/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ngx-countdown": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-15.0.0.tgz", + "integrity": "sha512-AUmdLyqho8zj1hxryW2Zh8xyrvHqtVEH4SYDZHfbeJ3UungSF8SFH4oQlaTTeNAIvuc7oiazuNhqWXKz/m3jnQ==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@fullcalendar/angular": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-6.0.2.tgz", + "integrity": "sha512-y4A5115gOZ6DcZvwgk58nMramh1/iU6cA7Ac+YI6OKNt8+dsXwxPUjFFp96NfS98UFk6kQIwf0G2ajMSl9AnTA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "12 - 15", + "@angular/core": "12 - 15", + "@fullcalendar/core": "~6.0.2" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", + "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@types/jasmine": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.1.tgz", + "integrity": "sha512-Vu8l+UGcshYmV1VWwULgnV/2RDbBaO6i2Ptx7nd//oJPIZGhoI1YLST4VKagD2Pq/Bc2/7zvtvhM7F3p4SN7kQ==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@schematics/update/node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/@schematics/update/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/@schematics/update/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-15.1.0.tgz", + "integrity": "sha512-ctcA7OAV1wwFByW1te3uZwzySuIRlo8NblG5yUtgU5BXt3nXwIDwoSr3tvI2dRHobNHcXVQcOFVzyOdXD/vsIg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "eslint-scope": "^7.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ng-multiselect-dropdown/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@schematics/update/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@firebase/util": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.8.0.tgz", + "integrity": "sha512-clK6pTTxIiLMYz4UrvDTVAs2rIaOiroAuFdX67C0JalvEwzi6Vv8li6xAGj38tkj7Qax06mosM1fQkxf2h4VTg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@firebase/firestore": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.0.tgz", + "integrity": "sha512-aKwfZ73FmOV8e/dN0anDtrq6+1IhX4zmjxUcXcgaypZ14q6bq0QpUdlRxjsfiUQ5m3H3MwWWIFOcT5Xa89sIkw==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "@firebase/webchannel-wrapper": "0.9.0", + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.6.13", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "node_modules/log-symbols/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@npmcli/git": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", + "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "peer": true + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@schematics/update/node_modules/ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "dependencies": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/log-symbols/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@ng-select/ng-select": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-10.0.3.tgz", + "integrity": "sha512-Ma8pzKMI5TWnsKgOiONQLGeUeTko9gI6AtqpMMOVhrCktjtUSo9h5N17WomHRGtba9D7QviTZcR7UBhKOPwZ7g==", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.20.0", + "npm": ">= 6.0.0" + }, + "peerDependencies": { + "@angular/common": "<16.0.0", + "@angular/core": "<16.0.0", + "@angular/forms": "<16.0.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "isstream": "~0.1.2", + "oauth-sign": "~0.9.0", + "safe-buffer": "^5.1.2", + "is-typedarray": "~1.0.0", + "json-stringify-safe": "~5.0.1", + "performance-now": "^2.1.0", + "http-signature": "~1.2.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2", + "har-validator": "~5.1.3", + "extend": "~3.0.2", + "mime-types": "~2.1.19", + "tough-cookie": "~2.5.0", + "aws-sign2": "~0.7.0", + "caseless": "~0.12.0", + "aws4": "^1.8.0", + "forever-agent": "~0.6.1", + "combined-stream": "~1.0.6", + "form-data": "~2.3.2", + "qs": "~6.5.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/common": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.0.9.tgz", + "integrity": "sha512-QYJx+Y7Bmqdwtyk8TZDqF6io7gPaiZnUPrS/JbV/qB1QA8Q0OVaJSRRy/d0ahsc385+OiUhT7gVnbEh92oWXmQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "11.0.9", + "rxjs": "^6.5.3" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/@angular/router": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-15.0.4.tgz", + "integrity": "sha512-6cBUu1kSigORGpWq+Wc3hTLRQcJvtlaZ5OFOIzKGiBEPgezn/AzrWHi/bEccWLZAVFhbUOhcRn9GwudqiqX6+A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "15.0.4", + "@angular/core": "15.0.4", + "@angular/platform-browser": "15.0.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-15.1.0.tgz", + "integrity": "sha512-3RRDnxaCEI5DdKq3hipXvrxctPPssrUXnNbgczJRIJ3cssr4ndobCSNqUSepA6vWj5mWe7w+nnh4vgfhZ5keig==", + "dev": true, + "dependencies": { + "@angular-eslint/utils": "15.1.0", + "@typescript-eslint/utils": "5.44.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/dialog-polyfill": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.4.10.tgz", + "integrity": "sha512-j5yGMkP8T00UFgyO+78OxiN5vC5dzRQF3BEio+LhNvDbyfxWBsi3sfPArDm54VloaJwy2hm3erEiDWqHRC8rzw==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/critters/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/dompurify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==", + "optional": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/chartist": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/chartist/-/chartist-0.11.4.tgz", + "integrity": "sha512-H4AimxaUD738/u9Mq8t27J4lh6STsLi4BQHt65nOtpLk3xyrBPaLiLMrHw7/WV9CmsjGA02WihjuL5qpSagLYw==", + "engines": { + "node": ">=4.6.0" + } + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@angular/fire": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-7.5.0.tgz", + "integrity": "sha512-M/JJ5SKnpfNZFLKl0Awjn3r2NhURy2Mx+E8EzSDWSg1sHD7IThrynZYPUSZR+cd3KGsGoEacIP2x8Ra+0a+CVg==", + "dependencies": { + "semver": "^7.1.3", + "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "jsonc-parser": "^3.0.0", + "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "inquirer-autocomplete-prompt": "^1.0.1", + "triple-beam": "^1.3.0", + "tslib": "^2.0.0", + "fs-extra": "^8.0.1", + "file-loader": "^6.2.0", + "fuzzy": "^0.1.3", + "inquirer": "^8.1.1", + "ora": "^5.3.0", + "node-fetch": "^2.6.1", + "open": "^8.0.0", + "rxfire": "^6.0.0", + "firebase": "^9.8.0", + "winston": "^3.0.0" + }, + "peerDependencies": { + "@angular/common": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "@angular/core": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "@angular/platform-browser": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "@angular/platform-browser-dynamic": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "firebase-tools": "^9.9.0 || ^10.0.0 || ^11.0.0", + "rxjs": "~6.6.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "firebase-tools": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/chartist-plugin-tooltips": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/chartist-plugin-tooltips/-/chartist-plugin-tooltips-0.0.17.tgz", + "integrity": "sha512-frXv269MyRHfuhyZILdTTsNG4PP3+Ab0NkysdnMk73aN4w76oWarsGguuciYzZawKrctp8RZzU/W44A4+Y4vOg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/inquirer/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/saas": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/saas/-/saas-1.0.0.tgz", + "integrity": "sha512-FgayhFS18BlPfcyMcOqxD7PIyNyUjqyv8R+rsr3X2KRK2icEUL4uvWBF+lZ0IPqJIO2kUO0d20OXY+R+pdriqg==", + "dev": true + }, + "node_modules/duplexify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/@schematics/update/node_modules/@angular-devkit/core": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.13.tgz", + "integrity": "sha512-bwehVRsva9OWfh/yuEh9VU+0Gr1T7DHJLe8tpZk/VsIkGOD0IszEPZOIEK23bg32yiff9bh6qJEPMA7ZBYEQHg==", + "dependencies": { + "ajv": "6.12.3", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "node_modules/@schematics/update/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@types/jspdf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/jspdf/-/jspdf-2.0.0.tgz", + "integrity": "sha512-oonYDXI4GegGaG7FFVtriJ+Yqlh4YR3L3NVDiwCEBVG7sbya19SoGx4MW4kg1MCMRPgkbbFTck8YKJL8PrkDfA==", + "deprecated": "This is a stub types definition. jspdf provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "jspdf": "*" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-pick-manifest": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "dependencies": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "dependencies": { + "isbinaryfile": "^4.0.8", + "yargs": "^16.1.1", + "braces": "^3.0.2", + "body-parser": "^1.19.0", + "lodash": "^4.17.21", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "source-map": "^0.6.1", + "range-parser": "^1.2.1", + "qjobs": "^1.2.0", + "mime": "^2.5.2", + "connect": "^3.7.0", + "chokidar": "^3.5.1", + "ua-parser-js": "^0.7.30", + "http-proxy": "^1.18.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "log4js": "^6.4.1", + "socket.io": "^4.4.1", + "rimraf": "^3.0.2", + "tmp": "^0.2.1", + "glob": "^7.1.7", + "@colors/colors": "1.5.0", + "graceful-fs": "^4.2.6" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@types/google.maps": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.51.0.tgz", + "integrity": "sha512-44/oQYjc5D6kxBcI3Qk9rk3IIOMwnlEMWDV7pwPJ2YI89s5Q1OzDrFvR7QJ3LFrpVXEhig+gyagFg54+foinFg==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular/compiler-cli/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/compiler": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.0.4.tgz", + "integrity": "sha512-KtxgRJUGZamOXpIILFG2FTUW+bbc2phi/o6955/Q4LR1HOICQrYEy8PrT1Gp+lVXFKgDG+6cb01lH14LoBQvyw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "15.0.4" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==" + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-report/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.0.tgz", + "integrity": "sha512-DevuiUQujsG18NQ1fQ1g2X+75Vp1YfSxPsw363/HE2+ABmCWHf4ByPmxEf16y4PVcqJ2MZqYv8kXZYxzRJCS4g==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.0.tgz", + "integrity": "sha512-CJFHWGMvWRkkvLPTvWdLrEYnfH7WS9zFLsWctSzRjQnzg6dQUTs5FDyg9RN7BIWoaSr9q7FTxkRnsOgardDPLA==", + "dependencies": { + "@firebase/app-check": "0.6.0", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/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, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/@firebase/functions": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.0.tgz", + "integrity": "sha512-na/+7uc9ViQVBadEsCVjBnbZsfUCMyS/x6SID1Nz4Z5nkhuxrls9Jcv7jc28tMqHR0VpoGq8W6oLProyjT8JPg==", + "dependencies": { + "@firebase/app-check-interop-types": "0.2.0", + "@firebase/auth-interop-types": "0.2.0", + "@firebase/component": "0.6.0", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@schematics/update/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.0.tgz", + "integrity": "sha512-Qk9W9lVmTO67bR5jCaQ9HqS9MipkCuPGKCcO5JnnDd/p+Y2beWzScYxwzYGh9pEga3qzDAMSCB1PYoNgNTMzew==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/messaging": "0.12.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@schematics/update/node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", + "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/compiler": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.0.9.tgz", + "integrity": "sha512-H2IfS6ciPWN0kmKhbwDuvS8ry5GcRFKfoyA/HGk+nQwCE2nAHC8VNwldbtoisO7XfRWr/uaTrh6z/vdfxsAiHw==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/read-package-tree/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dependencies": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "minipass-flush": "^1.0.5", + "unique-filename": "^2.0.0", + "infer-owner": "^1.0.4", + "@npmcli/move-file": "^2.0.0", + "promise-inflight": "^1.0.1", + "tar": "^6.1.11", + "minipass": "^3.1.6", + "minipass-pipeline": "^1.2.4", + "lru-cache": "^7.7.1", + "ssri": "^9.0.0", + "chownr": "^2.0.0", + "mkdirp": "^1.0.4", + "minipass-collect": "^1.0.2", + "fs-minipass": "^2.1.0", + "@npmcli/fs": "^2.1.0", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "glob": "^8.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dependencies": { + "agent-base": "4", + "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.0.tgz", + "integrity": "sha512-7Mt2qzwvu5X3Qxz24gjj0qITrBsMmy1W4vGBP8TZRuQrjA4OTlGVCTG8ysvweZ3xpdl1XGhBsIjo2KjfOPg0xA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@schematics/update/node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular-devkit/architect": { + "version": "0.901.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.13.tgz", + "integrity": "sha512-vwIVlG+4TJKcnwMcgpkrMXXzjKnk87AEmgERynJVxGYpRJYppHWd6ul7bYdJQATuLUNbJrgdc+lvU4PZqi8Z2A==", + "dependencies": { + "@angular-devkit/core": "9.1.13", + "rxjs": "6.5.4" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/@angular/animations": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-15.0.4.tgz", + "integrity": "sha512-fOqf7fHX9aspIUmlOsig8ZyZlalU+eIBsUgu4QpH9+vfQzGCJcKIjPClW4Yb7rkNlyLlfQqaICOxG9gOxuEI7Q==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "15.0.4" + } + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/@schematics/update/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/sass-loader": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz", + "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dependencies": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@schematics/update/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/socket.io": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.0.tgz", + "integrity": "sha512-brk8IN4ErWiZoB/UdJ0mWZhQOKt90ztv4MUwQjhuYJ4iwnVMz0Mzj9+tplU1hVpSZXdfbKQFfRN9kp/3sTiyWw==", + "dependencies": { + "@firebase/analytics": "0.9.0", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/angularx-flatpickr": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/angularx-flatpickr/-/angularx-flatpickr-7.0.0.tgz", + "integrity": "sha512-XPU+Dxt9hsFf4yDS5CDp0Zikz5alxkvDFFj8fyToHn6b8aF7jJNzUZ05dnUKq5Gcit/G3yuW5mtcDNO2klY+xA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=5.0.0", + "@angular/forms": ">=5.0.0", + "flatpickr": "^4.5.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/masonry-layout": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", + "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", + "peer": true, + "dependencies": { + "get-size": "^2.0.2", + "outlayer": "^2.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/pacote": { + "version": "15.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.0.6.tgz", + "integrity": "sha512-dQwcz/sME7QIL+cdrw/jftQfMMXxSo17i2kJ/gnhBhUvvBAsxoBu1lw9B5IzCH/Ce8CvEkG/QYZ6txzKfn0bTw==", + "dev": true, + "dependencies": { + "@npmcli/installed-package-contents": "^2.0.1", + "tar": "^6.1.11", + "minipass": "^3.1.6", + "read-package-json-fast": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/git": "^4.0.0", + "read-package-json": "^6.0.0", + "proc-log": "^3.0.0", + "ssri": "^10.0.0", + "npm-packlist": "^7.0.0", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "promise-retry": "^2.0.1", + "npm-registry-fetch": "^14.0.0", + "fs-minipass": "^2.1.0", + "npm-pick-manifest": "^8.0.0", + "npm-package-arg": "^10.0.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/rxfire/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@schematics/update/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.0.tgz", + "integrity": "sha512-ckU4mkziDnsFKxgYv+OAJHPuNpti2RjyoeIAqz3EqRHAsYFC70U5w4aXC2Sbu2jJp3Ba2BoD7MV/4Qb2A7CJtw==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/firestore": "3.8.0", + "@firebase/firestore-types": "2.5.1", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha512-wYid1zXctNLgas1pZ8q8ChdsnGg4DHZVqMzJ7pOE85q5BppAEXgQGSoOjVgrcw5yI7pzz49p9AfMhM7z5PRuaw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "minipass-flush": "^1.0.5", + "minipass-fetch": "^2.0.3", + "minipass": "^3.1.6", + "minipass-pipeline": "^1.2.4", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "http-cache-semantics": "^4.1.0", + "ssri": "^9.0.0", + "socks-proxy-agent": "^7.0.0", + "cacache": "^16.1.0", + "https-proxy-agent": "^5.0.0", + "promise-retry": "^2.0.1", + "minipass-collect": "^1.0.2", + "http-proxy-agent": "^5.0.0", + "agentkeepalive": "^4.2.1", + "negotiator": "^0.6.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.0.tgz", + "integrity": "sha512-tcofcrQKBOo5Wrz59onWtZDJfVW09auvG/XRh7lZ4yfEWdGerTJXmEdQU6j3E8AnJ3X91BYltNYhh0ZJOoCJqQ==", + "dependencies": { + "@firebase/auth": "0.21.0", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-echarts": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/ngx-echarts/-/ngx-echarts-15.0.1.tgz", + "integrity": "sha512-tsGQxkEF232P7Q8tWJ45elKerHNWCbGJ+z7UMPFs7rYdQk4fyGDXu9pK6+R7OPVklCF0+7V4EiL7eHRfN+MYIg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "echarts": ">=5.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/calendar-utils": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.10.4.tgz", + "integrity": "sha512-gBK4xCJ42yjaUKwuUha6cZOfxAmGzvSgbdAaX3xLRioeKbYoOK1x1qeD6dch72rsMZlTgATPbBBx42bnkStqgQ==" + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.0.1.tgz", + "integrity": "sha512-JF4U4IIix+g6VBFfG8stf0Un5K//ypoN+pTuRs6kjUhsHBsa2m7yKE6bCe3fMhatFZFr2fcSswDzRUnAUiHhWg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "@angular/forms": "^15.0.0", + "@angular/localize": "^15.0.0", + "@popperjs/core": "^2.11.6", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@swimlane/ngx-datatable": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-datatable/-/ngx-datatable-20.1.0.tgz", + "integrity": "sha512-oHnnx1QRNmv10l5UME13v5JP3M3GesM9K3QH6TRYo2C7UbbhY7vL5EZ4HGqcvtMMW4FOzqNOSltE++IVL99F3g==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=11.0.2", + "@angular/core": ">=11.0.2", + "@angular/platform-browser": ">=11.0.2", + "rxjs": "^6.6.3 || ^7.4.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proxy-addr/node_modules/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, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/lit-html": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.6.0.tgz", + "integrity": "sha512-slNAAYfvC7LxeryDOnPFl5uTpxGYGJ6UR9SFmfY+gQ+sf30z1atDPXlgjcSTtwymNdlwDhfGjq+EemQRXp9z1g==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "peer": true, + "dependencies": { + "desandro-matches-selector": "^2.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/flush-write-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/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, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ngx-image-cropper": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/ngx-image-cropper/-/ngx-image-cropper-6.3.2.tgz", + "integrity": "sha512-w24kxXyXxwLdnaZlaIG8KI71sdw4vp+O7uYLTaWmxAbFOKOv9o6ko2CmtC7u5B3jXD0OuOzQgJJSGkJZZbnNcA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/quill/node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ngx-clipboard": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.1.0.tgz", + "integrity": "sha512-dUJl1cNtdkCqL953oAhP7wmUPFrqW2aDg5OPhwPU9R3cLEdQgU2NbsHEUz4zaPyEopTXu8SR37onVm1Ep8qOHg==", + "dev": true, + "dependencies": { + "ngx-window-token": ">=6.0.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0" + } + }, + "node_modules/desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==", + "peer": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/@schematics/update/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/stackblur-canvas": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz", + "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@types/express": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.31", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@schematics/update/node_modules/npm-pick-manifest/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1500.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1500.5.tgz", + "integrity": "sha512-UsotO4snRjkd6JdC45zjWy+LR+FtM1sVgTi2MA4/tiVOTTc/M8cHWFeAg94+mqC773WnisNKiJAyHnW4SXjhiA==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1500.5", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/ngx-custom-validators/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/material-design-lite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/material-design-lite/-/material-design-lite-1.3.0.tgz", + "integrity": "sha512-ao76b0bqSTKcEMt7Pui+J/S3eVF0b3GWfuKUwfe2lP5DKlLZOwBq37e0/bXEzxrw7/SuHAuYAdoCwY6mAYhrsg==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@schematics/update/node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/core": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.0.9.tgz", + "integrity": "sha512-J0ff3UK2Cw7Z0eNLtUXrpMFvmmkvPPZWLYIwimyc1pZys7qsIVT6cy2ybGEOhbJgC6qt3fo0DoJV3pGXTalb8A==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3", + "zone.js": "~0.10.3" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/angular-resizable-element": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/angular-resizable-element/-/angular-resizable-element-7.0.2.tgz", + "integrity": "sha512-/BGuNiA38n9klexHO1xgnsA3VYigj9v+jUGjKtBRgfB26bCxZKsNWParSu2k3EqbATrfAJC4Nl8f7cORpJFf4w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/@schematics/update/node_modules/npm-registry-fetch/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@schematics/update/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/@ngx-translate/core": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", + "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=13.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@types/zrender": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.3.tgz", + "integrity": "sha512-EPI269lkHNsObwILJ1k1z7znLjKyePuWRy/XKK0shSGpBb9cIX307arcwJV4+2NeZj5wEjN06r4D8yFv7sI06g==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-gyp": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/@schematics/update/node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/rxfire": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/rxfire/-/rxfire-6.0.3.tgz", + "integrity": "sha512-77nkyffHh7jgfi1YA/N9RI+kWxYpgKk6GRML1lyersvaqbJt4hkvWwk1rWib9Rb5Lr5mT+Ha45lu7nM79sJCZA==", + "dependencies": { + "tslib": "^1.9.0 || ~2.1.0" + }, + "peerDependencies": { + "firebase": "^9.0.0", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular/compiler": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.13.tgz", + "integrity": "sha512-9MLB1Xx7odKuxDoybVwiOB1ZEUZpL8FurYm4RVuW39ntsUt0IMC9Hb8UagZLTAWhaWSHydkD/KBQVVobGqd0lA==", + "peerDependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@types/raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==", + "optional": true + }, + "node_modules/ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ngx-drag-and-drop-lists": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/ngx-drag-and-drop-lists/-/ngx-drag-and-drop-lists-1.3.3.tgz", + "integrity": "sha512-0s3xNcdzTzospHdiftS5yCoYrrLSqSOOu37IzzB11r/fhmrpJR2+I7HYJJWwroEni7arlADqSldnMv3y3UKYLQ==", + "dependencies": { + "@angular/cli": "~9.1.13", + "@angular/compiler": "~9.1.13", + "@angular/compiler-cli": "~9.1.13", + "typescript": "~3.8.3" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/@schematics/update/node_modules/npm-registry-fetch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "dependencies": { + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "JSONStream": "^1.3.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ngx-custom-validators/node_modules/zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "engines": { + "node": "*" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/@firebase/app": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.0.tgz", + "integrity": "sha512-sa15stSK6FoGW4mCeAVDt0TvBFxPjvNcG2rhacGudOzMaW3g2TS326zXTFG+p5jnTCPZ2SO5TTSiGHn1NNcD9Q==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/ramda": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", + "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@cds/core": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.2.3.tgz", + "integrity": "sha512-hat5e/yYRpRHh/9Evrm36lxYy7m94nurIIOYHZ1O5yOS464UVp1eeVFOh2n+l74QdjJw9tDsdFIOQHV5UWgRpw==", + "dependencies": { + "lit": "^2.1.3", + "ramda": "^0.28.0", + "tslib": "^2.3.1" + }, + "optionalDependencies": { + "@cds/city": "^1.1.0", + "modern-normalize": "1.1.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/ngx-toastr": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-16.0.2.tgz", + "integrity": "sha512-J6SueNCaGwm/gpXdsG56UzMEAcuayYWEW6NmIrNoe5iP7lOUohg4xYXWipkbMH9wGWmLPD9gU8AufUVWMplCvg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=14.0.0-0", + "@angular/core": ">=14.0.0-0", + "@angular/platform-browser": ">=14.0.0-0" + } + }, + "node_modules/sass": { + "version": "1.57.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", + "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/inquirer/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/@schematics/update/node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@schematics/update/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + }, + "node_modules/quill-mention": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/quill-mention/-/quill-mention-3.1.0.tgz", + "integrity": "sha512-uyjGK8QPJHEcjvNc3wUJy6a05Oiu+6JJ0N9SFAwjYHYThgMzlKucyD975fq28Mr1it8ZFRNiRMPa0sCiVOAEwA==", + "dependencies": { + "quill": "^1.3.7" + } + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", + "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@schematics/update/node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@schematics/update/node_modules/pacote/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cacache": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.2.tgz", + "integrity": "sha512-rYUs2x4OjSgCQND7nTrh21AHIBFgd7s/ctAYvU3a8u+nK+R5YaX/SFPDYz4Azz7SGL6+6L9ZZWI4Kawpb7grzQ==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@schematics/update/node_modules/agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.0.tgz", + "integrity": "sha512-33H04h4tx9NVEADti0haZTNxssCnqZlMlyjri5k9kwDWAe2W1iENroZt7VWwmsPhlWUD8sSoPXSHqd0DdL29Pw==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote/node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/ng-multiselect-dropdown": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/ng-multiselect-dropdown/-/ng-multiselect-dropdown-0.3.9.tgz", + "integrity": "sha512-y5fb8SVz8c59vEJGVe5XZ5ov6LZNoO8FqMxCBvpZKqw9tY1+f7UCDfILleOWPy8QMxO2Fpr8b+B+Az0zOS6b9g==", + "dependencies": { + "tslib": "^1.9.0" + }, + "peerDependencies": { + "@angular/common": ">=2.0.0", + "@angular/core": ">=2.0.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ng2-charts": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", + "dev": true, + "dependencies": { + "lodash-es": "^4.17.15", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": ">=14.0.0", + "@angular/common": ">=14.0.0", + "@angular/core": ">=14.0.0", + "chart.js": "^3.4.0 || ^4.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.0.tgz", + "integrity": "sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/@schematics/update/node_modules/npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.7.0.tgz", + "integrity": "sha512-n/8pYd82hc9XItV3Pa2KGpnuJ/2h/n/oTAaBberhe6GeyWQPnsmwwRK94W3GxUwBA/ZsszBAYZd7w7tTE+6XXA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@schematics/update/node_modules/pacote": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "dependencies": { + "unique-filename": "^1.1.1", + "semver": "^5.6.0", + "infer-owner": "^1.0.4", + "safe-buffer": "^5.1.2", + "which": "^1.3.1", + "get-stream": "^4.1.0", + "promise-inflight": "^1.0.1", + "tar": "^4.4.10", + "minipass": "^2.3.5", + "osenv": "^0.1.5", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "bluebird": "^3.5.3", + "ssri": "^6.0.1", + "protoduck": "^5.0.1", + "chownr": "^1.1.2", + "npm-packlist": "^1.1.12", + "normalize-package-data": "^2.4.0", + "cacache": "^12.0.2", + "npm-normalize-package-bin": "^1.0.0", + "promise-retry": "^1.1.1", + "minimatch": "^3.0.4", + "npm-registry-fetch": "^4.0.0", + "mkdirp": "^0.5.1", + "npm-pick-manifest": "^3.0.0", + "rimraf": "^2.6.2", + "glob": "^7.1.3", + "npm-package-arg": "^6.1.0", + "mississippi": "^3.0.0", + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@schematics/update/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "engines": { + "node": "*" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/animations": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.0.9.tgz", + "integrity": "sha512-/KsMBUbRTqp29CNLbRIe4/8IxWxhnbUUZWqULaySnRDDW/p2m4miPcFVSp4zjrDZPqdXSibDiCyTiWmQ5PTuKA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "11.0.9" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.1.0.tgz", + "integrity": "sha512-WofUNiLcO/oprnzswkF+u1PC6ulmqB/m7fNKMMnbExMYuK1P38gjp59FW7E+2Ivz+A4/8a5xV+U+cy3oRgh4NQ==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "@angular-eslint/utils": "15.1.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "aria-query": "5.1.3", + "axobject-query": "3.1.1" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.0.5.tgz", + "integrity": "sha512-VdswKp3YuoqEUUJZp1Zf0Yuc59EpbaZwCv1RiijgYh7+b+DO/SVwo6XWtQLQKg8h9gAozhHd7OrAprL3YP0N2g==", + "dev": true, + "dependencies": { + "mini-css-extract-plugin": "2.6.1", + "loader-utils": "3.2.1", + "@babel/core": "7.20.2", + "@ampproject/remapping": "2.2.0", + "semver": "7.3.8", + "postcss-loader": "7.0.1", + "rxjs": "6.6.7", + "jsonc-parser": "3.2.0", + "ansi-colors": "4.1.3", + "@discoveryjs/json-ext": "0.5.7", + "karma-source-map-support": "1.4.0", + "webpack-dev-middleware": "5.3.3", + "text-table": "0.2.0", + "tslib": "2.4.1", + "resolve-url-loader": "5.0.0", + "@babel/plugin-proposal-async-generator-functions": "7.20.1", + "@angular-devkit/architect": "0.1500.5", + "webpack": "5.75.0", + "esbuild-wasm": "0.15.13", + "@babel/runtime": "7.20.1", + "webpack-subresource-integrity": "5.1.0", + "postcss": "8.4.19", + "inquirer": "8.2.4", + "@babel/plugin-transform-runtime": "7.19.6", + "css-loader": "6.7.3", + "@babel/helper-annotate-as-pure": "7.18.6", + "license-webpack-plugin": "4.0.2", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "critters": "0.0.16", + "less-loader": "11.1.0", + "ora": "5.4.1", + "@babel/preset-env": "7.20.2", + "terser": "5.15.1", + "sass": "1.56.1", + "@babel/template": "7.18.10", + "chokidar": "3.5.3", + "parse5-html-rewriting-stream": "6.0.1", + "webpack-dev-server": "4.11.1", + "cacache": "17.0.2", + "babel-loader": "9.1.0", + "https-proxy-agent": "5.0.1", + "less": "4.1.3", + "magic-string": "0.26.7", + "browserslist": "4.21.4", + "piscina": "3.2.0", + "@angular-devkit/build-webpack": "0.1500.5", + "webpack-merge": "5.8.0", + "autoprefixer": "10.4.13", + "tree-kill": "1.2.2", + "open": "8.4.0", + "glob": "8.0.3", + "sass-loader": "13.2.0", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@angular-devkit/core": "15.0.5", + "@ngtools/webpack": "15.0.5", + "babel-plugin-istanbul": "6.1.1", + "copy-webpack-plugin": "11.0.0", + "@babel/generator": "7.20.4" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.15.13" + }, + "peerDependencies": { + "@angular/compiler-cli": "^15.0.0", + "@angular/localize": "^15.0.0", + "@angular/platform-server": "^15.0.0", + "@angular/service-worker": "^15.0.0", + "karma": "^6.3.0", + "ng-packagr": "^15.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": "~4.8.2" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/ngx-dropzone": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ngx-dropzone/-/ngx-dropzone-3.1.0.tgz", + "integrity": "sha512-5RBaEl07QUcY6sv/BBPyIxN6nbWY/KqTGheEKgbuGS0N1QPFY7NJUo8+X3fYUwQgLS+wjJeqPiR37dd0YNDtWA==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/pacote/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/karma/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/pacote/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/json-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz", + "integrity": "sha512-MoKIg/lBeQALqjYnqEanikfo3zBKRwclpXJexdF0FUniYAAN2ypEIXBEtpQb+9BkLFtDK1fyTLAsnGlyGfLGxw==" + }, + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dependencies": { + "gopd": "^1.0.1", + "regexp.prototype.flags": "^1.4.3", + "object-keys": "^1.1.1", + "has-proto": "^1.0.1", + "is-array-buffer": "^3.0.1", + "es-set-tostringtag": "^2.0.1", + "internal-slot": "^1.0.4", + "function-bind": "^1.1.1", + "es-to-primitive": "^1.2.1", + "get-intrinsic": "^1.1.3", + "is-weakref": "^1.0.2", + "is-callable": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "available-typed-arrays": "^1.0.5", + "is-shared-array-buffer": "^1.0.2", + "object.assign": "^4.1.4", + "is-regex": "^1.1.4", + "is-typed-array": "^1.1.10", + "has-symbols": "^1.0.3", + "get-symbol-description": "^1.0.0", + "safe-regex-test": "^1.0.0", + "unbox-primitive": "^1.0.2", + "is-string": "^1.0.7", + "call-bind": "^1.0.2", + "function.prototype.name": "^1.1.5", + "object-inspect": "^1.12.2", + "has": "^1.0.3", + "globalthis": "^1.0.3", + "typed-array-length": "^1.0.4", + "which-typed-array": "^1.1.9", + "has-property-descriptors": "^1.0.0", + "string.prototype.trimstart": "^1.0.6", + "is-negative-zero": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@schematics/update/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/http-proxy-agent/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/firebaseui": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/firebaseui/-/firebaseui-6.0.2.tgz", + "integrity": "sha512-Jwwn2I657loKrvedeCrwED9UibLFl8Cm0uH2ntDBSCpruWzG4HXlIWb35WsDdXMILRPQjJ1PwVwuRsrnsxcaXA==", + "dev": true, + "dependencies": { + "dialog-polyfill": "^0.4.7", + "material-design-lite": "^1.2.0" + }, + "peerDependencies": { + "firebase": "^9.1.3" + } + }, + "node_modules/@schematics/update/node_modules/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==" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/@schematics/update/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", + "peer": true, + "dependencies": { + "ev-emitter": "^1.0.0", + "fizzy-ui-utils": "^2.0.0", + "get-size": "^2.0.2" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.0.tgz", + "integrity": "sha512-2t+w4ngp1DPtZc04a6IjicbUGBpLb/MuFPlqpT8kHNqa/fNvA+ZFcAlEtHvzjS4o9rnTfjHgB+OJMgFP+r9OOw==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.0", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/ngx-masonry": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/ngx-masonry/-/ngx-masonry-14.0.1.tgz", + "integrity": "sha512-KsTmLbqSZqWFe6owK58OEqbZ+lGM6Yun2LqWlYBp5VQHkmb7bK1rVmQRPEFESY3pGx3kTn9ol3rchOuxUMNU+w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">8.0.0", + "@angular/core": ">8.0.0", + "masonry-layout": "^4.2.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ini": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", + "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==", + "engines": { + "node": "*" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.0.4.tgz", + "integrity": "sha512-e6Jt4qkIiyqBg8ZlpcQaQtQ5OAnfl8gfkJnIwSvvCg0mPCJv+ZkQAL5s3SpzzM5jd7Nr0jBq3zd2Fv0eKW2ayw==", + "dependencies": { + "@babel/core": "^7.17.2", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.27.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "15.0.4", + "typescript": ">=4.8.2 <4.9" + } + }, + "node_modules/mingo": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/mingo/-/mingo-6.2.5.tgz", + "integrity": "sha512-z3RwmW4BhaUoKYxToC/Ed9ijC3VtDesQ2Dxp7ATKGrNPsBnJ6+kpSjpT0Yd26EVYoq9HehrPYhkKDdH2IQui+Q==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.0.tgz", + "integrity": "sha512-mmCQ/8F0hQZ+J+JBvfQPlPAgKIRZccYW6N9321NbX8swd7EQP3dsW905RBmdXRsbjBpBqhn20zcQU6TDOKRwYA==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/ng-block-ui/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@schematics/update/node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/google-libphonenumber": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.31.tgz", + "integrity": "sha512-l3bzAkfN4ITICKvuqEiY7JN06RxDAviOoKMtD2KfGYjGK3btPO8Xav7k0fgmf1Ud/pEm523yBh1/s/xDtKEvnw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/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==" + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/@types/echarts": { + "version": "4.9.16", + "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.16.tgz", + "integrity": "sha512-bfiagfPw3dWauAIJ9fgoJQoL4hLWlGcltqwbE6LGye0NIY5xnbZau+mDmadCzGojic3MWuFDCUiO25kl4sRGeA==", + "dev": true, + "dependencies": { + "@types/zrender": "*" + } + }, + "node_modules/@schematics/update/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote/node_modules/npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dependencies": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/file-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/bootstrap": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.6" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ng-chartist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ng-chartist/-/ng-chartist-4.1.0.tgz", + "integrity": "sha512-mnVZS82RU1DaGuU57lq095nFn55kqJbbaZFUMbbAYsX5foZ5JmvXfaIvfr9y1PdBzkpc4UckaAWHxHF3qIriPA==", + "dependencies": { + "tslib": "^1.9.0" + }, + "peerDependencies": { + "@angular/common": ">=4.1.2", + "@angular/core": ">=4.1.2", + "@types/chartist": "^0.9.38", + "chartist": ">=0.9.8" + } + }, + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-datepicker": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/js-datepicker/-/js-datepicker-5.18.2.tgz", + "integrity": "sha512-lBh5tIwb1ewDVlNHuwczoLiMhTFWnGYuHSA7ONAPKyMeofIFZDFGeOZ71UTY/Mk2evJJt+L66ec/RiXUy8XzEg==" + }, + "node_modules/fs-write-stream-atomic/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/@firebase/storage-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.2.0.tgz", + "integrity": "sha512-w+7CyZyZ53YQWlTb8YOQ9YcmScgDwkvkXhpUbRWHlvlzAs06l0au42MydmHCeeTcSqvLOzpgURiVfm15ZifARg==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/storage": "0.10.0", + "@firebase/storage-types": "0.7.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@schematics/update/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/copy-concurrently/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "dependencies": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/@mattlewis92/dom-autoscroller": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@mattlewis92/dom-autoscroller/-/dom-autoscroller-2.4.2.tgz", + "integrity": "sha512-YbrUWREPGEjE/FU6foXcAT1YbVwqD/jkYnY1dFb0o4AxtP3s4xKBthlELjndZih8uwsDWgQZx1eNskRNe2BgZQ==" + }, + "node_modules/eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/read-package-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", + "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@angular-eslint/schematics": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-15.1.0.tgz", + "integrity": "sha512-BJm7FFVCad8TV8Gtwq+FbgtLGvjJDlpt5Rne1hCd4nCr8vlQZxSWVwnTHRkAs+qd5dYn3p7bGcKZxEZzeVkWjA==", + "dev": true, + "dependencies": { + "@angular-eslint/eslint-plugin": "15.1.0", + "@angular-eslint/eslint-plugin-template": "15.1.0", + "ignore": "5.2.0", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "peerDependencies": { + "@angular/cli": ">= 15.0.0 < 16.0.0" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dependencies": { + "semver": "^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dependencies": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/firebase": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.15.0.tgz", + "integrity": "sha512-Fa8qFahDY/pMYMzwPGcfpUkAS3Q55qJ0QKD+5xnXjSX/jVHsJqoXtxapmyDCfAKktiLhXIcRElW1VDVd9xGwQQ==", + "dependencies": { + "@firebase/analytics": "0.9.0", + "@firebase/messaging": "0.12.0", + "@firebase/analytics-compat": "0.2.0", + "@firebase/auth": "0.21.0", + "@firebase/firestore": "3.8.0", + "@firebase/installations": "0.6.0", + "@firebase/app": "0.9.0", + "@firebase/app-check": "0.6.0", + "@firebase/functions-compat": "0.3.0", + "@firebase/auth-compat": "0.3.0", + "@firebase/performance-compat": "0.2.0", + "@firebase/storage": "0.10.0", + "@firebase/firestore-compat": "0.3.0", + "@firebase/util": "1.8.0", + "@firebase/storage-compat": "0.2.0", + "@firebase/remote-config-compat": "0.2.0", + "@firebase/app-compat": "0.2.0", + "@firebase/performance": "0.6.0", + "@firebase/app-types": "0.9.0", + "@firebase/database": "0.14.0", + "@firebase/installations-compat": "0.2.0", + "@firebase/remote-config": "0.4.0", + "@firebase/database-compat": "0.3.0", + "@firebase/functions": "0.9.0", + "@firebase/app-check-compat": "0.3.0", + "@firebase/messaging-compat": "0.2.0" + } + }, + "node_modules/icheck": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", + "integrity": "sha512-1oDqj9ikiH4csFWKZnfbD1S9IY/MqzEt4cir6PIfkT84D/8QYaAZFrplXoyz5eaATmaoawY3KMTkMAO+fP4wGg==" + }, + "node_modules/@schematics/update/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/zone.js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.12.0.tgz", + "integrity": "sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/tree-ngx": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tree-ngx/-/tree-ngx-4.3.0.tgz", + "integrity": "sha512-0upn+MgoxzVhB50OUK9e4P8tKAIB9QXRItE9H1N7hEJs/J0yVvHV0q3ax+WqCDuCKDagub7JfcMKbA8RLVwgzw==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm-pick-manifest/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@schematics/update/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@schematics/update": { + "version": "0.901.13", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.13.tgz", + "integrity": "sha512-Q+jIzDP01XvXLiDfuiBsDBE18KOA2aduNuHnTlRJpWQuMR16J2sOSrHXXn53oZ14cqiUSdUWDTivMpaUGkXd5g==", + "deprecated": "This was an internal-only Angular package up through Angular v11 which is no longer used or maintained. Upgrade Angular to v12+ to remove this dependency.", + "dependencies": { + "@angular-devkit/core": "9.1.13", + "@angular-devkit/schematics": "9.1.13", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.6", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.4", + "semver": "7.1.3", + "semver-intersect": "1.4.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular-devkit/core": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.13.tgz", + "integrity": "sha512-bwehVRsva9OWfh/yuEh9VU+0Gr1T7DHJLe8tpZk/VsIkGOD0IszEPZOIEK23bg32yiff9bh6qJEPMA7ZBYEQHg==", + "dependencies": { + "ajv": "6.12.3", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "node_modules/@schematics/update/node_modules/ini": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", + "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==", + "engines": { + "node": "*" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@ngx-loading-bar/router": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@ngx-loading-bar/router/-/router-6.0.2.tgz", + "integrity": "sha512-el+32ysDhqr46Zcg+H8UiKpOEz43qY0++CUxj8DADLRm3mAzKqNn/X+5qhFQS4o5Nb/SdvZn5apfFlXoNNUViQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/router": ">=13.0.0", + "@ngx-loading-bar/core": "6.0.2" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.0.tgz", + "integrity": "sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@schematics/update/node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/streamroller": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.4.tgz", + "integrity": "sha512-Ha1Ccw2/N5C/IF8Do6zgNe8F3jQo8MPBnMBGvX0QjNv/I97BcNRzK6/mzOpZHHK7DjMLTI3c7Xw7Y1KvdChkvw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@angular/forms": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.0.4.tgz", + "integrity": "sha512-3Ft/p2ug/zp2p0g2rhLq9v/5F1G11xa+YujAKL5kOFa0zUoroDG6n4b6VEcsGWmDE9NR7Vkiys9rHckiJUluHg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "15.0.4", + "@angular/core": "15.0.4", + "@angular/platform-browser": "15.0.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-tree/node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webpack": { + "version": "5.75.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "dependencies": { + "chrome-trace-event": "^1.0.2", + "eslint-scope": "5.1.1", + "tapable": "^2.1.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "terser-webpack-plugin": "^5.1.3", + "@types/eslint-scope": "^3.7.3", + "acorn": "^8.7.1", + "watchpack": "^2.4.0", + "@webassemblyjs/wasm-parser": "1.11.1", + "neo-async": "^2.6.2", + "enhanced-resolve": "^5.10.0", + "events": "^3.2.0", + "browserslist": "^4.14.5", + "mime-types": "^2.1.27", + "@types/estree": "^0.0.51", + "loader-runner": "^4.2.0", + "schema-utils": "^3.1.0", + "glob-to-regexp": "^0.4.1", + "@webassemblyjs/ast": "1.11.1", + "es-module-lexer": "^0.9.0", + "webpack-sources": "^3.2.3", + "json-parse-even-better-errors": "^2.3.1", + "acorn-import-assertions": "^1.7.6", + "graceful-fs": "^4.2.9" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-report/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-ui-switch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/ngx-ui-switch/-/ngx-ui-switch-14.0.3.tgz", + "integrity": "sha512-SZ8ZnTCuNJgNWuY3/mOG3TdsRUNPCX3vGdCKKx1ZHVMTUynerJQlTWck2JrYlnrexNnd7wy4P10jDvdtDwoYeg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": ">=10.0.0", + "@angular/common": ">=10.0.0", + "@angular/core": ">=10.0.0", + "@angular/forms": ">=10.0.0", + "@angular/platform-browser": ">=10.0.0" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/memfs": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@schematics/update/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.0.tgz", + "integrity": "sha512-EqCU8C9XPQN6npfTCW+6agzQ0yPLvbSCY5WROdnU1ZJfOsGFrMMVMRk42XBzah1dHBoSQYggVaixEzJUOH7zbQ==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/@schematics/update/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "dependencies": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/https-proxy-agent/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/zrender": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.1.tgz", + "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/uuid": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@firebase/auth": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.0.tgz", + "integrity": "sha512-kXOQl/hyLuGKxs0r2icLsDmAyeO0uM4zV9Q+fx6VE8Ncl94TBUc/n895GSrF3RkNHdiq/DZxV/PUCZ/ozPQNKw==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/critters/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/chartist": { + "version": "0.9.48", + "resolved": "https://registry.npmjs.org/@types/chartist/-/chartist-0.9.48.tgz", + "integrity": "sha512-whqb8v+GHdmqczmIZa+lypR/crR7lrW2paE1Y6u/u2mgKZhDB5AyV+F9SWEPVoEpCYCdvr8qmJACKSofeMShGg==" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@fnxone/ngx-photoswipe": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@fnxone/ngx-photoswipe/-/ngx-photoswipe-1.0.11.tgz", + "integrity": "sha512-aAJ3th9ENTEH4uZmn+sTYCcThGvrjHXSrOVtWsUHA/jld2OzHE9jCLqH9DE6DSLWN7dWuiu9AydgSoUFD9zsAA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0", + "bootstrap": "^5.1.3", + "photoswipe": "^4.1.3" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/eslint/node_modules/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 + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/autolinker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-4.0.0.tgz", + "integrity": "sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "dependencies": { + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.1.tgz", + "integrity": "sha512-hW0GwZj06z/ZFUW2Espl7toVDjghJN+EKqyXzPSV8NV89d5BYp5rRMBJoc+aUN0x5OXDMeRQHazejr2Xmqj2tw==" + }, + "node_modules/@firebase/installations": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.0.tgz", + "integrity": "sha512-Aks56ThZs1MsM0qJzJxhdeXak+Ob3tjd3JSY2poJptreLWsIOSBCxYO7Ev4yZ7DE7twMdZ0x70NhQ1ceXfdy0w==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/quill/node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "node_modules/@schematics/update/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/quill-delta": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.0.0.tgz", + "integrity": "sha512-lVORU8dBPJdxPmwtdGhfRcz2cekn8Osuj5kwHoPMQ3MNlDT/IZ0CGUnQ/tLsAaTn31LWcDC1KyL+gkiGbBlBBw==", + "dependencies": { + "fast-diff": "1.2.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/pacote/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@cds/city": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@cds/city/-/city-1.1.0.tgz", + "integrity": "sha512-S9K+Q39BGOghyLHmR0Wdcmu1i1noSUk8HcvMj+3IaohZw02WFd99aPTQDHJeseXrXZP3CNovaSlePI0R11NcFg==", + "optional": true + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.0.tgz", + "integrity": "sha512-jZHI1fY1tm+8heLR4sbgJHtSYI2kTlSp4QTXWALwdT+dfST5OlZYsZeb+hGWeqjHEElzUnkLbw8XuZSy9Uy6rA==", + "dependencies": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.8.0" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-registry-fetch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "dependencies": { + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "JSONStream": "^1.3.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/@schematics/update/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jasmine-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.5.0.tgz", + "integrity": "sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw==", + "dev": true + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular/cli": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.13.tgz", + "integrity": "sha512-KfonsB9uBdYbCipjPX/vk+ouMNT5ugxG5O0Y3uMKDnzSYGz+wKjHxOYR+lx1kaQtEsBOTX0DUmce0shZZKbbGQ==", + "hasInstallScript": true, + "dependencies": { + "pacote": "9.5.12", + "semver": "7.1.3", + "universal-analytics": "0.4.20", + "@angular-devkit/schematics": "9.1.13", + "ansi-colors": "4.1.1", + "@schematics/angular": "9.1.13", + "symbol-observable": "1.2.0", + "@angular-devkit/architect": "0.901.13", + "inquirer": "7.1.0", + "uuid": "7.0.2", + "@yarnpkg/lockfile": "1.1.0", + "read-package-tree": "5.3.1", + "debug": "4.1.1", + "ini": "1.3.6", + "npm-pick-manifest": "6.0.0", + "rimraf": "3.0.2", + "open": "7.0.3", + "@schematics/update": "0.901.13", + "npm-package-arg": "8.0.1", + "@angular-devkit/core": "9.1.13" + }, + "bin": { + "ng": "bin/ng" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parallel-transform/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@schematics/update/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ngx-window-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ngx-window-token/-/ngx-window-token-6.0.0.tgz", + "integrity": "sha512-IeLKO1jzfzSvZ6vlAt4QSY/B5XcHEhdOwTjqvWEPt6/esWV9T3mA2ln10kj6SCc9pUSx4NybxE10gcyyYroImg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=12.20.x" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/quill/node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@schematics/update/node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@schematics/update/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@schematics/update/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/@angular/platform-browser": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.0.4.tgz", + "integrity": "sha512-SOLrzh9AsHzhfre95ShvHd0hBcyEcFftJuAaU+35L4GiOAY+CznFuJUq4LjITCMQDHGzdpUlRjoUyJRQFmlvXQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "15.0.4", + "@angular/common": "15.0.4", + "@angular/core": "15.0.4" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/preact": { + "version": "10.11.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/@ngx-loading-bar/core": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@ngx-loading-bar/core/-/core-6.0.2.tgz", + "integrity": "sha512-8r+OQEYXwvU+2ZXK6CY3Guh2yJuG8pQ2XNryHVbPZB2Ub3VmzhGWqjxXAQgxmsi+GxrD4m+nGmGZPeOrNH1ztA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "rxjs": "^6.5.3 || ^7.0.0" + } + }, + "node_modules/@schematics/update/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@schematics/update/node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@schematics/update/node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-registry-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/universal-analytics/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/@grpc/proto-loader/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@angular/language-service": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-15.0.4.tgz", + "integrity": "sha512-HGudgKAGvGCw4D1SXHxvXfoBG64/IVYLA9rkbodNAMfOnQwOCxgktkaQ6zzr59C0BS5mXlbBUcEYOC0Q5BXdsw==", + "dev": true, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + } + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inquirer/node_modules/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==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==" + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "dependencies": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@angular-eslint/builder": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-15.1.0.tgz", + "integrity": "sha512-MoPeJv4a1wSoFj8fVA01hFb+QQke2t74CSVuc6o4EqkWI0tYMM1Wg19fPtTZnj4spkGA82j2mf/tazKGRe/nrw==", + "dev": true, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dependencies": { + "genfun": "^5.0.0" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "semver": "^6.3.0", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "core-js-compat": "^3.25.1", + "@babel/compat-data": "^7.20.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/preset-modules": "^0.1.5", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/types": "^7.20.2", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-reserved-words": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-spinner": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-15.0.1.tgz", + "integrity": "sha512-7DjETmBpuXTwI68ad1xMKpwt4Cyz1eyu8E7AJcFiKa+8JAnbo0k1qfvWur0aemncRNxDxHoyl6jw42MsnE/B+g==", + "dev": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/angular-draggable-droppable": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-8.0.0.tgz", + "integrity": "sha512-+gpSNBbygjV1pxTxsM3UPJKcXHXJabYoTtKcgQe74rGnb1umKc07XCBD1qDzvlG/kocthvhQ12qfYOYzHnE3ZA==", + "dependencies": { + "@mattlewis92/dom-autoscroller": "^2.4.2", + "tslib": "^2.4.1" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@angular/cli": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.0.5.tgz", + "integrity": "sha512-bg0p29FPlg2g07GPkEEtqphErtNnZgiAy5R+4aTQlPt0Pl0hXIbGnl3HRBFXQkhPSdclKn9W5j69tOcDBNFBdg==", + "dev": true, + "dependencies": { + "pacote": "15.0.6", + "semver": "7.3.8", + "yargs": "17.6.2", + "@angular-devkit/schematics": "15.0.5", + "jsonc-parser": "3.2.0", + "resolve": "1.22.1", + "ansi-colors": "4.1.3", + "@schematics/angular": "15.0.5", + "symbol-observable": "4.0.0", + "@angular-devkit/architect": "0.1500.5", + "inquirer": "8.2.4", + "ora": "5.4.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "3.0.1", + "npm-pick-manifest": "8.0.1", + "open": "8.4.0", + "npm-package-arg": "9.1.2", + "@angular-devkit/core": "15.0.5" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/modern-normalize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", + "optional": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@firebase/database-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.0.tgz", + "integrity": "sha512-5kzhXdACd+RX/G8k/DKYAuiMYHDHIZ9WFV/ccVoPsC+bxIQEgPilDEtkljY5ZxiKbUj+PEOSYUfYdV/LQMJatQ==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/database": "0.14.0", + "@firebase/database-types": "0.10.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", + "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.0.tgz", + "integrity": "sha512-SM5eri3eGuPjQdXBRObqKTsgmkRwrSGsbgtD43EpGzU+lIeBVLqwRzfcFialYrWzFFI5V7hWXdS2oJxAkfnBFw==", + "dependencies": { + "@firebase/auth-interop-types": "0.2.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-windows-32": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "@esbuild/android-arm": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13" + } + }, + "node_modules/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, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@angular/core": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-15.0.4.tgz", + "integrity": "sha512-Xf8Nuu0iM/VjQHPS4A0jufqTYZCfiGqc0iAD7j9zM3TD6caQ3OP4mxXVYYTpIG+APKel38+Gol8cpQB/8PVbqQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4 || ~0.12.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/ngx-custom-validators": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/ngx-custom-validators/-/ngx-custom-validators-11.0.1.tgz", + "integrity": "sha512-dpbDjekLDLnTZDFKvRREFfVpywl5Z1YBF00nQQ3A9DVZhSXt/YY5vm7/v1ElwiSS1ogLcPZX0Qrl9VKUrvpnvQ==", + "dev": true, + "dependencies": { + "@angular/common": "~11.0.0", + "@angular/compiler": "~11.0.0", + "@angular/core": "~11.0.0", + "@angular/forms": "~11.0.0", + "@angular/platform-browser": "~11.0.0", + "@angular/platform-browser-dynamic": "~11.0.0", + "moment": "^2.28.0", + "rxjs": "~6.6.3", + "tslib": "^2.0.0", + "zone.js": "~0.11.1" + }, + "peerDependencies": { + "@angular/common": "~11.0.0", + "@angular/core": "~11.0.0", + "@angular/forms": "~11.0.0" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/platform-browser": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.9.tgz", + "integrity": "sha512-snuq8SaIRuVDYJLy80kYCEuVITZZbtG3PvxamATvzpgYpAzBskToc4/7LKJk0IEVSMvKzi8eSBCDaK2f2ZJB3A==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/animations": "11.0.9", + "@angular/common": "11.0.9", + "@angular/core": "11.0.9" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/jspdf-autotable": { + "version": "3.5.28", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.5.28.tgz", + "integrity": "sha512-eNYt5mUxCGa1Y0bmOhGXU+Va/P2jNkgOgUPGIpZp2rbZUauU34s0q3S59Jps5zi2u90nQy7DmD/D+sdesJLIEA==", + "peerDependencies": { + "jspdf": "^2.5.1" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", + "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@schematics/update/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", + "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@schematics/update/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@schematics/update/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "type-is": "~1.6.18", + "safe-buffer": "5.2.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "body-parser": "1.20.1", + "content-type": "~1.0.4", + "send": "0.18.0", + "cookie": "0.5.0", + "methods": "~1.1.2", + "proxy-addr": "~2.0.7", + "accepts": "~1.3.8", + "range-parser": "~1.2.1", + "on-finished": "2.4.1", + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "etag": "~1.8.1", + "path-to-regexp": "0.1.7", + "statuses": "2.0.1", + "parseurl": "~1.3.3", + "setprototypeof": "1.2.0", + "merge-descriptors": "1.0.1", + "vary": "~1.1.2", + "serve-static": "1.15.0", + "content-disposition": "0.5.4", + "escape-html": "~1.0.3", + "http-errors": "2.0.0", + "cookie-signature": "1.0.6", + "utils-merge": "1.0.1", + "array-flatten": "1.1.1", + "depd": "2.0.0", + "qs": "6.11.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@ngtools/webpack": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.0.5.tgz", + "integrity": "sha512-G/ppIWbcYsLQhSzmLXd3KvApDrW1HUNPVEPBZuSXWZ1FpWZ4VsMDm75ZSGwvDzVoxH0BJB1OYvQZespxIS/WsA==", + "dev": true, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^15.0.0", + "typescript": "~4.8.2", + "webpack": "^5.54.0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@schematics/update/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "deprecated": "This module is not used anymore, npm uses minipass-fetch for its fetch implementation now", + "dependencies": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/esbuild-wasm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.13.tgz", + "integrity": "sha512-0am8fvHKACwofWQxtZLTMv4mDiDwUrdt0DyRaQ2r7YWIpkmpg4GWYy0EyW+gPjiPHzkZKqN9d3UYsZGgvaAASw==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ngx-quill": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/ngx-quill/-/ngx-quill-20.0.1.tgz", + "integrity": "sha512-X02Me3RYuQgoOHXzYrkdi4aaDHPkyTZTUib+2amKxAMpM9LEOh/QYrFjudreQJtih6rhV6kRorO5AS4UueX9Mw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "@angular/core": "^14.0.0 || ^15.0.0", + "quill": "^1.3.7", + "rxjs": "^7.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/echarts": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.1.tgz", + "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.4.1" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/read-package-tree/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/ngx-google-places-autocomplete": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ngx-google-places-autocomplete/-/ngx-google-places-autocomplete-2.0.5.tgz", + "integrity": "sha512-TApaE+X/eaZBDduXvmOMsMC5FTWv3CmgbZ+Iv7NsnrBWJeonPF2SYMGs3vaydM3CY3Rch14/K94ecU0mfyRVWw==", + "peerDependencies": { + "@angular/core": ">= 2.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@schematics/angular": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.13.tgz", + "integrity": "sha512-coHvhu2jXVCN3P5Ux5ArDousMWDq4W6eInJPBpAI6yidRW1ViPVF58Bas/+Txcbhubv2cZViBXGq0OAGdJIvTQ==", + "dependencies": { + "@angular-devkit/core": "9.1.13", + "@angular-devkit/schematics": "9.1.13" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/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==" + }, + "node_modules/run-queue/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/log4js": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", + "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/less/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@firebase/storage": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.10.0.tgz", + "integrity": "sha512-2rp7+/bQ1gkUgrqDv5qHf/vlPAOKV+a/h1tnZ8D9zN0/6wc42gqFTORJUZj/A4efVnX7Ix8MWHBe4woO/2Th0w==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@schematics/update/node_modules/ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/critters/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", + "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" + }, + "node_modules/positioning": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/positioning/-/positioning-2.0.1.tgz", + "integrity": "sha512-DsAgM42kV/ObuwlRpAzDTjH9E8fGKkMDJHWFX+kfNXSxh7UCCQxEmdjv/Ws5Ft1XDnt3JT8fIDYeKNSE2TbttA==" + }, + "node_modules/@schematics/update/node_modules/socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dependencies": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dependencies": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "dependencies": { + "unique-filename": "^1.1.1", + "semver": "^5.6.0", + "infer-owner": "^1.0.4", + "safe-buffer": "^5.1.2", + "which": "^1.3.1", + "get-stream": "^4.1.0", + "promise-inflight": "^1.0.1", + "tar": "^4.4.10", + "minipass": "^2.3.5", + "osenv": "^0.1.5", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "bluebird": "^3.5.3", + "ssri": "^6.0.1", + "protoduck": "^5.0.1", + "chownr": "^1.1.2", + "npm-packlist": "^1.1.12", + "normalize-package-data": "^2.4.0", + "cacache": "^12.0.2", + "npm-normalize-package-bin": "^1.0.0", + "promise-retry": "^1.1.1", + "minimatch": "^3.0.4", + "npm-registry-fetch": "^4.0.0", + "mkdirp": "^0.5.1", + "npm-pick-manifest": "^3.0.0", + "rimraf": "^2.6.2", + "glob": "^7.1.3", + "npm-package-arg": "^6.1.0", + "mississippi": "^3.0.0", + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/quill/node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/critters/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/@webcomponents/webcomponentsjs": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.7.0.tgz", + "integrity": "sha512-j161Z9oiy8k74vchdrQGihfSp7QulrTclCUiPo0D7JF6/RjpXAmB0ThlTAFlSElkgqg0vdFgNAXaX9ZHZy25wQ==" + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/@schematics/angular": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.0.5.tgz", + "integrity": "sha512-lmns1eJM42RFlv1GPrNwe7TV70hyrIiadyPhuJmeT8qp8cxGPRJ3yHFUdtB7qPv0OkwfI/HVSeZwlnfNXQhiQg==", + "dependencies": { + "@angular-devkit/core": "15.0.5", + "@angular-devkit/schematics": "15.0.5", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz", + "integrity": "sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/save": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/save/-/save-2.9.0.tgz", + "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==", + "dependencies": { + "async": "^3.2.2", + "event-stream": "^4.0.1", + "lodash.assign": "^4.2.0", + "mingo": "^6.1.0" + } + }, + "node_modules/semver-intersect/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/cacache/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/chart.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.2.tgz", + "integrity": "sha512-9L1w6WLPq6ztiWVVOYtDtpo0CUsBKDWPrUEdwChAyzczaikqeSwNKEv3QpJ7EO4ICcLSi6UDVhgvcnUhRJidRA==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": "^7.0.0" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/pacote/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.0.4.tgz", + "integrity": "sha512-SCUxsfJAHXnAyo2ulmfqs3vGnB/tWNKe+G2KKshrSLyCYIJ3UgpsoPAo1mGih64qo8TWOQk9PJgrlVEB2DoWYg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "15.0.4", + "@angular/compiler": "15.0.4", + "@angular/core": "15.0.4", + "@angular/platform-browser": "15.0.4" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/npm-force-resolutions": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/npm-force-resolutions/-/npm-force-resolutions-0.0.10.tgz", + "integrity": "sha512-Jscex+xIU6tw3VsyrwxM1TeT+dd9Fd3UOMAjy6J1TMpuYeEqg4LQZnATQO5vjPrsARm3und6zc6Dii/GUyRE5A==", + "dependencies": { + "json-format": "^1.0.1", + "source-map-support": "^0.5.5", + "xmlhttprequest": "^1.8.0" + }, + "bin": { + "npm-force-resolutions": "index.js" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.0.tgz", + "integrity": "sha512-xOEdqOVeHXJ2ZjDbTntNGLl1lgW9umx73bWXJn9h68bSD4f9ldIVoz+h15s8i/e1pJOO/LlEp2BMvoA35U1P/Q==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/functions": "0.9.0", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/immutable": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", + "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==" + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@schematics/update/node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@schematics/update/node_modules/socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dependencies": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/@schematics/update/node_modules/err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/forms": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.0.9.tgz", + "integrity": "sha512-DHi4puesP5iSBToT4FZVqLYZZpZDlAy2wgBe+OhCq7GCIqi8OLejB3bp9BnUd/WnNAHJd3zEjytexih6EPE0Xg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "11.0.9", + "@angular/core": "11.0.9", + "@angular/platform-browser": "11.0.9", + "rxjs": "^6.5.3" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz", + "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==" + }, + "node_modules/engine.io-parser": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.5.tgz", + "integrity": "sha512-mjEyaa4zhuuRhaSLOdjEb57X0XPP9JEsnXI4E+ivhwT0GgzUogARx4MqoY1jQyB+4Bkz3BUOmzL7t9RMKmlG3g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@schematics/update/node_modules/pacote/node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/move-concurrently/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@schematics/update/node_modules/promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "dependencies": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/@schematics/update/node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.2.tgz", + "integrity": "sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==", + "dev": true, + "dependencies": { + "minipass-flush": "^1.0.5", + "minipass-fetch": "^3.0.0", + "minipass": "^4.0.0", + "minipass-pipeline": "^1.2.4", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "http-cache-semantics": "^4.1.0", + "ssri": "^10.0.0", + "socks-proxy-agent": "^7.0.0", + "cacache": "^17.0.0", + "https-proxy-agent": "^5.0.0", + "promise-retry": "^2.0.1", + "minipass-collect": "^1.0.2", + "http-proxy-agent": "^5.0.0", + "agentkeepalive": "^4.2.1", + "negotiator": "^0.6.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.0.5.tgz", + "integrity": "sha512-S3YN1Q/iOOXA9ipWbh+bDaTJwc0Wb0uPqSUJov+L/EojNi9xglY80bLwVdL2OHZV2e+62dhkvQ4REM3hZT2/Hg==", + "dependencies": { + "@angular-devkit/core": "15.0.5", + "jsonc-parser": "3.2.0", + "magic-string": "0.26.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/angular-calendar": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.31.0.tgz", + "integrity": "sha512-QGPObUmOYLr4IeSaj1pzZjcycN6otYx+SbeezJuujstXR9f2wo4CtMlBQ+SU+ZF5VFfrdYge8qkxMGCLBLBRrw==", + "dependencies": { + "@scarf/scarf": "^1.1.1", + "angular-draggable-droppable": "^8.0.0", + "angular-resizable-element": "^7.0.0", + "calendar-utils": "^0.10.4", + "positioning": "^2.0.1", + "tslib": "^2.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", + "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@schematics/update/node_modules/pacote/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-registry-fetch/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "engines": { + "node": "*" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "node_modules/istanbul-lib-source-maps/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ng-chartist/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@schematics/update/node_modules/semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/critters/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "deprecated": "The functionality that this package provided is now in @npmcli/arborist", + "dependencies": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.0.tgz", + "integrity": "sha512-sedVYE4PwN4qtXfb7EkUYe9mz7hqBP/3y3c7WRMmTuh2VRNz5C5+NYULr5zySeJq+UZd6KyaS+KUOIxmx70tTw==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "node_modules/ng-block-ui": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/ng-block-ui/-/ng-block-ui-3.0.2.tgz", + "integrity": "sha512-EP3IXP8WSoKQOAwunf/v77aydcBCSLkEm5K8duRMSXFsnrcTdNqUiaLDKCf9U3COHY52IVBJcLb9PGhMBCWVSA==", + "dev": true, + "dependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/read-package-tree/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/photoswipe": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/photoswipe/-/photoswipe-4.1.3.tgz", + "integrity": "sha512-89Z43IRUyw7ycTolo+AaiDn3W1EEIfox54hERmm9bI12IB9cvRfHSHez3XhAyU8XW2EAFrC+2sKMhh7SJwn0bA==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/open": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular/compiler-cli": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.13.tgz", + "integrity": "sha512-40jbfMr1FinOqUyG3k4Moiytjs/Z8zKBgP3S5Qfn80EBJItRdFXwNtvaOi/onaag4+Mv+vigShwsgCewLbt/kA==", + "dependencies": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "yargs": "^16.1.1" + }, + "bin": { + "ivy-ngcc": "ngcc/main-ivy-ngcc.js", + "ng-xi18n": "src/extract_i18n.js", + "ngc": "src/main.js", + "ngcc": "ngcc/main-ngcc.js" + }, + "engines": { + "node": ">=10.0" + }, + "peerDependencies": { + "@angular/compiler": "9.1.13", + "tslib": "^1.10.0", + "typescript": ">=3.6 <3.9" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/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==" + }, + "node_modules/get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", + "peer": true + }, + "node_modules/@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@schematics/update/node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/@schematics/update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/@schematics/update/node_modules/make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dependencies": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.0.tgz", + "integrity": "sha512-M+LWaBH392SLF7/wAH5byJrP5f1MpromUG02NIr0sbgJ6Ot2nc+qDrDGjKF4qLXFqYzhNRlhskCCdf0ClgDM0A==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@npmcli/git/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/lit-element": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", + "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "dependencies": { + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" + } + }, + "node_modules/critters/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@fullcalendar/core": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.0.2.tgz", + "integrity": "sha512-mpJ+8l2t6b98umrRG2FfDnMqEr0Z+wNT2SjY7H49V3wcj4oe3gwuty8GBYHG/vgxS+DXR/NcEvW1CsMQh4Cr/A==", + "peer": true, + "dependencies": { + "preact": "^10.0.5" + } + }, + "node_modules/inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@schematics/update/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@schematics/update/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/angular-archwizard": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/angular-archwizard/-/angular-archwizard-7.0.0.tgz", + "integrity": "sha512-2yLRWGOjNx4U++awtEmaHmJyJANQ8gUlBHbH4fWHJ0V16gT0SOiM+tg1L2Tpfg+RvFkz02+MltJichJvFwce5w==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.0.tgz", + "integrity": "sha512-9hyNc4OmrXMtthDJq6zyJHll/UIYBWYmMG3rXty2eMeWxHWB0vlsq3AOI+k14PL15aSBAQolv0EZJWVJv/gCEg==", + "dependencies": { + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ngx-custom-validators/node_modules/@angular/platform-browser-dynamic": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.9.tgz", + "integrity": "sha512-OCbXCXxPvpPu7vh3Ra1X+FfqA27TP2NcL/AlWhPTSGB+ggrEUgfdUjBSsULpMVPsD6pG/runGdM9CQjEK7g+DQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "11.0.9", + "@angular/compiler": "11.0.9", + "@angular/core": "11.0.9", + "@angular/platform-browser": "11.0.9" + } + }, + "node_modules/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/ssri": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", + "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.0.tgz", + "integrity": "sha512-cE6JAvaGDVhn3B09VuQ5pATLCtmQg3AUSDuCmMNzWlP7+12LBarV1JcGWKIi7YQK2ks3B73wRsawi08XKwsolQ==", + "dependencies": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@schematics/update/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/@angular/common": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-15.0.4.tgz", + "integrity": "sha512-0x/2IhaetJqfXMeQ4DlRnOTzGWD0OvOeKORyi0q7WXPxSoD9MUezQHGmzkc5lK9tDYE9cNYyQfkUBcbJT/k6MA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "15.0.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular-devkit/schematics": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.13.tgz", + "integrity": "sha512-DZBmfYE6xIfC6PDMvQpR8B31TtLWOmSeTQPnmSm9gj6OZpyqFqoGWOz/0l05FH6zC8HLthAAFJSEnPYyhzWDvg==", + "dependencies": { + "@angular-devkit/core": "9.1.13", + "ora": "4.0.3", + "rxjs": "6.5.4" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 6.11.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universal-analytics/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/ngx-drag-and-drop-lists/node_modules/@angular/compiler-cli/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ngx-perfect-scrollbar": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.1.tgz", + "integrity": "sha512-f9IaDJGlBzSxnJ3Ki76n2JdzfQngUFyCf0E+CuVLaR5jL0IJDcTu7vOs8wexXunRMTd8xvIv0+sdIxf8hXAGWg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "perfect-scrollbar": "1.5.0", + "resize-observer-polyfill": "^1.5.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=9.0.0", + "@angular/core": ">=9.0.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@angular/cdk": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-15.0.4.tgz", + "integrity": "sha512-I+OedGqv9cBsHMVGl/VfjGItAi8pK7UuYiPnxSB25+m8v3jh7dMzfVGqdqpTSGxd1Zv02ypLZvEbiI30abRykQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^15.0.0 || ^16.0.0", + "@angular/core": "^15.0.0 || ^16.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.1500.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1500.5.tgz", + "integrity": "sha512-n1L3Q2d7HoWFRRqihu3BAUB5xZFfz8LqQoHpVNl6HN1ugtmvqDUDoKrpYVH9LCKCqfJW2Cxssy+FERiDsihIJQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "15.0.5", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.0.5.tgz", + "integrity": "sha512-VdswKp3YuoqEUUJZp1Zf0Yuc59EpbaZwCv1RiijgYh7+b+DO/SVwo6XWtQLQKg8h9gAozhHd7OrAprL3YP0N2g==", + "dev": true, + "requires": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1500.5", + "@angular-devkit/build-webpack": "0.1500.5", + "@angular-devkit/core": "15.0.5", + "@babel/core": "7.20.2", + "@babel/generator": "7.20.4", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.1", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.19.6", + "@babel/preset-env": "7.20.2", + "@babel/runtime": "7.20.1", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "15.0.5", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.13", + "babel-loader": "9.1.0", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "4.21.4", + "cacache": "17.0.2", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.3", + "esbuild": "0.15.13", + "esbuild-wasm": "0.15.13", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.26.7", + "mini-css-extract-plugin": "2.6.1", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.19", + "postcss-loader": "7.0.1", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.56.1", + "sass-loader": "13.2.0", + "semver": "7.3.8", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.15.1", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.1", + "webpack": "5.75.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.1", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1500.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1500.5.tgz", + "integrity": "sha512-UsotO4snRjkd6JdC45zjWy+LR+FtM1sVgTi2MA4/tiVOTTc/M8cHWFeAg94+mqC773WnisNKiJAyHnW4SXjhiA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1500.5", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.0.5.tgz", + "integrity": "sha512-SxLvbpqcQfb1qRykZjqRUG/8uC1FYpneyNV9S9YglXg4JhCFhfc9AnKxuu9Bm/O8V7FghOIlGWGglCdPHra0pw==", + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@angular-devkit/schematics": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.0.5.tgz", + "integrity": "sha512-S3YN1Q/iOOXA9ipWbh+bDaTJwc0Wb0uPqSUJov+L/EojNi9xglY80bLwVdL2OHZV2e+62dhkvQ4REM3hZT2/Hg==", + "requires": { + "@angular-devkit/core": "15.0.5", + "jsonc-parser": "3.2.0", + "magic-string": "0.26.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@angular-eslint/builder": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-15.1.0.tgz", + "integrity": "sha512-MoPeJv4a1wSoFj8fVA01hFb+QQke2t74CSVuc6o4EqkWI0tYMM1Wg19fPtTZnj4spkGA82j2mf/tazKGRe/nrw==", + "dev": true + }, + "@angular-eslint/bundled-angular-compiler": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.1.0.tgz", + "integrity": "sha512-zcOx+PnYuVDIG3wd/JVzCYdEUarKGtgIcN4iU9ZF+BVk5e8i9cbD3U8U3EDJKbrrokbFl9GBBJMCOa6XYTGJwQ==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-15.1.0.tgz", + "integrity": "sha512-3RRDnxaCEI5DdKq3hipXvrxctPPssrUXnNbgczJRIJ3cssr4ndobCSNqUSepA6vWj5mWe7w+nnh4vgfhZ5keig==", + "dev": true, + "requires": { + "@angular-eslint/utils": "15.1.0", + "@typescript-eslint/utils": "5.44.0" + } + }, + "@angular-eslint/eslint-plugin-template": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.1.0.tgz", + "integrity": "sha512-WofUNiLcO/oprnzswkF+u1PC6ulmqB/m7fNKMMnbExMYuK1P38gjp59FW7E+2Ivz+A4/8a5xV+U+cy3oRgh4NQ==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "@angular-eslint/utils": "15.1.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "aria-query": "5.1.3", + "axobject-query": "3.1.1" + } + }, + "@angular-eslint/schematics": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-15.1.0.tgz", + "integrity": "sha512-BJm7FFVCad8TV8Gtwq+FbgtLGvjJDlpt5Rne1hCd4nCr8vlQZxSWVwnTHRkAs+qd5dYn3p7bGcKZxEZzeVkWjA==", + "dev": true, + "requires": { + "@angular-eslint/eslint-plugin": "15.1.0", + "@angular-eslint/eslint-plugin-template": "15.1.0", + "ignore": "5.2.0", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + } + }, + "@angular-eslint/template-parser": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-15.1.0.tgz", + "integrity": "sha512-ctcA7OAV1wwFByW1te3uZwzySuIRlo8NblG5yUtgU5BXt3nXwIDwoSr3tvI2dRHobNHcXVQcOFVzyOdXD/vsIg==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "eslint-scope": "^7.0.0" + } + }, + "@angular-eslint/utils": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-15.1.0.tgz", + "integrity": "sha512-Vt59o7wq3UOgHSCrOaHg0SgxgbAGhG0ofNQwd7sLqNP2/w/90dWY2jwWXIVSuZ+BmfVj3wgNi3KujbSWJP1cfg==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "15.1.0", + "@typescript-eslint/utils": "5.44.0" + } + }, + "@angular/animations": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-15.0.4.tgz", + "integrity": "sha512-fOqf7fHX9aspIUmlOsig8ZyZlalU+eIBsUgu4QpH9+vfQzGCJcKIjPClW4Yb7rkNlyLlfQqaICOxG9gOxuEI7Q==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-15.0.4.tgz", + "integrity": "sha512-I+OedGqv9cBsHMVGl/VfjGItAi8pK7UuYiPnxSB25+m8v3jh7dMzfVGqdqpTSGxd1Zv02ypLZvEbiI30abRykQ==", + "requires": { + "parse5": "^7.1.2", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.0.5.tgz", + "integrity": "sha512-bg0p29FPlg2g07GPkEEtqphErtNnZgiAy5R+4aTQlPt0Pl0hXIbGnl3HRBFXQkhPSdclKn9W5j69tOcDBNFBdg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1500.5", + "@angular-devkit/core": "15.0.5", + "@angular-devkit/schematics": "15.0.5", + "@schematics/angular": "15.0.5", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "3.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "9.1.2", + "npm-pick-manifest": "8.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "15.0.6", + "resolve": "1.22.1", + "semver": "7.3.8", + "symbol-observable": "4.0.0", + "yargs": "17.6.2" + } + }, + "@angular/common": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-15.0.4.tgz", + "integrity": "sha512-0x/2IhaetJqfXMeQ4DlRnOTzGWD0OvOeKORyi0q7WXPxSoD9MUezQHGmzkc5lK9tDYE9cNYyQfkUBcbJT/k6MA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.0.4.tgz", + "integrity": "sha512-KtxgRJUGZamOXpIILFG2FTUW+bbc2phi/o6955/Q4LR1HOICQrYEy8PrT1Gp+lVXFKgDG+6cb01lH14LoBQvyw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.0.4.tgz", + "integrity": "sha512-e6Jt4qkIiyqBg8ZlpcQaQtQ5OAnfl8gfkJnIwSvvCg0mPCJv+ZkQAL5s3SpzzM5jd7Nr0jBq3zd2Fv0eKW2ayw==", + "requires": { + "@babel/core": "^7.17.2", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.27.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, + "@angular/core": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-15.0.4.tgz", + "integrity": "sha512-Xf8Nuu0iM/VjQHPS4A0jufqTYZCfiGqc0iAD7j9zM3TD6caQ3OP4mxXVYYTpIG+APKel38+Gol8cpQB/8PVbqQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/fire": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-7.5.0.tgz", + "integrity": "sha512-M/JJ5SKnpfNZFLKl0Awjn3r2NhURy2Mx+E8EzSDWSg1sHD7IThrynZYPUSZR+cd3KGsGoEacIP2x8Ra+0a+CVg==", + "requires": { + "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", + "file-loader": "^6.2.0", + "firebase": "^9.8.0", + "fs-extra": "^8.0.1", + "fuzzy": "^0.1.3", + "inquirer": "^8.1.1", + "inquirer-autocomplete-prompt": "^1.0.1", + "jsonc-parser": "^3.0.0", + "node-fetch": "^2.6.1", + "open": "^8.0.0", + "ora": "^5.3.0", + "rxfire": "^6.0.0", + "semver": "^7.1.3", + "triple-beam": "^1.3.0", + "tslib": "^2.0.0", + "winston": "^3.0.0" + } + }, + "@angular/forms": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.0.4.tgz", + "integrity": "sha512-3Ft/p2ug/zp2p0g2rhLq9v/5F1G11xa+YujAKL5kOFa0zUoroDG6n4b6VEcsGWmDE9NR7Vkiys9rHckiJUluHg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/language-service": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-15.0.4.tgz", + "integrity": "sha512-HGudgKAGvGCw4D1SXHxvXfoBG64/IVYLA9rkbodNAMfOnQwOCxgktkaQ6zzr59C0BS5mXlbBUcEYOC0Q5BXdsw==", + "dev": true + }, + "@angular/localize": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.0.4.tgz", + "integrity": "sha512-IuvsPT5fUyf5yn58yzXbD/Mxk3MAbVbI78CRKN2CWew6jTXuiVmaxu4cbL/a2PHhq1led318PAdCMk//Dz4Ddg==", + "requires": { + "@babel/core": "7.19.3", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@angular/platform-browser": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.0.4.tgz", + "integrity": "sha512-SOLrzh9AsHzhfre95ShvHd0hBcyEcFftJuAaU+35L4GiOAY+CznFuJUq4LjITCMQDHGzdpUlRjoUyJRQFmlvXQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.0.4.tgz", + "integrity": "sha512-SCUxsfJAHXnAyo2ulmfqs3vGnB/tWNKe+G2KKshrSLyCYIJ3UgpsoPAo1mGih64qo8TWOQk9PJgrlVEB2DoWYg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/router": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-15.0.4.tgz", + "integrity": "sha512-6cBUu1kSigORGpWq+Wc3hTLRQcJvtlaZ5OFOIzKGiBEPgezn/AzrWHi/bEccWLZAVFhbUOhcRn9GwudqiqX6+A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + } + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@cds/city": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@cds/city/-/city-1.1.0.tgz", + "integrity": "sha512-S9K+Q39BGOghyLHmR0Wdcmu1i1noSUk8HcvMj+3IaohZw02WFd99aPTQDHJeseXrXZP3CNovaSlePI0R11NcFg==", + "optional": true + }, + "@cds/core": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.2.3.tgz", + "integrity": "sha512-hat5e/yYRpRHh/9Evrm36lxYy7m94nurIIOYHZ1O5yOS464UVp1eeVFOh2n+l74QdjJw9tDsdFIOQHV5UWgRpw==", + "requires": { + "@cds/city": "^1.1.0", + "lit": "^2.1.3", + "modern-normalize": "1.1.0", + "ramda": "^0.28.0", + "tslib": "^2.3.1" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@firebase/analytics": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.0.tgz", + "integrity": "sha512-cE6JAvaGDVhn3B09VuQ5pATLCtmQg3AUSDuCmMNzWlP7+12LBarV1JcGWKIi7YQK2ks3B73wRsawi08XKwsolQ==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.0.tgz", + "integrity": "sha512-brk8IN4ErWiZoB/UdJ0mWZhQOKt90ztv4MUwQjhuYJ4iwnVMz0Mzj9+tplU1hVpSZXdfbKQFfRN9kp/3sTiyWw==", + "requires": { + "@firebase/analytics": "0.9.0", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "@firebase/app": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.0.tgz", + "integrity": "sha512-sa15stSK6FoGW4mCeAVDt0TvBFxPjvNcG2rhacGudOzMaW3g2TS326zXTFG+p5jnTCPZ2SO5TTSiGHn1NNcD9Q==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.0.tgz", + "integrity": "sha512-DevuiUQujsG18NQ1fQ1g2X+75Vp1YfSxPsw363/HE2+ABmCWHf4ByPmxEf16y4PVcqJ2MZqYv8kXZYxzRJCS4g==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.0.tgz", + "integrity": "sha512-CJFHWGMvWRkkvLPTvWdLrEYnfH7WS9zFLsWctSzRjQnzg6dQUTs5FDyg9RN7BIWoaSr9q7FTxkRnsOgardDPLA==", + "requires": { + "@firebase/app-check": "0.6.0", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", + "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" + }, + "@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "@firebase/app-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.0.tgz", + "integrity": "sha512-Y8Cpuheai61jCdVflt437I94n8cdRbXY0e1dQMmTWHCShJUfWwpa5y2ZMnxClWnorXy9hC/3yNZMVlu79f1zGA==", + "requires": { + "@firebase/app": "0.9.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "@firebase/auth": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.0.tgz", + "integrity": "sha512-kXOQl/hyLuGKxs0r2icLsDmAyeO0uM4zV9Q+fx6VE8Ncl94TBUc/n895GSrF3RkNHdiq/DZxV/PUCZ/ozPQNKw==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/auth-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.0.tgz", + "integrity": "sha512-tcofcrQKBOo5Wrz59onWtZDJfVW09auvG/XRh7lZ4yfEWdGerTJXmEdQU6j3E8AnJ3X91BYltNYhh0ZJOoCJqQ==", + "requires": { + "@firebase/auth": "0.21.0", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/auth-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.0.tgz", + "integrity": "sha512-7Mt2qzwvu5X3Qxz24gjj0qITrBsMmy1W4vGBP8TZRuQrjA4OTlGVCTG8ysvweZ3xpdl1XGhBsIjo2KjfOPg0xA==" + }, + "@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==" + }, + "@firebase/component": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.0.tgz", + "integrity": "sha512-9hyNc4OmrXMtthDJq6zyJHll/UIYBWYmMG3rXty2eMeWxHWB0vlsq3AOI+k14PL15aSBAQolv0EZJWVJv/gCEg==", + "requires": { + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.0.tgz", + "integrity": "sha512-SM5eri3eGuPjQdXBRObqKTsgmkRwrSGsbgtD43EpGzU+lIeBVLqwRzfcFialYrWzFFI5V7hWXdS2oJxAkfnBFw==", + "requires": { + "@firebase/auth-interop-types": "0.2.0", + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.0.tgz", + "integrity": "sha512-5kzhXdACd+RX/G8k/DKYAuiMYHDHIZ9WFV/ccVoPsC+bxIQEgPilDEtkljY5ZxiKbUj+PEOSYUfYdV/LQMJatQ==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/database": "0.14.0", + "@firebase/database-types": "0.10.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.0.tgz", + "integrity": "sha512-jZHI1fY1tm+8heLR4sbgJHtSYI2kTlSp4QTXWALwdT+dfST5OlZYsZeb+hGWeqjHEElzUnkLbw8XuZSy9Uy6rA==", + "requires": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.8.0" + } + }, + "@firebase/firestore": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.0.tgz", + "integrity": "sha512-aKwfZ73FmOV8e/dN0anDtrq6+1IhX4zmjxUcXcgaypZ14q6bq0QpUdlRxjsfiUQ5m3H3MwWWIFOcT5Xa89sIkw==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "@firebase/webchannel-wrapper": "0.9.0", + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.6.13", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.0.tgz", + "integrity": "sha512-ckU4mkziDnsFKxgYv+OAJHPuNpti2RjyoeIAqz3EqRHAsYFC70U5w4aXC2Sbu2jJp3Ba2BoD7MV/4Qb2A7CJtw==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/firestore": "3.8.0", + "@firebase/firestore-types": "2.5.1", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-types": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", + "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==" + }, + "@firebase/functions": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.0.tgz", + "integrity": "sha512-na/+7uc9ViQVBadEsCVjBnbZsfUCMyS/x6SID1Nz4Z5nkhuxrls9Jcv7jc28tMqHR0VpoGq8W6oLProyjT8JPg==", + "requires": { + "@firebase/app-check-interop-types": "0.2.0", + "@firebase/auth-interop-types": "0.2.0", + "@firebase/component": "0.6.0", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-compat": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.0.tgz", + "integrity": "sha512-xOEdqOVeHXJ2ZjDbTntNGLl1lgW9umx73bWXJn9h68bSD4f9ldIVoz+h15s8i/e1pJOO/LlEp2BMvoA35U1P/Q==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/functions": "0.9.0", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "@firebase/installations": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.0.tgz", + "integrity": "sha512-Aks56ThZs1MsM0qJzJxhdeXak+Ob3tjd3JSY2poJptreLWsIOSBCxYO7Ev4yZ7DE7twMdZ0x70NhQ1ceXfdy0w==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/installations-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.0.tgz", + "integrity": "sha512-EqCU8C9XPQN6npfTCW+6agzQ0yPLvbSCY5WROdnU1ZJfOsGFrMMVMRk42XBzah1dHBoSQYggVaixEzJUOH7zbQ==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==" + }, + "@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/messaging": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.0.tgz", + "integrity": "sha512-M+LWaBH392SLF7/wAH5byJrP5f1MpromUG02NIr0sbgJ6Ot2nc+qDrDGjKF4qLXFqYzhNRlhskCCdf0ClgDM0A==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.8.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.0.tgz", + "integrity": "sha512-Qk9W9lVmTO67bR5jCaQ9HqS9MipkCuPGKCcO5JnnDd/p+Y2beWzScYxwzYGh9pEga3qzDAMSCB1PYoNgNTMzew==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/messaging": "0.12.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "@firebase/performance": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.0.tgz", + "integrity": "sha512-mmCQ/8F0hQZ+J+JBvfQPlPAgKIRZccYW6N9321NbX8swd7EQP3dsW905RBmdXRsbjBpBqhn20zcQU6TDOKRwYA==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.0.tgz", + "integrity": "sha512-iO0fspVpiVOGxR08Y51nXoSMPH/bdRkRVQXYo4wuDDfQoZ5WZ0DXQuE0kXy3/T9QgqXdr8tSU0P0nil/jvnOcg==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.0", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "@firebase/remote-config": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.0.tgz", + "integrity": "sha512-sedVYE4PwN4qtXfb7EkUYe9mz7hqBP/3y3c7WRMmTuh2VRNz5C5+NYULr5zySeJq+UZd6KyaS+KUOIxmx70tTw==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/installations": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.0.tgz", + "integrity": "sha512-2t+w4ngp1DPtZc04a6IjicbUGBpLb/MuFPlqpT8kHNqa/fNvA+ZFcAlEtHvzjS4o9rnTfjHgB+OJMgFP+r9OOw==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.0", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "@firebase/storage": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.10.0.tgz", + "integrity": "sha512-2rp7+/bQ1gkUgrqDv5qHf/vlPAOKV+a/h1tnZ8D9zN0/6wc42gqFTORJUZj/A4efVnX7Ix8MWHBe4woO/2Th0w==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/util": "1.8.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-compat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.2.0.tgz", + "integrity": "sha512-w+7CyZyZ53YQWlTb8YOQ9YcmScgDwkvkXhpUbRWHlvlzAs06l0au42MydmHCeeTcSqvLOzpgURiVfm15ZifARg==", + "requires": { + "@firebase/component": "0.6.0", + "@firebase/storage": "0.10.0", + "@firebase/storage-types": "0.7.0", + "@firebase/util": "1.8.0", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.7.0.tgz", + "integrity": "sha512-n/8pYd82hc9XItV3Pa2KGpnuJ/2h/n/oTAaBberhe6GeyWQPnsmwwRK94W3GxUwBA/ZsszBAYZd7w7tTE+6XXA==" + }, + "@firebase/util": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.8.0.tgz", + "integrity": "sha512-clK6pTTxIiLMYz4UrvDTVAs2rIaOiroAuFdX67C0JalvEwzi6Vv8li6xAGj38tkj7Qax06mosM1fQkxf2h4VTg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", + "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + }, + "@fnxone/ngx-photoswipe": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@fnxone/ngx-photoswipe/-/ngx-photoswipe-1.0.11.tgz", + "integrity": "sha512-aAJ3th9ENTEH4uZmn+sTYCcThGvrjHXSrOVtWsUHA/jld2OzHE9jCLqH9DE6DSLWN7dWuiu9AydgSoUFD9zsAA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@fullcalendar/angular": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-6.0.2.tgz", + "integrity": "sha512-y4A5115gOZ6DcZvwgk58nMramh1/iU6cA7Ac+YI6OKNt8+dsXwxPUjFFp96NfS98UFk6kQIwf0G2ajMSl9AnTA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@fullcalendar/core": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.0.2.tgz", + "integrity": "sha512-mpJ+8l2t6b98umrRG2FfDnMqEr0Z+wNT2SjY7H49V3wcj4oe3gwuty8GBYHG/vgxS+DXR/NcEvW1CsMQh4Cr/A==", + "peer": true, + "requires": { + "preact": "^10.0.5" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@grpc/grpc-js": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", + "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "dependencies": { + "@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + } + }, + "protobufjs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", + "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + } + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@kurkle/color": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.1.tgz", + "integrity": "sha512-hW0GwZj06z/ZFUW2Espl7toVDjghJN+EKqyXzPSV8NV89d5BYp5rRMBJoc+aUN0x5OXDMeRQHazejr2Xmqj2tw==" + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@lit-labs/ssr-dom-shim": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz", + "integrity": "sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==" + }, + "@lit/reactive-element": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.0.tgz", + "integrity": "sha512-33H04h4tx9NVEADti0haZTNxssCnqZlMlyjri5k9kwDWAe2W1iENroZt7VWwmsPhlWUD8sSoPXSHqd0DdL29Pw==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "@mattlewis92/dom-autoscroller": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@mattlewis92/dom-autoscroller/-/dom-autoscroller-2.4.2.tgz", + "integrity": "sha512-YbrUWREPGEjE/FU6foXcAT1YbVwqD/jkYnY1dFb0o4AxtP3s4xKBthlELjndZih8uwsDWgQZx1eNskRNe2BgZQ==" + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.0.1.tgz", + "integrity": "sha512-JF4U4IIix+g6VBFfG8stf0Un5K//ypoN+pTuRs6kjUhsHBsa2m7yKE6bCe3fMhatFZFr2fcSswDzRUnAUiHhWg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@ng-select/ng-select": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-10.0.3.tgz", + "integrity": "sha512-Ma8pzKMI5TWnsKgOiONQLGeUeTko9gI6AtqpMMOVhrCktjtUSo9h5N17WomHRGtba9D7QviTZcR7UBhKOPwZ7g==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@ngtools/webpack": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.0.5.tgz", + "integrity": "sha512-G/ppIWbcYsLQhSzmLXd3KvApDrW1HUNPVEPBZuSXWZ1FpWZ4VsMDm75ZSGwvDzVoxH0BJB1OYvQZespxIS/WsA==", + "dev": true + }, + "@ngx-loading-bar/core": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@ngx-loading-bar/core/-/core-6.0.2.tgz", + "integrity": "sha512-8r+OQEYXwvU+2ZXK6CY3Guh2yJuG8pQ2XNryHVbPZB2Ub3VmzhGWqjxXAQgxmsi+GxrD4m+nGmGZPeOrNH1ztA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@ngx-loading-bar/router": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@ngx-loading-bar/router/-/router-6.0.2.tgz", + "integrity": "sha512-el+32ysDhqr46Zcg+H8UiKpOEz43qY0++CUxj8DADLRm3mAzKqNn/X+5qhFQS4o5Nb/SdvZn5apfFlXoNNUViQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@ngx-translate/core": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", + "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", + "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", + "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", + "dev": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "requires": { + "which": "^3.0.0" + }, + "dependencies": { + "which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/run-script": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", + "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "dependencies": { + "which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@scarf/scarf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.1.tgz", + "integrity": "sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==" + }, + "@schematics/angular": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.0.5.tgz", + "integrity": "sha512-lmns1eJM42RFlv1GPrNwe7TV70hyrIiadyPhuJmeT8qp8cxGPRJ3yHFUdtB7qPv0OkwfI/HVSeZwlnfNXQhiQg==", + "requires": { + "@angular-devkit/core": "15.0.5", + "@angular-devkit/schematics": "15.0.5", + "jsonc-parser": "3.2.0" + } + }, + "@schematics/update": { + "version": "0.901.13", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.13.tgz", + "integrity": "sha512-Q+jIzDP01XvXLiDfuiBsDBE18KOA2aduNuHnTlRJpWQuMR16J2sOSrHXXn53oZ14cqiUSdUWDTivMpaUGkXd5g==", + "requires": { + "@angular-devkit/core": "9.1.13", + "@angular-devkit/schematics": "9.1.13", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.6", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.4", + "semver": "7.1.3", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.13.tgz", + "integrity": "sha512-bwehVRsva9OWfh/yuEh9VU+0Gr1T7DHJLe8tpZk/VsIkGOD0IszEPZOIEK23bg32yiff9bh6qJEPMA7ZBYEQHg==", + "requires": { + "ajv": "6.12.3", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.13.tgz", + "integrity": "sha512-DZBmfYE6xIfC6PDMvQpR8B31TtLWOmSeTQPnmSm9gj6OZpyqFqoGWOz/0l05FH6zC8HLthAAFJSEnPYyhzWDvg==", + "requires": { + "@angular-devkit/core": "9.1.13", + "ora": "4.0.3", + "rxjs": "6.5.4" + } + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "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==", + "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==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "ini": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", + "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "npm-registry-fetch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "pacote": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==" + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "requires": { + "builtins": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + } + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@swimlane/ngx-datatable": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-datatable/-/ngx-datatable-20.1.0.tgz", + "integrity": "sha512-oHnnx1QRNmv10l5UME13v5JP3M3GesM9K3QH6TRYo2C7UbbhY7vL5EZ4HGqcvtMMW4FOzqNOSltE++IVL99F3g==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@trafficguard/device-detector-js": { + "version": "2.2.1-3.13.0", + "resolved": "https://registry.npmjs.org/@trafficguard/device-detector-js/-/device-detector-js-2.2.1-3.13.0.tgz", + "integrity": "sha512-dlcdmoR2TZF2h2ufBlGJ16UqPWf1vvvqB3nwbxKW8HiCc8d7wds1L69CWPeHWYLKWg0F0Ur9NLXcyAzmH7XFmA==" + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/chartist": { + "version": "0.9.48", + "resolved": "https://registry.npmjs.org/@types/chartist/-/chartist-0.9.48.tgz", + "integrity": "sha512-whqb8v+GHdmqczmIZa+lypR/crR7lrW2paE1Y6u/u2mgKZhDB5AyV+F9SWEPVoEpCYCdvr8qmJACKSofeMShGg==" + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/echarts": { + "version": "4.9.16", + "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.16.tgz", + "integrity": "sha512-bfiagfPw3dWauAIJ9fgoJQoL4hLWlGcltqwbE6LGye0NIY5xnbZau+mDmadCzGojic3MWuFDCUiO25kl4sRGeA==", + "dev": true, + "requires": { + "@types/zrender": "*" + } + }, + "@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "@types/express": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.31", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/google.maps": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.51.0.tgz", + "integrity": "sha512-44/oQYjc5D6kxBcI3Qk9rk3IIOMwnlEMWDV7pwPJ2YI89s5Q1OzDrFvR7QJ3LFrpVXEhig+gyagFg54+foinFg==" + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.1.tgz", + "integrity": "sha512-Vu8l+UGcshYmV1VWwULgnV/2RDbBaO6i2Ptx7nd//oJPIZGhoI1YLST4VKagD2Pq/Bc2/7zvtvhM7F3p4SN7kQ==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/jspdf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/jspdf/-/jspdf-2.0.0.tgz", + "integrity": "sha512-oonYDXI4GegGaG7FFVtriJ+Yqlh4YR3L3NVDiwCEBVG7sbya19SoGx4MW4kg1MCMRPgkbbFTck8YKJL8PrkDfA==", + "dev": true, + "requires": { + "jspdf": "*" + } + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==", + "optional": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/zrender": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.3.tgz", + "integrity": "sha512-EPI269lkHNsObwILJ1k1z7znLjKyePuWRy/XKK0shSGpBb9cIX307arcwJV4+2NeZj5wEjN06r4D8yFv7sI06g==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/type-utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + } + }, + "@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webcomponents/webcomponentsjs": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.7.0.tgz", + "integrity": "sha512-j161Z9oiy8k74vchdrQGihfSp7QulrTclCUiPo0D7JF6/RjpXAmB0ThlTAFlSElkgqg0vdFgNAXaX9ZHZy25wQ==" + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "angular-archwizard": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/angular-archwizard/-/angular-archwizard-7.0.0.tgz", + "integrity": "sha512-2yLRWGOjNx4U++awtEmaHmJyJANQ8gUlBHbH4fWHJ0V16gT0SOiM+tg1L2Tpfg+RvFkz02+MltJichJvFwce5w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "angular-calendar": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.31.0.tgz", + "integrity": "sha512-QGPObUmOYLr4IeSaj1pzZjcycN6otYx+SbeezJuujstXR9f2wo4CtMlBQ+SU+ZF5VFfrdYge8qkxMGCLBLBRrw==", + "requires": { + "@scarf/scarf": "^1.1.1", + "angular-draggable-droppable": "^8.0.0", + "angular-resizable-element": "^7.0.0", + "calendar-utils": "^0.10.4", + "positioning": "^2.0.1", + "tslib": "^2.4.1" + } + }, + "angular-draggable-droppable": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-8.0.0.tgz", + "integrity": "sha512-+gpSNBbygjV1pxTxsM3UPJKcXHXJabYoTtKcgQe74rGnb1umKc07XCBD1qDzvlG/kocthvhQ12qfYOYzHnE3ZA==", + "requires": { + "@mattlewis92/dom-autoscroller": "^2.4.2", + "tslib": "^2.4.1" + } + }, + "angular-resizable-element": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/angular-resizable-element/-/angular-resizable-element-7.0.2.tgz", + "integrity": "sha512-/BGuNiA38n9klexHO1xgnsA3VYigj9v+jUGjKtBRgfB26bCxZKsNWParSu2k3EqbATrfAJC4Nl8f7cORpJFf4w==", + "requires": { + "tslib": "^2.3.0" + } + }, + "angularx-flatpickr": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/angularx-flatpickr/-/angularx-flatpickr-7.0.0.tgz", + "integrity": "sha512-XPU+Dxt9hsFf4yDS5CDp0Zikz5alxkvDFFj8fyToHn6b8aF7jJNzUZ05dnUKq5Gcit/G3yuW5mtcDNO2klY+xA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autolinker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-4.0.0.tgz", + "integrity": "sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "babel-loader": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.0.tgz", + "integrity": "sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "requires": { + "@babel/types": "^7.9.6" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "bootstrap": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "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" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "requires": { + "semver": "^7.0.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.2.tgz", + "integrity": "sha512-rYUs2x4OjSgCQND7nTrh21AHIBFgd7s/ctAYvU3a8u+nK+R5YaX/SFPDYz4Azz7SGL6+6L9ZZWI4Kawpb7grzQ==", + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==" + } + } + }, + "calendar-utils": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.10.4.tgz", + "integrity": "sha512-gBK4xCJ42yjaUKwuUha6cZOfxAmGzvSgbdAaX3xLRioeKbYoOK1x1qeD6dch72rsMZlTgATPbBBx42bnkStqgQ==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001442", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", + "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==" + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==" + }, + "canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "optional": true, + "requires": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "requires": { + "is-regex": "^1.0.3" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chart.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.2.tgz", + "integrity": "sha512-9L1w6WLPq6ztiWVVOYtDtpo0CUsBKDWPrUEdwChAyzczaikqeSwNKEv3QpJ7EO4ICcLSi6UDVhgvcnUhRJidRA==", + "requires": { + "@kurkle/color": "^0.3.0" + } + }, + "chartist": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/chartist/-/chartist-0.11.4.tgz", + "integrity": "sha512-H4AimxaUD738/u9Mq8t27J4lh6STsLi4BQHt65nOtpLk3xyrBPaLiLMrHw7/WV9CmsjGA02WihjuL5qpSagLYw==" + }, + "chartist-plugin-tooltips": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/chartist-plugin-tooltips/-/chartist-plugin-tooltips-0.0.17.tgz", + "integrity": "sha512-frXv269MyRHfuhyZILdTTsNG4PP3+Ab0NkysdnMk73aN4w76oWarsGguuciYzZawKrctp8RZzU/W44A4+Y4vOg==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "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 + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==" + }, + "core-js-compat": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "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.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "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 + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "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" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "requires": { + "utrie": "^1.0.2" + } + }, + "css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" + }, + "deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + } + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" + }, + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==", + "peer": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "dialog-polyfill": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.4.10.tgz", + "integrity": "sha512-j5yGMkP8T00UFgyO+78OxiN5vC5dzRQF3BEio+LhNvDbyfxWBsi3sfPArDm54VloaJwy2hm3erEiDWqHRC8rzw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "requires": { + "domelementtype": "^2.3.0" + } + }, + "dompurify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==", + "optional": true + }, + "domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.1.tgz", + "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.4.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.5.tgz", + "integrity": "sha512-mjEyaa4zhuuRhaSLOdjEb57X0XPP9JEsnXI4E+ivhwT0GgzUogARx4MqoY1jQyB+4Bkz3BUOmzL7t9RMKmlG3g==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "optional": true, + "requires": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.13.tgz", + "integrity": "sha512-0am8fvHKACwofWQxtZLTMv4mDiDwUrdt0DyRaQ2r7YWIpkmpg4GWYy0EyW+gPjiPHzkZKqN9d3UYsZGgvaAASw==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "eslint": { + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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 + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "peer": true + }, + "event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "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" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "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", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.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" + } + }, + "firebase": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.15.0.tgz", + "integrity": "sha512-Fa8qFahDY/pMYMzwPGcfpUkAS3Q55qJ0QKD+5xnXjSX/jVHsJqoXtxapmyDCfAKktiLhXIcRElW1VDVd9xGwQQ==", + "requires": { + "@firebase/analytics": "0.9.0", + "@firebase/analytics-compat": "0.2.0", + "@firebase/app": "0.9.0", + "@firebase/app-check": "0.6.0", + "@firebase/app-check-compat": "0.3.0", + "@firebase/app-compat": "0.2.0", + "@firebase/app-types": "0.9.0", + "@firebase/auth": "0.21.0", + "@firebase/auth-compat": "0.3.0", + "@firebase/database": "0.14.0", + "@firebase/database-compat": "0.3.0", + "@firebase/firestore": "3.8.0", + "@firebase/firestore-compat": "0.3.0", + "@firebase/functions": "0.9.0", + "@firebase/functions-compat": "0.3.0", + "@firebase/installations": "0.6.0", + "@firebase/installations-compat": "0.2.0", + "@firebase/messaging": "0.12.0", + "@firebase/messaging-compat": "0.2.0", + "@firebase/performance": "0.6.0", + "@firebase/performance-compat": "0.2.0", + "@firebase/remote-config": "0.4.0", + "@firebase/remote-config-compat": "0.2.0", + "@firebase/storage": "0.10.0", + "@firebase/storage-compat": "0.2.0", + "@firebase/util": "1.8.0" + } + }, + "firebaseui": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/firebaseui/-/firebaseui-6.0.2.tgz", + "integrity": "sha512-Jwwn2I657loKrvedeCrwED9UibLFl8Cm0uH2ntDBSCpruWzG4HXlIWb35WsDdXMILRPQjJ1PwVwuRsrnsxcaXA==", + "dev": true, + "requires": { + "dialog-polyfill": "^0.4.7", + "material-design-lite": "^1.2.0" + } + }, + "fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "peer": true, + "requires": { + "desandro-matches-selector": "^2.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==" + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", + "peer": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "google-libphonenumber": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.31.tgz", + "integrity": "sha512-l3bzAkfN4ITICKvuqEiY7JN06RxDAviOoKMtD2KfGYjGK3btPO8Xav7k0fgmf1Ud/pEm523yBh1/s/xDtKEvnw==" + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "requires": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + } + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "icheck": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", + "integrity": "sha512-1oDqj9ikiH4csFWKZnfbD1S9IY/MqzEt4cir6PIfkT84D/8QYaAZFrplXoyz5eaATmaoawY3KMTkMAO+fP4wGg==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true + }, + "idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.0.tgz", + "integrity": "sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", + "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "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==" + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "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 + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.5.0.tgz", + "integrity": "sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-datepicker": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/js-datepicker/-/js-datepicker-5.18.2.tgz", + "integrity": "sha512-lBh5tIwb1ewDVlNHuwczoLiMhTFWnGYuHSA7ONAPKyMeofIFZDFGeOZ71UTY/Mk2evJJt+L66ec/RiXUy8XzEg==" + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz", + "integrity": "sha512-MoKIg/lBeQALqjYnqEanikfo3zBKRwclpXJexdF0FUniYAAN2ypEIXBEtpQb+9BkLFtDK1fyTLAsnGlyGfLGxw==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + }, + "jspdf": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", + "requires": { + "@babel/runtime": "^7.14.0", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.2.0", + "fflate": "^0.4.8", + "html2canvas": "^1.0.0-rc.5" + } + }, + "jspdf-autotable": { + "version": "3.5.28", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.5.28.tgz", + "integrity": "sha512-eNYt5mUxCGa1Y0bmOhGXU+Va/P2jNkgOgUPGIpZp2rbZUauU34s0q3S59Jps5zi2u90nQy7DmD/D+sdesJLIEA==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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 + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "requires": { + "which": "^1.2.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "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 + } + } + }, + "less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "lit": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.0.tgz", + "integrity": "sha512-GUKVozhomdYlFVuB4UNipbPB5RcXNX4ns43uDA1gSTZN1oHe7mnj05fpYbESxXfxg/Gn905HTIzymCFrr/cn3A==", + "requires": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.2.0", + "lit-html": "^2.6.0" + } + }, + "lit-element": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", + "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "requires": { + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" + } + }, + "lit-html": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.6.0.tgz", + "integrity": "sha512-slNAAYfvC7LxeryDOnPFl5uTpxGYGJ6UR9SFmfY+gQ+sf30z1atDPXlgjcSTtwymNdlwDhfGjq+EemQRXp9z1g==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", + "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + } + }, + "logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "requires": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + } + } + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" + }, + "masonry-layout": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", + "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", + "peer": true, + "requires": { + "get-size": "^2.0.2", + "outlayer": "^2.1.0" + } + }, + "material-design-lite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/material-design-lite/-/material-design-lite-1.3.0.tgz", + "integrity": "sha512-ao76b0bqSTKcEMt7Pui+J/S3eVF0b3GWfuKUwfe2lP5DKlLZOwBq37e0/bXEzxrw7/SuHAuYAdoCwY6mAYhrsg==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mingo": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/mingo/-/mingo-6.2.5.tgz", + "integrity": "sha512-z3RwmW4BhaUoKYxToC/Ed9ijC3VtDesQ2Dxp7ATKGrNPsBnJ6+kpSjpT0Yd26EVYoq9HehrPYhkKDdH2IQui+Q==" + }, + "mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "modern-normalize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", + "optional": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "ng-block-ui": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/ng-block-ui/-/ng-block-ui-3.0.2.tgz", + "integrity": "sha512-EP3IXP8WSoKQOAwunf/v77aydcBCSLkEm5K8duRMSXFsnrcTdNqUiaLDKCf9U3COHY52IVBJcLb9PGhMBCWVSA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "ng-chartist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ng-chartist/-/ng-chartist-4.1.0.tgz", + "integrity": "sha512-mnVZS82RU1DaGuU57lq095nFn55kqJbbaZFUMbbAYsX5foZ5JmvXfaIvfr9y1PdBzkpc4UckaAWHxHF3qIriPA==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "ng-multiselect-dropdown": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/ng-multiselect-dropdown/-/ng-multiselect-dropdown-0.3.9.tgz", + "integrity": "sha512-y5fb8SVz8c59vEJGVe5XZ5ov6LZNoO8FqMxCBvpZKqw9tY1+f7UCDfILleOWPy8QMxO2Fpr8b+B+Az0zOS6b9g==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "ng2-charts": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", + "dev": true, + "requires": { + "lodash-es": "^4.17.15", + "tslib": "^2.3.0" + } + }, + "ngx-clipboard": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.1.0.tgz", + "integrity": "sha512-dUJl1cNtdkCqL953oAhP7wmUPFrqW2aDg5OPhwPU9R3cLEdQgU2NbsHEUz4zaPyEopTXu8SR37onVm1Ep8qOHg==", + "dev": true, + "requires": { + "ngx-window-token": ">=6.0.0", + "tslib": "^2.0.0" + } + }, + "ngx-countdown": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-15.0.0.tgz", + "integrity": "sha512-AUmdLyqho8zj1hxryW2Zh8xyrvHqtVEH4SYDZHfbeJ3UungSF8SFH4oQlaTTeNAIvuc7oiazuNhqWXKz/m3jnQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-custom-validators": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/ngx-custom-validators/-/ngx-custom-validators-11.0.1.tgz", + "integrity": "sha512-dpbDjekLDLnTZDFKvRREFfVpywl5Z1YBF00nQQ3A9DVZhSXt/YY5vm7/v1ElwiSS1ogLcPZX0Qrl9VKUrvpnvQ==", + "dev": true, + "requires": { + "@angular/common": "~11.0.0", + "@angular/compiler": "~11.0.0", + "@angular/core": "~11.0.0", + "@angular/forms": "~11.0.0", + "@angular/platform-browser": "~11.0.0", + "@angular/platform-browser-dynamic": "~11.0.0", + "moment": "^2.28.0", + "rxjs": "~6.6.3", + "tslib": "^2.0.0", + "zone.js": "~0.11.1" + }, + "dependencies": { + "@angular/animations": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.0.9.tgz", + "integrity": "sha512-/KsMBUbRTqp29CNLbRIe4/8IxWxhnbUUZWqULaySnRDDW/p2m4miPcFVSp4zjrDZPqdXSibDiCyTiWmQ5PTuKA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/common": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.0.9.tgz", + "integrity": "sha512-QYJx+Y7Bmqdwtyk8TZDqF6io7gPaiZnUPrS/JbV/qB1QA8Q0OVaJSRRy/d0ahsc385+OiUhT7gVnbEh92oWXmQ==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/compiler": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.0.9.tgz", + "integrity": "sha512-H2IfS6ciPWN0kmKhbwDuvS8ry5GcRFKfoyA/HGk+nQwCE2nAHC8VNwldbtoisO7XfRWr/uaTrh6z/vdfxsAiHw==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/core": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.0.9.tgz", + "integrity": "sha512-J0ff3UK2Cw7Z0eNLtUXrpMFvmmkvPPZWLYIwimyc1pZys7qsIVT6cy2ybGEOhbJgC6qt3fo0DoJV3pGXTalb8A==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/forms": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.0.9.tgz", + "integrity": "sha512-DHi4puesP5iSBToT4FZVqLYZZpZDlAy2wgBe+OhCq7GCIqi8OLejB3bp9BnUd/WnNAHJd3zEjytexih6EPE0Xg==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.9.tgz", + "integrity": "sha512-snuq8SaIRuVDYJLy80kYCEuVITZZbtG3PvxamATvzpgYpAzBskToc4/7LKJk0IEVSMvKzi8eSBCDaK2f2ZJB3A==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.9.tgz", + "integrity": "sha512-OCbXCXxPvpPu7vh3Ra1X+FfqA27TP2NcL/AlWhPTSGB+ggrEUgfdUjBSsULpMVPsD6pG/runGdM9CQjEK7g+DQ==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "dev": true, + "requires": { + "tslib": "^2.3.0" + } + } + } + }, + "ngx-drag-and-drop-lists": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/ngx-drag-and-drop-lists/-/ngx-drag-and-drop-lists-1.3.3.tgz", + "integrity": "sha512-0s3xNcdzTzospHdiftS5yCoYrrLSqSOOu37IzzB11r/fhmrpJR2+I7HYJJWwroEni7arlADqSldnMv3y3UKYLQ==", + "requires": { + "@angular/cli": "~9.1.13", + "@angular/compiler": "~9.1.13", + "@angular/compiler-cli": "~9.1.13", + "typescript": "~3.8.3" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.901.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.13.tgz", + "integrity": "sha512-vwIVlG+4TJKcnwMcgpkrMXXzjKnk87AEmgERynJVxGYpRJYppHWd6ul7bYdJQATuLUNbJrgdc+lvU4PZqi8Z2A==", + "requires": { + "@angular-devkit/core": "9.1.13", + "rxjs": "6.5.4" + } + }, + "@angular-devkit/core": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.13.tgz", + "integrity": "sha512-bwehVRsva9OWfh/yuEh9VU+0Gr1T7DHJLe8tpZk/VsIkGOD0IszEPZOIEK23bg32yiff9bh6qJEPMA7ZBYEQHg==", + "requires": { + "ajv": "6.12.3", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.13.tgz", + "integrity": "sha512-DZBmfYE6xIfC6PDMvQpR8B31TtLWOmSeTQPnmSm9gj6OZpyqFqoGWOz/0l05FH6zC8HLthAAFJSEnPYyhzWDvg==", + "requires": { + "@angular-devkit/core": "9.1.13", + "ora": "4.0.3", + "rxjs": "6.5.4" + } + }, + "@angular/cli": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.13.tgz", + "integrity": "sha512-KfonsB9uBdYbCipjPX/vk+ouMNT5ugxG5O0Y3uMKDnzSYGz+wKjHxOYR+lx1kaQtEsBOTX0DUmce0shZZKbbGQ==", + "requires": { + "@angular-devkit/architect": "0.901.13", + "@angular-devkit/core": "9.1.13", + "@angular-devkit/schematics": "9.1.13", + "@schematics/angular": "9.1.13", + "@schematics/update": "0.901.13", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.1.1", + "ini": "1.3.6", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.0.0", + "open": "7.0.3", + "pacote": "9.5.12", + "read-package-tree": "5.3.1", + "rimraf": "3.0.2", + "semver": "7.1.3", + "symbol-observable": "1.2.0", + "universal-analytics": "0.4.20", + "uuid": "7.0.2" + } + }, + "@angular/compiler": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.13.tgz", + "integrity": "sha512-9MLB1Xx7odKuxDoybVwiOB1ZEUZpL8FurYm4RVuW39ntsUt0IMC9Hb8UagZLTAWhaWSHydkD/KBQVVobGqd0lA==" + }, + "@angular/compiler-cli": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.13.tgz", + "integrity": "sha512-40jbfMr1FinOqUyG3k4Moiytjs/Z8zKBgP3S5Qfn80EBJItRdFXwNtvaOi/onaag4+Mv+vigShwsgCewLbt/kA==", + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "yargs": "^16.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@schematics/angular": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.13.tgz", + "integrity": "sha512-coHvhu2jXVCN3P5Ux5ArDousMWDq4W6eInJPBpAI6yidRW1ViPVF58Bas/+Txcbhubv2cZViBXGq0OAGdJIvTQ==", + "requires": { + "@angular-devkit/core": "9.1.13", + "@angular-devkit/schematics": "9.1.13" + } + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + } + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.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==", + "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==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==" + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha512-wYid1zXctNLgas1pZ8q8ChdsnGg4DHZVqMzJ7pOE85q5BppAEXgQGSoOjVgrcw5yI7pzz49p9AfMhM7z5PRuaw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "ini": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", + "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==" + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "npm-registry-fetch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "open": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "pacote": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==" + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==" + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "uuid": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==" + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "requires": { + "builtins": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "ngx-dropzone": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ngx-dropzone/-/ngx-dropzone-3.1.0.tgz", + "integrity": "sha512-5RBaEl07QUcY6sv/BBPyIxN6nbWY/KqTGheEKgbuGS0N1QPFY7NJUo8+X3fYUwQgLS+wjJeqPiR37dd0YNDtWA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "ngx-echarts": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/ngx-echarts/-/ngx-echarts-15.0.1.tgz", + "integrity": "sha512-tsGQxkEF232P7Q8tWJ45elKerHNWCbGJ+z7UMPFs7rYdQk4fyGDXu9pK6+R7OPVklCF0+7V4EiL7eHRfN+MYIg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-google-places-autocomplete": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ngx-google-places-autocomplete/-/ngx-google-places-autocomplete-2.0.5.tgz", + "integrity": "sha512-TApaE+X/eaZBDduXvmOMsMC5FTWv3CmgbZ+Iv7NsnrBWJeonPF2SYMGs3vaydM3CY3Rch14/K94ecU0mfyRVWw==" + }, + "ngx-image-cropper": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/ngx-image-cropper/-/ngx-image-cropper-6.3.2.tgz", + "integrity": "sha512-w24kxXyXxwLdnaZlaIG8KI71sdw4vp+O7uYLTaWmxAbFOKOv9o6ko2CmtC7u5B3jXD0OuOzQgJJSGkJZZbnNcA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-masonry": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/ngx-masonry/-/ngx-masonry-14.0.1.tgz", + "integrity": "sha512-KsTmLbqSZqWFe6owK58OEqbZ+lGM6Yun2LqWlYBp5VQHkmb7bK1rVmQRPEFESY3pGx3kTn9ol3rchOuxUMNU+w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "ngx-perfect-scrollbar": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.1.tgz", + "integrity": "sha512-f9IaDJGlBzSxnJ3Ki76n2JdzfQngUFyCf0E+CuVLaR5jL0IJDcTu7vOs8wexXunRMTd8xvIv0+sdIxf8hXAGWg==", + "requires": { + "perfect-scrollbar": "1.5.0", + "resize-observer-polyfill": "^1.5.0", + "tslib": "^2.0.0" + } + }, + "ngx-quill": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/ngx-quill/-/ngx-quill-20.0.1.tgz", + "integrity": "sha512-X02Me3RYuQgoOHXzYrkdi4aaDHPkyTZTUib+2amKxAMpM9LEOh/QYrFjudreQJtih6rhV6kRorO5AS4UueX9Mw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-spinner": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-15.0.1.tgz", + "integrity": "sha512-7DjETmBpuXTwI68ad1xMKpwt4Cyz1eyu8E7AJcFiKa+8JAnbo0k1qfvWur0aemncRNxDxHoyl6jw42MsnE/B+g==", + "dev": true, + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-toastr": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-16.0.2.tgz", + "integrity": "sha512-J6SueNCaGwm/gpXdsG56UzMEAcuayYWEW6NmIrNoe5iP7lOUohg4xYXWipkbMH9wGWmLPD9gU8AufUVWMplCvg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-ui-switch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/ngx-ui-switch/-/ngx-ui-switch-14.0.3.tgz", + "integrity": "sha512-SZ8ZnTCuNJgNWuY3/mOG3TdsRUNPCX3vGdCKKx1ZHVMTUynerJQlTWck2JrYlnrexNnd7wy4P10jDvdtDwoYeg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-window-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ngx-window-token/-/ngx-window-token-6.0.0.tgz", + "integrity": "sha512-IeLKO1jzfzSvZ6vlAt4QSY/B5XcHEhdOwTjqvWEPt6/esWV9T3mA2ln10kj6SCc9pUSx4NybxE10gcyyYroImg==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-force-resolutions": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/npm-force-resolutions/-/npm-force-resolutions-0.0.10.tgz", + "integrity": "sha512-Jscex+xIU6tw3VsyrwxM1TeT+dd9Fd3UOMAjy6J1TMpuYeEqg4LQZnATQO5vjPrsARm3und6zc6Dii/GUyRE5A==", + "requires": { + "json-format": "^1.0.1", + "source-map-support": "^0.5.5", + "xmlhttprequest": "^1.8.0" + } + }, + "npm-install-checks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", + "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "dev": true + }, + "npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.0" + } + }, + "npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + } + } + }, + "npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.2.tgz", + "integrity": "sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "requires": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", + "peer": true, + "requires": { + "ev-emitter": "^1.0.0", + "fizzy-ui-utils": "^2.0.0", + "get-size": "^2.0.2" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.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" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "15.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.0.6.tgz", + "integrity": "sha512-dQwcz/sME7QIL+cdrw/jftQfMMXxSo17i2kJ/gnhBhUvvBAsxoBu1lw9B5IzCH/Ce8CvEkG/QYZ6txzKfn0bTw==", + "dev": true, + "requires": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^2.1.0", + "minipass": "^3.1.6", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "requires": { + "through": "~2.3" + } + }, + "perfect-scrollbar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz", + "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "photoswipe": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/photoswipe/-/photoswipe-4.1.3.tgz", + "integrity": "sha512-89Z43IRUyw7ycTolo+AaiDn3W1EEIfox54hERmm9bI12IB9cvRfHSHez3XhAyU8XW2EAFrC+2sKMhh7SJwn0bA==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "positioning": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/positioning/-/positioning-2.0.1.tgz", + "integrity": "sha512-DsAgM42kV/ObuwlRpAzDTjH9E8fGKkMDJHWFX+kfNXSxh7UCCQxEmdjv/Ws5Ft1XDnt3JT8fIDYeKNSE2TbttA==" + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "preact": { + "version": "10.11.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==", + "peer": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "requires": { + "genfun": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "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 + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + }, + "dependencies": { + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + } + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "requires": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + }, + "dependencies": { + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "requires": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + } + } + } + }, + "quill-delta": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.0.0.tgz", + "integrity": "sha512-lVORU8dBPJdxPmwtdGhfRcz2cekn8Osuj5kwHoPMQ3MNlDT/IZ0CGUnQ/tLsAaTn31LWcDC1KyL+gkiGbBlBBw==", + "requires": { + "fast-diff": "1.2.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + } + }, + "quill-mention": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/quill-mention/-/quill-mention-3.1.0.tgz", + "integrity": "sha512-uyjGK8QPJHEcjvNc3wUJy6a05Oiu+6JJ0N9SFAwjYHYThgMzlKucyD975fq28Mr1it8ZFRNiRMPa0sCiVOAEwA==", + "requires": { + "quill": "^1.3.7" + } + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "ramda": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", + "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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 + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-package-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", + "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + } + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "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 + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "requires": { + "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + } + } + }, + "rxfire": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/rxfire/-/rxfire-6.0.3.tgz", + "integrity": "sha512-77nkyffHh7jgfi1YA/N9RI+kWxYpgKk6GRML1lyersvaqbJt4hkvWwk1rWib9Rb5Lr5mT+Ha45lu7nM79sJCZA==", + "requires": { + "tslib": "^1.9.0 || ~2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "saas": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/saas/-/saas-1.0.0.tgz", + "integrity": "sha512-FgayhFS18BlPfcyMcOqxD7PIyNyUjqyv8R+rsr3X2KRK2icEUL4uvWBF+lZ0IPqJIO2kUO0d20OXY+R+pdriqg==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.57.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", + "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz", + "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "save": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/save/-/save-2.9.0.tgz", + "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==", + "requires": { + "async": "^3.2.2", + "event-stream": "^4.0.1", + "lodash.assign": "^4.2.0", + "mingo": "^6.1.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.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" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socket.io": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", + "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "requires": { + "minipass": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "stackblur-canvas": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz", + "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==", + "optional": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "streamroller": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.4.tgz", + "integrity": "sha512-Ha1Ccw2/N5C/IF8Do6zgNe8F3jQo8MPBnMBGvX0QjNv/I97BcNRzK6/mzOpZHHK7DjMLTI3c7Xw7Y1KvdChkvw==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "requires": { + "utrie": "^1.0.2" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tree-ngx": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tree-ngx/-/tree-ngx-4.3.0.tgz", + "integrity": "sha512-0upn+MgoxzVhB50OUK9e4P8tKAIB9QXRItE9H1N7hEJs/J0yVvHV0q3ax+WqCDuCKDagub7JfcMKbA8RLVwgzw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + }, + "type-is": { + "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" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" + }, + "ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "requires": { + "base64-arraybuffer": "^1.0.2" + } + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + } + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "webpack": { + "version": "5.75.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "requires": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "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 + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zone.js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.12.0.tgz", + "integrity": "sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q==", + "requires": { + "tslib": "^2.3.0" + } + }, + "zrender": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.1.tgz", + "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + } + } +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..6d1ec69 --- /dev/null +++ b/package.json @@ -0,0 +1,139 @@ +{ + "name": "modern-admin-angular", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e", + "ngcc": "ngcc --properties es2015 browser main module --async false --first-only", + "postinstall": "npm run ngcc", + "preinstall": "npx npm-force-resolutions", + "pwa": "ng build --prod && sw-precache --root=dist --config=precache-config.js" + }, + "private": true, + "dependencies": { + "@angular/animations": "^15.0.4", + "@angular/cdk": "^15.0.4", + "@angular/common": "^15.0.4", + "@angular/compiler": "^15.0.4", + "@angular/core": "^15.0.4", + "@angular/fire": "^7.5.0", + "@angular/forms": "^15.0.4", + "@angular/localize": "^15.0.4", + "@angular/platform-browser": "^15.0.4", + "@angular/platform-browser-dynamic": "^15.0.4", + "@angular/router": "^15.0.4", + "@cds/core": "^6.2.3", + "@fnxone/ngx-photoswipe": "^1.0.11", + "@fullcalendar/angular": "^6.0.2", + "@ng-bootstrap/ng-bootstrap": "^14.0.0", + "@ng-select/ng-select": "^10.0.1", + "@ngx-loading-bar/core": "^6.0.2", + "@ngx-loading-bar/router": "^6.0.2", + "@ngx-translate/core": "^14.0.0", + "@popperjs/core": "^2.11.6", + "@trafficguard/device-detector-js": "^2.2.1-3.13.0", + "@types/google.maps": "^3.51.0", + "@webcomponents/webcomponentsjs": "^2.7.0", + "ajv-keywords": "^5.1.0", + "angular-archwizard": "^7.0.0", + "angular-calendar": "^0.31.0", + "angularx-flatpickr": "^7.0.0", + "autolinker": "^4.0.0", + "bootstrap": "^5.2.3", + "chart.js": "^4.1.1", + "chartist": "^0.11.4", + "chartist-plugin-tooltips": "0.0.17", + "clone": "^2.1.2", + "core-js": "^3.27.1", + "css-select": "^5.1.0", + "date-fns": "^2.28.0", + "deep-equal": "^2.0.5", + "echarts": "^5.4.1", + "eventemitter3": "^5.0.0", + "file-saver": "^2.0.5", + "flatpickr": "^4.6.13", + "google-libphonenumber": "^3.2.31", + "html2canvas": "^1.0.0-rc.7", + "icheck": "^1.0.2", + "js-datepicker": "^5.18.2", + "jspdf": "^2.5.1", + "jspdf-autotable": "^3.5.28", + "lodash-es": "^4.17.21", + "ng-chartist": "^4.1.0", + "ng-multiselect-dropdown": "^0.3.9", + "ngx-countdown": "^15.0.0", + "ngx-drag-and-drop-lists": "^1.3.3", + "ngx-dropzone": "^3.1.0", + "ngx-echarts": "^15.0.1", + "ngx-google-places-autocomplete": "^2.0.5", + "ngx-image-cropper": "^6.3.2", + "ngx-masonry": "^14.0.1", + "ngx-perfect-scrollbar": "^10.1.1", + "ngx-quill": "^20.0.1", + "ngx-toastr": "^16.0.1", + "ngx-ui-switch": "^14.0.3", + "npm-force-resolutions": "0.0.10", + "photoswipe": "^4.1.3", + "pug": "^3.0.2", + "quill": "^1.3.7", + "quill-delta": "^5.0.0", + "quill-mention": "^3.1.0", + "rxjs": "^7.5.5", + "sass": "^1.57.1", + "save": "^2.9.0", + "tree-ngx": "^4.3.0", + "tslib": "^2.4.1", + "util": "^0.12.5", + "uuid": "^9.0.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^15.0.4", + "@angular-devkit/build-webpack": "^0.1500.4", + "@angular-eslint/builder": "15.1.0", + "@angular-eslint/eslint-plugin": "15.1.0", + "@angular-eslint/eslint-plugin-template": "15.1.0", + "@angular-eslint/schematics": "15.1.0", + "@angular-eslint/template-parser": "15.1.0", + "@angular/cli": "^15.0.4", + "@angular/compiler-cli": "^15.0.4", + "@angular/language-service": "^15.0.4", + "@swimlane/ngx-datatable": "20.1.0", + "@types/chartist": "^0.9.38", + "@types/echarts": "^4.9.15", + "@types/jasmine": "^4.3.1", + "@types/jasminewd2": "^2.0.8", + "@types/jspdf": "^2.0.0", + "@types/node": "^18.11.18", + "@typescript-eslint/eslint-plugin": "5.48.0", + "@typescript-eslint/parser": "5.48.0", + "eslint": "^8.30.0", + "firebase": "^9.15.0", + "firebaseui": "^6.0.2", + "jasmine-core": "~4.5.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "^6.4.1", + "karma-chrome-launcher": "^3.1.1", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "ng-block-ui": "^3.0.2", + "ng2-charts": "^4.1.1", + "ngx-clipboard": "^15.1.0", + "ngx-custom-validators": "^11.0.0", + "ngx-spinner": "^15.0.1", + "postcss": "^8.4.20", + "resize-observer-polyfill": "^1.5.1", + "saas": "^1.0.0", + "ts-node": "~10.9.1", + "typescript": "^4.8.4", + "zone.js": "~0.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.5" + } +} diff --git a/src/.browserslistrc b/src/.browserslistrc new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/src/.browserslistrc @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/src/app/_api/chat/chat.service.spec.ts b/src/app/_api/chat/chat.service.spec.ts new file mode 100644 index 0000000..f9d1b52 --- /dev/null +++ b/src/app/_api/chat/chat.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { ChatService } from './chat.service'; + +describe('ChatService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ChatService = TestBed.get(ChatService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_api/chat/chat.service.ts b/src/app/_api/chat/chat.service.ts new file mode 100644 index 0000000..86f3729 --- /dev/null +++ b/src/app/_api/chat/chat.service.ts @@ -0,0 +1,45 @@ +import { Injectable } from '@angular/core'; +import { AngularFirestore } from '@angular/fire/compat/firestore'; +import { Chats } from 'src/app/content/applications/chat/chats'; +import { Observable } from 'rxjs'; +import { Timestamp, FieldValue, arrayUnion } from "firebase/firestore"; +import { map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class ChatService { + + constructor(private afs: AngularFirestore) { } + + getChats() { + return this.afs.collection('chatroom').snapshotChanges(); + } + + createChatRoom(data) { + return this.afs.collection('chatroom').add(data); + } + + showChat(id): Observable { + const chat = this.afs.doc('chatroom/' + id); + return chat.snapshotChanges() + .pipe( + map(changes => { + const data = changes.payload.data() as Chats; + const chatId = changes.payload.id; + return { chatId, ...data }; + })); + } + + sendMessage(chatId, data) { + return this.afs.collection('chatroom').doc(chatId).update({ + chatHistory: arrayUnion(data) + }); + } + + updateChatStatus (chatId, history) { + return this.afs.collection('chatroom').doc(chatId).update({ + chatHistory: history + }); + } +} diff --git a/src/app/_api/todo/todo.service.spec.ts b/src/app/_api/todo/todo.service.spec.ts new file mode 100644 index 0000000..0fba25f --- /dev/null +++ b/src/app/_api/todo/todo.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { TodoService } from './todo.service'; + +describe('TodoService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: TodoService = TestBed.get(TodoService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_api/todo/todo.service.ts b/src/app/_api/todo/todo.service.ts new file mode 100644 index 0000000..3a46d57 --- /dev/null +++ b/src/app/_api/todo/todo.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from '@angular/core'; +import { AngularFirestore } from '@angular/fire/compat/firestore'; +import firebase from 'firebase/compat/app'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class TodoService { + + formData; + loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + ref = firebase.firestore().collection('todo'); + + constructor(private firestore: AngularFirestore) { + } + + getTODOS(userId) { + return this.firestore.collection('todo', ref => ref.orderBy('createdDate', 'desc') + .where('uid', '==', userId)).snapshotChanges(); + } + + getAssignedTODOS(userId) { + return this.firestore.collection('todo', ref => ref.orderBy('createdDate', 'desc') + .where('assignedTo.uid', '==', userId)).snapshotChanges(); + } + + createTodo(todo): Observable { + return new Observable((observer) => { + this.ref.add(todo).then((doc) => { + observer.next({ + data: doc + }); + }); + }); + } + sendMessage(todoId, data) { + return this.firestore.collection('todo').doc(todoId).update({ + todoComments: data + }); + } + updateTODO(id: string, data): Observable { + return new Observable((observer) => { + this.ref.doc(id).set(data).then(() => { + observer.next(); + }); + }); + } + + deleteTodo(id: string): Promise { + return this.ref.doc(id).delete(); + } +} diff --git a/src/app/_api/user/user.service.spec.ts b/src/app/_api/user/user.service.spec.ts new file mode 100644 index 0000000..9e7fd1c --- /dev/null +++ b/src/app/_api/user/user.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserService } from './user.service'; + +describe('UserService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: UserService = TestBed.get(UserService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_api/user/user.service.ts b/src/app/_api/user/user.service.ts new file mode 100644 index 0000000..9161624 --- /dev/null +++ b/src/app/_api/user/user.service.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import { AngularFirestore } from '@angular/fire/compat/firestore'; +import firebase from 'firebase/compat/app'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + ref = firebase.firestore().collection('users'); + + constructor(private firestore: AngularFirestore) { + } + + getUsers() { + return this.firestore.collection('users').snapshotChanges(); + } + + getCurrentUser(userId): Observable { + return this.firestore.collection('users', ref => ref.where('uid', '==', userId)).snapshotChanges(); + } + + createUser(user) { + return this.ref.add(user); + } + +} diff --git a/src/app/_directives/card.directive.ts b/src/app/_directives/card.directive.ts new file mode 100644 index 0000000..159f2dd --- /dev/null +++ b/src/app/_directives/card.directive.ts @@ -0,0 +1,30 @@ +import { + Directive, + AfterViewInit, + OnDestroy, + ElementRef, + OnInit, + Input, + HostBinding +} from '@angular/core'; + +interface CardOptions { + enableSticky?: boolean; + headOverlay?: boolean; + headLarge?: boolean; + class?: string[]; +} + +@Directive({ + selector: '[mCard]' +}) +export class CardDirective { + card: any; + + @Input() options: CardOptions; + @HostBinding('class') class: any; + + constructor(private el: ElementRef) { + this.class = this.el.nativeElement.classList; + } +} diff --git a/src/app/_directives/image.preload.directive.ts b/src/app/_directives/image.preload.directive.ts new file mode 100644 index 0000000..a577ffb --- /dev/null +++ b/src/app/_directives/image.preload.directive.ts @@ -0,0 +1,23 @@ +import { Directive, Input, HostBinding } from '@angular/core' +/* eslint-disable @angular-eslint/no-host-metadata-property */ +/* eslint-disable @angular-eslint/directive-selector */ +@Directive({ + selector: 'img[default]', + host: { + '(error)': 'updateUrl()', + '(load)': 'load()', + '[src]': 'src' + } +}) +export class ImagePreloadDirective { + @Input() src: string; + @Input() default: string; + @HostBinding('class') className; + + updateUrl() { + this.src = this.default; + } + load() { + this.className = 'image-loaded'; + } +} diff --git a/src/app/_directives/match-height.directive.ts b/src/app/_directives/match-height.directive.ts new file mode 100644 index 0000000..11170b3 --- /dev/null +++ b/src/app/_directives/match-height.directive.ts @@ -0,0 +1,64 @@ +import { Directive, ElementRef, Input, HostListener, AfterViewInit } from '@angular/core'; +/* eslint-disable @angular-eslint/directive-selector */ +@Directive({ + selector: '[matchHeight]' +}) +export class MatchHeightDirective implements AfterViewInit { + // class name to match height + @Input() + matchHeight: string; + + constructor(private el: ElementRef) {} + + ngAfterViewInit() { + // call our matchHeight function here + setTimeout(() => { + this.matchHeights(this.el.nativeElement, this.matchHeight); + }, 700); + } + + matchHeights(parent: HTMLElement, className: string) { + if (!parent) { + return; + } + + // step 1: find all the child elements with the selected class name + const children = parent.getElementsByClassName(className); + + if (!children) { + return; + } + + // Match hight - fix --- comment below code + Array.from(children).forEach((x: HTMLElement) => { + x.style.height = 'initial'; + }); + + // step 2a: get all the child elements heights + const itemHeights = Array.from(children).map( + x => x.getBoundingClientRect().height + ); + + // step 2b: find out the tallest + const maxHeight = itemHeights.reduce((prev, curr) => { + return curr > prev ? curr : prev; + }, 0); + + // step 3: update all the child elements to the tallest height + if (window.innerWidth > 1200) { + Array.from(children).forEach( + (x: HTMLElement) => (x.style.height = `${maxHeight}px`) + ); + } else if (window.innerWidth < 1199) { + Array.from(children).forEach( + (x: HTMLElement) => (x.style.height = `initial`) + ); + } + } + + @HostListener('window:resize') + onResize() { + // call our matchHeight function here + this.matchHeights(this.el.nativeElement, this.matchHeight); + } +} diff --git a/src/app/_directives/sortable.directive.ts b/src/app/_directives/sortable.directive.ts new file mode 100644 index 0000000..7ef2ced --- /dev/null +++ b/src/app/_directives/sortable.directive.ts @@ -0,0 +1,33 @@ +import { Directive, EventEmitter, Input, Output } from '@angular/core'; +export type SortDirection = 'asc' | 'desc' | ''; +const rotate: { [key: string]: SortDirection } = { + asc: 'desc', + desc: '', + '': 'asc' +}; + +export interface SortEvent { + column: string; + direction: SortDirection; +} +/* eslint-disable @angular-eslint/directive-selector */ +/* eslint-disable @angular-eslint/no-host-metadata-property */ +/* eslint-disable @angular-eslint/directive-class-suffix */ +@Directive({ + selector: 'th[sortable]', + host: { + '[class.asc]': 'direction === "asc"', + '[class.desc]': 'direction === "desc"', + '(click)': 'rotate()' + } +}) +export class NgbdSortableHeader { + @Input() sortable: string; + @Input() direction: SortDirection = ''; + @Output() sort = new EventEmitter(); + + rotate() { + this.direction = rotate[this.direction]; + this.sort.emit({ column: this.sortable, direction: this.direction }); + } +} diff --git a/src/app/_guards/auth.guard.ts b/src/app/_guards/auth.guard.ts new file mode 100644 index 0000000..20873ed --- /dev/null +++ b/src/app/_guards/auth.guard.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { AuthService } from '../_services/auth.service'; + +@Injectable() +export class AuthGuard implements CanActivate { + constructor(private router: Router) {} + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + if (localStorage.getItem('currentUser')) { + // Logged in so return true + + return true; + } + + // Not logged in so redirect to login page with the return url + this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } }); + return false; + } +} diff --git a/src/app/_helpers/alert.component.html b/src/app/_helpers/alert.component.html new file mode 100644 index 0000000..fa1c90a --- /dev/null +++ b/src/app/_helpers/alert.component.html @@ -0,0 +1,4 @@ +
+ {{message.text}} +
\ No newline at end of file diff --git a/src/app/_helpers/alert.component.ts b/src/app/_helpers/alert.component.ts new file mode 100644 index 0000000..25d87dd --- /dev/null +++ b/src/app/_helpers/alert.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subscription } from 'rxjs'; + +import { AlertService } from '../_services/alert.service'; + +@Component({ + selector: 'app-alert', + templateUrl: 'alert.component.html' +}) +export class AlertComponent implements OnInit, OnDestroy { + private subscription: Subscription; + message: any; + + constructor(private alertService: AlertService) {} + + ngOnInit() { + this.subscription = this.alertService.getMessage().subscribe(message => { + this.message = message; + }); + } + + ngOnDestroy() { + this.subscription.unsubscribe(); + } +} diff --git a/src/app/_helpers/app.constants.ts b/src/app/_helpers/app.constants.ts new file mode 100644 index 0000000..94c489c --- /dev/null +++ b/src/app/_helpers/app.constants.ts @@ -0,0 +1,14 @@ +export class AppConstants { + public static MOBILE_RESPONSIVE_WIDTH = 992; + public static MOBILE_RESPONSIVE_WIDTH_HORIZONTAL = 768; + public static NAVIGATION_TYPE_COLLAPSIBLE = 'menu-collapsible'; + public static NAVIGATION_TYPE_ACCORDATION = 'menu-accordation'; + public static LAYOUT_STYLE_HORIZONTAL = 'horizontal'; + public static LAYOUT_STYLE_VERTICAL = 'vertical'; + + public static fireRefreshEventOnWindow = function() { + const evt = document.createEvent('HTMLEvents'); + evt.initEvent('resize', true, false); + window.dispatchEvent(evt); + }; +} diff --git a/src/app/_helpers/customwidget.ts b/src/app/_helpers/customwidget.ts new file mode 100644 index 0000000..c892302 --- /dev/null +++ b/src/app/_helpers/customwidget.ts @@ -0,0 +1,95 @@ +export function init(Survey: any) { + var widget = { + //the widget name. It should be unique and written in lowcase. + name: "textwithbutton", + //the widget title. It is how it will appear on the toolbox of the SurveyJS Editor/Builder + title: "Text with button", + //the name of the icon on the toolbox. We will leave it empty to use the standard one + iconName: "", + //If the widgets depends on third-party library(s) then here you may check if this library(s) is loaded + widgetIsLoaded: function () { + //return typeof $ == "function" && !!$.fn.select2; //return true if jQuery and select2 widget are loaded on the page + return true; //we do not require anything so we just return true. + }, + //SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior + isFit: function (question) { + //we return true if the type of question is textwithbutton + return question.getType() === "textwithbutton"; + //the following code will activate the widget for a text question with inputType equals to date + //return question.getType() === 'text' && question.inputType === "date"; + }, + //Use this function to create a new class or add new properties or remove unneeded properties from your widget + //activatedBy tells how your widget has been activated by: property, type or customType + //property - it means that it will activated if a property of the existing question type is set to particular value, for example inputType = "date" + //type - you are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons + //customType - you are creating a new type, like in our example "textwithbutton" + activatedByChanged: function (activatedBy) { + //we do not need to check acticatedBy parameter, since we will use our widget for customType only + //We are creating a new class and derived it from text question type. It means that text model (properties and fuctions) will be available to us + Survey.JsonObject.metaData.addClass("textwithbutton", [], null, "text"); + //signaturepad is derived from "empty" class - basic question class + //Survey.JsonObject.metaData.addClass("signaturepad", [], null, "empty"); + + //Add new property(s) + //For more information go to https://surveyjs.io/Examples/Builder/?id=addproperties#content-docs + Survey.JsonObject.metaData.addProperties("textwithbutton", [ + { name: "buttonText", default: "Click Me" }, + ]); + }, + //If you want to use the default question rendering then set this property to true. We do not need any default rendering, we will use our our htmlTemplate + isDefaultRender: false, + //You should use it if your set the isDefaultRender to false + htmlTemplate: "
", + //The main function, rendering and two-way binding + afterRender: function (question, el) { + //el is our root element in htmlTemplate, is "div" in our case + //get the text element + var text = el.getElementsByTagName("input")[0]; + //set some properties + text.inputType = question.inputType; + text.placeholder = question.placeHolder; + //get button and set some rpoeprties + var button = el.getElementsByTagName("button")[0]; + button.innerText = question.buttonText; + button.onclick = function () { + question.value = "You have clicked me"; + }; + + //set the changed value into question value + text.onchange = function () { + question.value = text.value; + }; + var onValueChangedCallback = function () { + text.value = question.value ? question.value : ""; + }; + var onReadOnlyChangedCallback = function () { + if (question.isReadOnly) { + text.setAttribute("disabled", "disabled"); + button.setAttribute("disabled", "disabled"); + } else { + text.removeAttribute("disabled"); + button.removeAttribute("disabled"); + } + }; + //if question becomes readonly/enabled add/remove disabled attribute + question.readOnlyChangedCallback = onReadOnlyChangedCallback; + //if the question value changed in the code, for example you have changed it in JavaScript + question.valueChangedCallback = onValueChangedCallback; + //set initial value + onValueChangedCallback(); + //make elements disabled if needed + onReadOnlyChangedCallback(); + }, + //Use it to destroy the widget. It is typically needed by jQuery widgets + willUnmount: function (question, el) { + //We do not need to clear anything in our simple example + //Here is the example to destroy the image picker + //var $el = $(el).find("select"); + //$el.data('picker').destroy(); + }, + }; + + //Register our widget in singleton custom widget collection + Survey.CustomWidgetCollection.Instance.addCustomWidget(widget, "customtype"); + } + \ No newline at end of file diff --git a/src/app/_layout/blockui/block-template.component.ts b/src/app/_layout/blockui/block-template.component.ts new file mode 100644 index 0000000..a6af08e --- /dev/null +++ b/src/app/_layout/blockui/block-template.component.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-block-temp', + styles: [` + :host { + text-align: center; + } + `], + template: ` +
+ +
{{message}}
+
+ ` +}) +export class BlockTemplateComponent { + message: any; +} diff --git a/src/app/_layout/breadcrumb/breadcrumb.component.css b/src/app/_layout/breadcrumb/breadcrumb.component.css new file mode 100644 index 0000000..38fdf49 --- /dev/null +++ b/src/app/_layout/breadcrumb/breadcrumb.component.css @@ -0,0 +1,20 @@ +.dropdown-menu-right { + right: 0; + left: auto !important; +} + +.dropdown-menu.arrow:before { + left: 70px !important; + border-bottom-color: #ffffff; +} + +.dropdown-menu.arrow:after { + top: 0px; +} + +@media only screen and (max-width:767px) { + ._dropdown_mob { + margin-left: 150px !important; + transform: translate(40px, 40px) !important; + } +} diff --git a/src/app/_layout/breadcrumb/breadcrumb.component.html b/src/app/_layout/breadcrumb/breadcrumb.component.html new file mode 100644 index 0000000..802f071 --- /dev/null +++ b/src/app/_layout/breadcrumb/breadcrumb.component.html @@ -0,0 +1,27 @@ +
+ +
+
+ + +
+
+
diff --git a/src/app/_layout/breadcrumb/breadcrumb.component.spec.ts b/src/app/_layout/breadcrumb/breadcrumb.component.spec.ts new file mode 100644 index 0000000..0f80f63 --- /dev/null +++ b/src/app/_layout/breadcrumb/breadcrumb.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BreadcrumbComponent } from './breadcrumb.component'; + +describe('BreadcrumbComponent', () => { + let component: BreadcrumbComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BreadcrumbComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BreadcrumbComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/breadcrumb/breadcrumb.component.ts b/src/app/_layout/breadcrumb/breadcrumb.component.ts new file mode 100644 index 0000000..c04f2fe --- /dev/null +++ b/src/app/_layout/breadcrumb/breadcrumb.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-breadcrumb', + templateUrl: './breadcrumb.component.html', + styleUrls: ['./breadcrumb.component.css'] +}) +export class BreadcrumbComponent implements OnInit { + + constructor() { } + + @Input() breadcrumb: object; + + ngOnInit() { + this.processBreadCrumbLinks(); + } + private processBreadCrumbLinks() { + } +} diff --git a/src/app/_layout/breadcrumb/breadcrumb.module.ts b/src/app/_layout/breadcrumb/breadcrumb.module.ts new file mode 100644 index 0000000..bf8508f --- /dev/null +++ b/src/app/_layout/breadcrumb/breadcrumb.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CardModule } from 'src/app/content/partials/general/card/card.module'; +import { RouterModule } from '@angular/router'; +import { BreadcrumbComponent } from './breadcrumb.component'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; + + +@NgModule({ + imports: [ + CommonModule, + CardModule, + NgbModule, + RouterModule.forChild([]) + ], + declarations: [BreadcrumbComponent], + exports: [BreadcrumbComponent] +}) +export class BreadcrumbModule { } diff --git a/src/app/_layout/customizer/customizer.component.css b/src/app/_layout/customizer/customizer.component.css new file mode 100644 index 0000000..c812868 --- /dev/null +++ b/src/app/_layout/customizer/customizer.component.css @@ -0,0 +1,22 @@ +.tabsborder{ + border-bottom: none !important; + } + +.h6, h6 { + font-size: 1rem; +} + +:host ::ng-deep .tab-content{ + padding: 1rem; +} + +:host ::ng-deep .layout_space{ + padding: 0%; +} + +:host ::ng-deep .nav.nav-tabs.nav-underline .nav-item a.nav-link { + padding: 0.5rem 0rem; +} +:host ::ng-deep .btn-outline-info .active { + background: rgba(0, 0, 0, .05); +} diff --git a/src/app/_layout/customizer/customizer.component.html b/src/app/_layout/customizer/customizer.component.html new file mode 100644 index 0000000..f9b25fb --- /dev/null +++ b/src/app/_layout/customizer/customizer.component.html @@ -0,0 +1,394 @@ +
+ + +
+

Theme Customizer

+
+

Customize & Preview in Real Time

+
Menu Color Options
+
+ +
+ + +
+
+
+
Layout Options
+ +
+
Navigation Color Options
+ \ No newline at end of file diff --git a/src/app/_layout/customizer/customizer.component.spec.ts b/src/app/_layout/customizer/customizer.component.spec.ts new file mode 100644 index 0000000..b6e8914 --- /dev/null +++ b/src/app/_layout/customizer/customizer.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CustomizerComponent } from './customizer.component'; + +describe('CustomizerComponent', () => { + let component: CustomizerComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CustomizerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomizerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/customizer/customizer.component.ts b/src/app/_layout/customizer/customizer.component.ts new file mode 100644 index 0000000..883750e --- /dev/null +++ b/src/app/_layout/customizer/customizer.component.ts @@ -0,0 +1,386 @@ +import { Component, OnInit, Renderer2, Inject, ViewChild, HostListener } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from 'src/app/_services/navbar.service'; +import { ThemeSettingsService } from '../settings/theme-settings.service'; +import { MenuSettingsService } from '../settings/menu-settings.service'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap'; +import { AppConstants } from 'src/app/_helpers/app.constants'; + +declare var require: any; +const colors = require('../../../assets/data/customizer/customizerColor.json'); + +@Component({ + selector: 'app-customizer', + templateUrl: './customizer.component.html', + styleUrls: ['./customizer.component.css'] +}) +export class CustomizerComponent implements OnInit { + + private _unsubscribeAll: Subject; + private _unsubscribeAllMenu: Subject; + public _themeCustomizerConfig: any; + public _menuCustomizerConfig: any; + public _themeSettingsConfig: any; + public selectColorClass: string; + public activebutton: any; + + public isCollapsedMenu = false; + public isfixChecked = false; + public isboxChecked = false; + public isStaticLayout = false; + + public isRightSideIcons = false; + public isBorderedNavigation = false; + public isFlippedNavigation = false; + public isCollapsibleNavigation = false; + public isStaticNavigation = false; + + public isStaticTop = false; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + collapsed = true; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor( + private _renderer: Renderer2, + @Inject(DOCUMENT) private document: Document, + private navbarService: NavbarService, + private _themeSettingsService: ThemeSettingsService, + private _menuSettingsService: MenuSettingsService + ) { + this._unsubscribeAll = new Subject(); + this._unsubscribeAllMenu = new Subject(); + } + + ngOnInit() { + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeCustomizerConfig = config; + }); + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAllMenu)) + .subscribe((config) => { + this._menuCustomizerConfig = config; + }); + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + }); + } + + toggleCustomizer(event) { + const element = document.getElementById('customizer'); + if (element && element.classList.contains('open')) { + this._renderer.removeClass(element, 'open'); + } else { + this._renderer.addClass(element, 'open'); + } + } + + setLayout(layout, e) { + + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const mainMenu = document.getElementsByClassName('main-menu'); + + if (layout === 'static' && e.currentTarget.checked === true) { + this.staticLayout(e); + } else if (layout === 'static' && e.currentTarget.checked === false) { + this._themeSettingsConfig.layout.pattern = ''; + this._renderer.removeClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.removeClass(footer, 'footer-static'); + this._renderer.addClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.addClass(document.body, 'fixed-navbar'); + this._renderer.addClass(mainMenu.item(0), 'menu-fixed'); + this.isStaticLayout = false; + } + } + + toggleFixMenu(e) { + + const toggleIcon = document.getElementsByClassName('toggle-icon'); + + if (this.document.body.classList.contains('menu-expanded') && e.currentTarget.checked === true) { + this._themeCustomizerConfig.navbar = 'collapse'; + // show the left aside menu + this.navbarService.setFixedMenu(false); + this.document.body.classList.remove('menu-expanded'); + this.document.body.classList.add('menu-collapsed'); + // Change switch icon + this._renderer.removeClass(toggleIcon.item(0), 'ft-toggle-right'); + this._renderer.addClass(toggleIcon.item(0), 'ft-toggle-left'); + this.isCollapsedMenu = true; + } else { + this._themeCustomizerConfig.navbar = 'expand'; + this.navbarService.setFixedMenu(true); + this.document.body.classList.remove('menu-collapsed'); + this.document.body.classList.add('menu-expanded'); + // Change switch icon + this._renderer.removeClass(toggleIcon.item(0), 'ft-toggle-left'); + this._renderer.addClass(toggleIcon.item(0), 'ft-toggle-right'); + this.isCollapsedMenu = false; + } + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + this.resetOpenMenu(); + } + + resetOpenMenu() { + for (let i = 0; i < this._menuCustomizerConfig.vertical_menu.items.length; i++) { + const menu = this._menuCustomizerConfig.vertical_menu.items[i]; + if (!menu.submenu) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + } else if (menu.submenu) { + for (let j = 0; j < menu.submenu.items.length; j++) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + menu.submenu.items[j]['isOpen'] = false; + } + } + } + } + + changeNavbarFontColor($event: NgbNavChangeEvent) { + const headerElement = document.getElementsByClassName('header-navbar'); + if ($event.nextId === 1) { + console.log('hgdfh'); + this._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + this._renderer.removeClass(headerElement.item(0), 'navbar-light'); + this._renderer.addClass(headerElement.item(0), 'navbar-semi-dark'); + this._themeCustomizerConfig.colorTheme = 'semi-dark'; + } else if ($event.nextId === 2) { + this._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-light'); + this._renderer.addClass(headerElement.item(0), 'navbar-semi-light'); + this._themeCustomizerConfig.colorTheme = 'semi-light'; + } else if ($event.nextId === 3) { + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-light'); + this._renderer.addClass(headerElement.item(0), 'navbar-dark'); + this._themeCustomizerConfig.colorTheme = 'dark'; + } else if ($event.nextId === 4) { + this._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + this._renderer.addClass(headerElement.item(0), 'navbar-light'); + this._themeCustomizerConfig.colorTheme = 'light'; + } + + this._themeSettingsService.config = { + color: '' + }; + } + + setMenuColor(colorClass, event) { + const darkMenuButton = document.getElementById('dark-menu'); + const lightMenuButton = document.getElementById('light-menu'); + + if (event.currentTarget.className === 'btn btn-outline-info _dark') { + this._renderer.removeClass(lightMenuButton, 'active'); + this._renderer.addClass(darkMenuButton, 'active'); + } else if (event.currentTarget.className === 'btn btn-outline-info _light') { + this._renderer.removeClass(darkMenuButton, 'active'); + this._renderer.addClass(lightMenuButton, 'active'); + } + + this._themeSettingsService.config = { + menuColor: colorClass, // light-menu, dark-menu + }; + } + + setNavigation(navigationClass, event) { + const navigationElement = document.getElementById('main-menu'); + const element = document.getElementById('customizer'); + if (event.target.checked === true && navigationClass !== 'menu-collapsible') { + this._themeSettingsService.config = { + navigation: navigationClass + }; + if (navigationClass === 'menu-flipped') { + this._renderer.removeClass(element, 'open'); + } else if (navigationClass === 'menu-static') { + this._renderer.removeClass(navigationElement, 'menu-fixed'); + } + } else if (event.target.checked === false && navigationClass !== 'menu-collapsible') { + this._themeSettingsConfig.navigation = AppConstants.NAVIGATION_TYPE_ACCORDATION; + this._renderer.removeClass(navigationElement, navigationClass); + this._renderer.removeClass(document.body, navigationClass); + + if (navigationClass === 'menu-static') { + this._renderer.addClass(navigationElement, 'menu-fixed'); + } + } + + if (event.target.checked === true && navigationClass === 'menu-collapsible') { + this._themeSettingsConfig.navigation = AppConstants.NAVIGATION_TYPE_ACCORDATION; + this._renderer.removeClass(navigationElement, navigationClass); + } else if (event.target.checked === false && navigationClass === 'menu-collapsible') { + this._themeSettingsService.config = { + navigation: navigationClass + }; + } + + if (navigationClass === 'menu-icon-right' && event.currentTarget.checked === true) { + this.isRightSideIcons = true; + } else if (navigationClass === 'menu-icon-right' && event.currentTarget.checked === false) { + this.isRightSideIcons = false; + } + if (navigationClass === 'menu-bordered' && event.currentTarget.checked === true) { + this.isBorderedNavigation = true; + } else if (navigationClass === 'menu-bordered' && event.currentTarget.checked === false) { + this.isBorderedNavigation = false; + } + + if (navigationClass === 'menu-flipped' && event.currentTarget.checked === true) { + this.isFlippedNavigation = true; + } else if (navigationClass === 'menu-flipped' && event.currentTarget.checked === false) { + this.isFlippedNavigation = false; + } + + if (navigationClass === 'menu-collapsible' && event.currentTarget.checked === true) { + this.isCollapsibleNavigation = true; + } else if (navigationClass === 'menu-collapsible' && event.currentTarget.checked === false) { + this.isCollapsibleNavigation = false; + } + + if (navigationClass === 'menu-static' && event.currentTarget.checked === true) { + this.isStaticNavigation = true; + } else if (navigationClass === 'menu-static' && event.currentTarget.checked === false) { + this.isStaticNavigation = false; + } + } + + setNavbar(event) { + const navbarElement = document.getElementsByClassName('header-navbar'); + const navigationElement = document.getElementById('main-menu'); + if (event.target.checked === true) { + this._renderer.removeClass(document.body, 'fixed-navbar'); + this._renderer.removeClass(navbarElement.item(0), 'fixed-top'); + this._renderer.removeClass(navigationElement, 'menu-fixed'); + this._renderer.addClass(navbarElement.item(0), 'navbar-static-top'); + this._renderer.addClass(navigationElement, 'menu-static'); + this.isStaticTop = true; + } else if (event.target.checked === false) { + this._renderer.removeClass(navbarElement.item(0), 'navbar-static-top'); + this._renderer.removeClass(navigationElement, 'menu-static'); + this._renderer.addClass(document.body, 'fixed-navbar'); + this._renderer.addClass(navbarElement.item(0), 'fixed-top'); + this._renderer.addClass(navigationElement, 'menu-fixed'); + this.isStaticTop = false; + } + } + + setColor(colorClass) { + for (let i = 0; i <= colors.colorArray.length; i++) { + if (colorClass === colors.colorArray[i].cssClass) { + this.selectColorClass = colorClass; + break; + } + } + this._themeSettingsService.config = { + color: this.selectColorClass + }; + } + + toggleLayout(layout) { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + if (layout === 'boxed' && this.isboxChecked === false) { + this.boxedLayout(); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } else if (layout === 'boxed' && this.isboxChecked === true) { + this._renderer.removeClass(headerNavbar.item(0), 'container'); + this._renderer.removeClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.removeClass(document.body, 'boxed-layout'); + this._renderer.removeClass(document.body, 'container'); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + this._themeSettingsConfig.layout.pattern = ''; + } else if (layout === 'fixed' && this.isfixChecked === false) { + this.fixedLayout(); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } else if (layout === 'fixed' && this.isfixChecked === true) { + this._renderer.removeClass(footer, 'fixed-bottom'); + this._themeSettingsConfig.layout.pattern = ''; + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } + } + + fixedLayout() { + + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + this._renderer.removeClass(headerNavbar.item(0), 'container'); + this._renderer.removeClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.removeClass(document.body, 'boxed-layout'); + this._renderer.removeClass(document.body, 'container'); + this._renderer.addClass(footer, 'fixed-bottom'); + + if (this.isStaticLayout === true) { + this._renderer.addClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.addClass(document.body, 'fixed-navbar'); + this._renderer.removeClass(footer, 'fixed-bottom'); + } + + this.isfixChecked = true; + this.isboxChecked = false; + this._themeSettingsConfig.layout.pattern = 'fixed'; + } + + boxedLayout() { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + + this._renderer.removeClass(footer, 'fixed-bottom'); + + this._renderer.addClass(headerNavbar.item(0), 'container'); + this._renderer.addClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.addClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.addClass(document.body, 'boxed-layout'); + this._renderer.addClass(document.body, 'container'); + + if (this.isStaticLayout === true) { + this._renderer.removeClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.removeClass(document.body, 'fixed-navbar'); + } + this.isboxChecked = true; + this.isfixChecked = false; + this._themeSettingsConfig.layout.pattern = 'boxed'; + } + + staticLayout(e) { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const mainMenu = document.getElementsByClassName('main-menu'); + + this._renderer.removeClass(document.body, 'fixed-navbar'); + this._renderer.removeClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.removeClass(mainMenu.item(0), 'menu-fixed'); + this._renderer.addClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.addClass(footer, 'footer-static'); + this._renderer.removeClass(footer, 'fixed-bottom'); + this.isStaticLayout = true; + + this._themeSettingsConfig.layout.pattern = 'static'; + } + + @HostListener('window:resize', ['$event']) + onResize() { + if (this.document.body.classList.contains('menu-expanded')) { + this.collapsed = false; + } else { + this.collapsed = true; + } + } +} diff --git a/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.css b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.css new file mode 100644 index 0000000..9b3ca64 --- /dev/null +++ b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.css @@ -0,0 +1,19 @@ +.tabsborder{ + border-bottom: none !important; + } + +.h6, h6 { + font-size: 1rem; +} + +:host ::ng-deep .tab-content{ + padding: 1rem; +} + +:host ::ng-deep .layout_space{ + padding: 0%; +} + +:host ::ng-deep .nav.nav-tabs.nav-underline .nav-item a.nav-link { + padding: 0.5rem 0rem; +} diff --git a/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.html b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.html new file mode 100644 index 0000000..0f0622b --- /dev/null +++ b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.html @@ -0,0 +1,226 @@ +
+ + +
+

Theme Customizer

+
+

Customize & Preview in Real Time

+
Menu Color Options
+
+ +
+ + +
+
+
+
Layout Options
+ +
+
Navigation Color Options
+ +
+
diff --git a/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.spec.ts b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.spec.ts new file mode 100644 index 0000000..bd30290 --- /dev/null +++ b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HorizontalCustomizerComponent } from './horizontal-customizer.component'; + +describe('HorizontalCustomizerComponent', () => { + let component: HorizontalCustomizerComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HorizontalCustomizerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HorizontalCustomizerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.ts b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.ts new file mode 100644 index 0000000..9004135 --- /dev/null +++ b/src/app/_layout/customizer/horizontal-customizer/horizontal-customizer.component.ts @@ -0,0 +1,273 @@ +import { Component, OnInit, Renderer2, Inject, ViewChild } from '@angular/core'; +import { ThemeSettingsService } from '../../settings/theme-settings.service'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from 'src/app/_services/navbar.service'; +import { NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap'; +import { MenuSettingsService } from '../../settings/menu-settings.service'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { AppConstants } from 'src/app/_helpers/app.constants'; +declare var require: any; +const colors = require('../../../../assets/data/customizer/customizerColor.json'); + +@Component({ + selector: 'app-horizontal-customizer', + templateUrl: './horizontal-customizer.component.html', + styleUrls: ['./horizontal-customizer.component.css'] +}) +export class HorizontalCustomizerComponent implements OnInit { + private _unsubscribeAll: Subject; + public _themeCustomizerConfig: any; + public _menuCustomizerConfig: any; + private _themeSettingsConfig: any; + public selectColorClass: string; + + public isCollapsedMenu = false; + public isfixChecked = false; + public isboxChecked = false; + public isStaticLayout = false; + + public isRightSideIcons = false; + + activeIdString = 'light'; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + constructor(private _renderer: Renderer2, + @Inject(DOCUMENT) private document: Document, + private navbarService: NavbarService, + private _themeSettingsService: ThemeSettingsService, + private _menuSettingsService: MenuSettingsService, ) { + this._unsubscribeAll = new Subject(); + } + ngOnInit() { + + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeCustomizerConfig = config; + }); + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + }); + } + toggleCustomizer(event) { + const element = document.getElementById('customizer'); + if (element && element.classList.contains('open')) { + this._renderer.removeClass(element, 'open'); + } else { + this._renderer.addClass(element, 'open'); + } + } + changeNavbarFontColor($event: NgbNavChangeEvent) { + const headerElement = document.getElementsByClassName('top-header'); + if ($event.nextId === 1) { + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-light'); + this._renderer.removeClass(headerElement.item(0), 'navbar-shadow'); + this._renderer.addClass(headerElement.item(0), 'navbar-dark'); + } else if ($event.nextId === 2) { + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + this._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + this._renderer.addClass(headerElement.item(0), 'navbar-light'); + this._renderer.addClass(headerElement.item(0), 'navbar-shadow'); + } + + this._themeSettingsService.config = { + color: '' + }; + } + setColor(colorClass) { + for (let i = 0; i <= colors.colorArray.length; i++) { + if (colorClass === colors.colorArray[i].cssClass) { + this.selectColorClass = colorClass; + break; + } + } + this._themeSettingsService.config = { + color: this.selectColorClass + }; + } + setMenuColor(e) { + const darkMenuButton = document.getElementById('dark-menu'); + const lightMenuButton = document.getElementById('light-menu'); + const menuHeaderElement = document.getElementById('menu-header'); + + if (e.currentTarget.className === 'btn btn-outline-info _dark') { + this._renderer.removeClass(lightMenuButton, 'active'); + this._renderer.removeClass(menuHeaderElement, 'navbar-light'); + this._renderer.addClass(darkMenuButton, 'active'); + this._renderer.addClass(menuHeaderElement, 'navbar-dark'); + } else if (e.currentTarget.className === 'btn btn-outline-info _light') { + this._renderer.removeClass(menuHeaderElement, 'navbar-dark'); + this._renderer.removeClass(darkMenuButton, 'active'); + this._renderer.addClass(lightMenuButton, 'active'); + this._renderer.addClass(menuHeaderElement, 'navbar-light'); + } + + // this._themeSettingsService.config = { + // menuColor: colorClass, // menu-dark, menu-light + // }; + } + toggleFixMenu(e) { + if (this.document.body.classList.contains('menu-expanded') && e.currentTarget.checked === true) { + // show the left aside menu + this.navbarService.setFixedMenu(false); + this.document.body.classList.remove('menu-expanded'); + this.document.body.classList.add('menu-collapsed'); + + // Change switch icon + e.srcElement.classList.remove('ft-toggle-right'); + e.srcElement.classList.add('ft-toggle-left'); + this.isCollapsedMenu = true; + } else { + this.navbarService.setFixedMenu(true); + this.document.body.classList.remove('menu-collapsed'); + this.document.body.classList.add('menu-expanded'); + // Change switch icon + e.srcElement.classList.remove('ft-toggle-left'); + e.srcElement.classList.add('ft-toggle-right'); + this.isCollapsedMenu = false; + } + } + setLayout(layout, e) { + + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const menuHeader = document.getElementById('menu-header'); + const isSticky = document.getElementsByClassName('sticky-wrapper'); + const element = document.getElementById('sticky-wrapper'); + + if (e.currentTarget.checked === true && layout === 'static') { + // this._renderer.removeClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.addClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.addClass(menuHeader, 'navbar-static'); + this._renderer.addClass(footer, 'footer-static'); + this.isStaticLayout = true; + this._themeSettingsConfig.layout.pattern = 'static'; + element.classList.add('is-static'); + + if (this.isboxChecked === false ) { + this._renderer.removeClass(footer, 'fixed-bottom'); + } + + } else { + this._themeSettingsConfig.layout.pattern = ''; + this._renderer.removeClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.removeClass(footer, 'footer-static'); + this._renderer.removeClass(menuHeader, 'navbar-static'); + this._renderer.removeClass(isSticky.item(0), 'is-static'); + this.isStaticLayout = false; + + if (this.isboxChecked === true) { + this.boxedLayout(); + } + + if (this.isfixChecked === true) { + this.fixedLayout(); + } + } + + } + setNavigation(navigationClass, event) { + const navigationElement = document.getElementById('menu-header'); + if (event.target.checked === true) { + this._themeSettingsService.config = { + navigation: navigationClass, + }; + } else if (event.target.checked === false) { + this._renderer.removeClass(navigationElement, navigationClass); + this._renderer.removeClass(document.body, navigationClass); + } + + if (navigationClass === 'menu-icon-right' && event.currentTarget.checked === true) { + this.isRightSideIcons = true; + } else if (navigationClass === 'menu-icon-right' && event.currentTarget.checked === false) { + this.isRightSideIcons = false; + } + } + + toggleLayout(layout) { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const element = document.getElementById('sticky-wrapper'); + + if (layout === 'boxed' && this.isboxChecked === true) { + this.boxedLayout(); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } else if (layout === 'boxed' && this.isboxChecked === false) { + this._renderer.removeClass(headerNavbar.item(0), 'container'); + this._renderer.removeClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.removeClass(document.body, 'boxed-layout'); + this._renderer.removeClass(document.body, 'container'); + element.classList.remove('container'); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + this._themeSettingsConfig.layout.pattern = ''; + } else if (layout === 'fixed' && this.isfixChecked === true) { + this.fixedLayout(); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } else if (layout === 'fixed' && this.isfixChecked === false) { + this._renderer.removeClass(footer, 'fixed-bottom'); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + this._themeSettingsConfig.layout.pattern = ''; + } + } + + + fixedLayout() { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const menuHeader = document.getElementById('menu-header'); + const element = document.getElementById('sticky-wrapper'); + + this._renderer.addClass(footer, 'fixed-bottom'); + this._renderer.removeClass(document.body, 'boxed-layout'); + this._renderer.removeClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.removeClass(headerNavbar.item(0), 'container'); + this._renderer.removeClass(document.body, 'container'); + element.classList.remove('container'); + + if (this.isStaticLayout === true) { + this._renderer.removeClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.removeClass(footer, 'fixed-bottom'); + this._renderer.addClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.addClass(menuHeader, 'navbar-static'); + this._renderer.addClass(footer, 'footer-static'); + } + + this.isfixChecked = true; + this.isboxChecked = false; + this._themeSettingsConfig.layout.pattern = 'fixed'; + } + + boxedLayout() { + const footer = document.getElementById('footer'); + const headerNavbar = document.getElementsByClassName('header-navbar'); + const menuHeader = document.getElementById('menu-header'); + const element = document.getElementById('sticky-wrapper'); + + this._renderer.removeClass(footer, 'fixed-bottom'); + this._renderer.addClass(headerNavbar.item(0), 'container'); + this._renderer.addClass(headerNavbar.item(0), 'boxed-layout'); + this._renderer.addClass(document.body, 'boxed-layout'); + this._renderer.addClass(document.body, 'container'); + element.classList.add('container'); + + if (this.isStaticLayout === true) { + this._renderer.removeClass(headerNavbar.item(0), 'fixed-top'); + this._renderer.addClass(headerNavbar.item(0), 'navbar-static-top'); + this._renderer.addClass(menuHeader, 'navbar-static'); + this._renderer.addClass(footer, 'footer-static'); + } + this.isboxChecked = true; + this.isfixChecked = false; + this._themeSettingsConfig.layout.pattern = 'boxed'; + } +} diff --git a/src/app/_layout/footer/footer.component.css b/src/app/_layout/footer/footer.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/footer/footer.component.html b/src/app/_layout/footer/footer.component.html new file mode 100644 index 0000000..1dff652 --- /dev/null +++ b/src/app/_layout/footer/footer.component.html @@ -0,0 +1,29 @@ +
+

Copyright © 2022 PIXINVENT Hand-crafted & Made with +

+
+ +
+

Copyright © 2022 PIXINVENT Hand-crafted & Made with +

+
+ +
+

Copyright © 2022 PIXINVENT Hand-crafted & Made with +

+
diff --git a/src/app/_layout/footer/footer.component.spec.ts b/src/app/_layout/footer/footer.component.spec.ts new file mode 100644 index 0000000..36089f1 --- /dev/null +++ b/src/app/_layout/footer/footer.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FooterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/footer/footer.component.ts b/src/app/_layout/footer/footer.component.ts new file mode 100644 index 0000000..44ec1d8 --- /dev/null +++ b/src/app/_layout/footer/footer.component.ts @@ -0,0 +1,77 @@ +import { Component, OnInit, Renderer2 } from '@angular/core'; +import { ThemeSettingsService } from '../settings/theme-settings.service'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { Router, NavigationEnd, NavigationStart, Event } from '@angular/router'; +import { FullLayoutComponent } from '../full-layout/full-layout.component'; +import { AppConstants } from 'src/app/_helpers/app.constants'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.css'] +}) +export class FooterComponent implements OnInit { + + public showFooter: boolean; + public fixedFooter: boolean; + public darkFooter: boolean; + public hideMadeWithLove: boolean; + + private _unsubscribeAll: Subject; + private _themeSettingsConfig: any; + + constructor(private renderer: Renderer2, + private _renderer: Renderer2, + private router: Router, + private _themeSettingsService: ThemeSettingsService) { + this._unsubscribeAll = new Subject(); + this.router.events.subscribe((event: Event) => { + const footerElement = document.getElementsByClassName('footer'); + if (event instanceof NavigationStart) { + // Show loading indicator + } + + if (event instanceof NavigationEnd) { + if (this.router.url === '/email' && footerElement.item(0)) { + this._renderer.removeClass(footerElement.item(0), 'footer-static'); + this.renderer.addClass(footerElement.item(0), 'fixed-bottom'); + } else if (footerElement.item(0)) { + this._renderer.removeClass(footerElement.item(0), 'fixed-bottom'); + this.renderer.addClass(footerElement.item(0), 'footer-static'); + } + } + }); + } + + ngOnInit() { + const isMobile = window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH; + if ((this.router.url.indexOf('WithNavbar') >= 0) || (this.router.url.indexOf('Advanced') >= 0) || + (this.router.url.indexOf('searchPage') >= 0)) { + this.showFooter = false; + this.darkFooter = true; + this.fixedFooter = false; + } else if (this.router.url.indexOf('email') >= 0) { + this.showFooter = false; + this.darkFooter = false; + this.fixedFooter = true; + } else if (FullLayoutComponent) { + this.showFooter = true; + this.darkFooter = false; + this.fixedFooter = false; + } else { + this.showFooter = true; + this.darkFooter = false; + this.fixedFooter = false; + } + if (isMobile) { + this.hideMadeWithLove = true; + } + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + }); + } +} diff --git a/src/app/_layout/full-layout/full-layout.component.css b/src/app/_layout/full-layout/full-layout.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/full-layout/full-layout.component.html b/src/app/_layout/full-layout/full-layout.component.html new file mode 100644 index 0000000..d52245e --- /dev/null +++ b/src/app/_layout/full-layout/full-layout.component.html @@ -0,0 +1,4 @@ + + +
+ diff --git a/src/app/_layout/full-layout/full-layout.component.spec.ts b/src/app/_layout/full-layout/full-layout.component.spec.ts new file mode 100644 index 0000000..142da68 --- /dev/null +++ b/src/app/_layout/full-layout/full-layout.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FullLayoutComponent } from './full-layout.component'; + +describe('FullLayoutComponent', () => { + let component: FullLayoutComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FullLayoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FullLayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/full-layout/full-layout.component.ts b/src/app/_layout/full-layout/full-layout.component.ts new file mode 100644 index 0000000..2cf782f --- /dev/null +++ b/src/app/_layout/full-layout/full-layout.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit, Renderer2, Inject } from '@angular/core'; +import { Router } from '@angular/router'; +import { DOCUMENT } from '@angular/common'; + +@Component({ + selector: 'app-full-layout', + templateUrl: './full-layout.component.html', + styleUrls: ['./full-layout.component.css'] +}) +export class FullLayoutComponent implements OnInit { + + public showFooter = true; + public showNavbar = true; + + constructor(private renderer: Renderer2, + private router: Router, + @Inject(DOCUMENT) private document: Document) { + } + + ngOnInit() { + this.renderer.removeClass(document.body, 'vertical-overlay-menu'); + this.renderer.removeClass(document.body, 'bg-full-screen-image'); + this.renderer.removeClass(document.body, 'vertical-menu-modern'); + this.renderer.addClass(document.body, 'blank-page'); + this.renderer.addClass(document.body, 'pace-done'); + + if ((this.router.url.indexOf('WithNavbar') >= 0) || (this.router.url.indexOf('Advanced') >= 0)) { + this.showFooter = true; + this.showNavbar = true; + this.renderer.addClass(document.body, 'bg-cyan'); + this.renderer.addClass(document.body, 'bg-lighten-2'); + this.renderer.addClass(document.body, 'fixed-navbar'); + this.renderer.removeClass(document.body, 'blank-page'); + } else if (this.router.url.indexOf('WithBgImage') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.addClass(document.body, 'bg-full-screen-image'); + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('WithBg') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.addClass(document.body, 'bg-cyan'); + this.renderer.addClass(document.body, 'bg-lighten-2'); + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('Simple') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('searchPage') >= 0) { + this.showFooter = true; + this.showNavbar = true; + this.renderer.addClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('flat') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + this.renderer.addClass(document.body, 'comingsoonFlat'); + } else if (this.router.url === '/others/bgImage') { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + this.renderer.addClass(document.body, 'comingsoonOne'); + } else if (this.router.url.indexOf('bgVideo') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + this.renderer.addClass(document.body, 'comingsoonVideo'); + } else if (this.router.url.indexOf('flat') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + this.renderer.addClass(document.body, 'comingsoonFlat'); + } else if (this.router.url.indexOf('error400') >= 0 && this.router.url.indexOf('error400Withnavbar') <= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('error401') >= 0 && this.router.url.indexOf('error401Withnavbar') <= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('error403') >= 0 && this.router.url.indexOf('error403Withnavbar') <= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('error404') >= 0 && this.router.url.indexOf('error404Withnavbar') <= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('error500') >= 0 && this.router.url.indexOf('error500Withnavbar') <= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('maintenance') >= 0 || this.router.url.indexOf('recoverPassword') >= 0) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else if (this.router.url.indexOf('unlockUser') >= 0 ) { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'fixed-navbar'); + } else { + this.showFooter = false; + this.showNavbar = false; + this.renderer.removeClass(document.body, 'bg-cyan'); + this.renderer.removeClass(document.body, 'bg-lighten-2'); + } + } + + rightbar(event) { + const toggle = document.getElementById('sidenav-overlay'); + if (event.currentTarget.className === 'sidenav-overlay d-block') { + this.renderer.removeClass(toggle, 'd-block'); + this.document.body.classList.remove('menu-open'); + this.document.body.classList.add('menu-close'); + this.renderer.addClass(toggle, 'd-none'); + } else if (event.currentTarget.className === 'sidenav-overlay d-none') { + this.renderer.removeClass(toggle, 'd-none'); + this.document.body.classList.remove('menu-close'); + this.document.body.classList.add('menu-open'); + this.renderer.addClass(toggle, 'd-block'); + } + } + +} diff --git a/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.css b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.css new file mode 100644 index 0000000..452a214 --- /dev/null +++ b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.css @@ -0,0 +1,11 @@ +@media (min-width: 767.98px) { + .collapse:not(.show) { + display: flex !important; + } +} + +@media (min-width: 767.98px) { + .justify-content-end { + display: flex !important; + } +} diff --git a/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.html b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.html new file mode 100644 index 0000000..9464d7f --- /dev/null +++ b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.html @@ -0,0 +1,28 @@ + diff --git a/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.spec.ts b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.spec.ts new file mode 100644 index 0000000..3a07d43 --- /dev/null +++ b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FullLayoutNavbarComponent } from './full-layout-navbar.component'; + +describe('FullLayoutNavbarComponent', () => { + let component: FullLayoutNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FullLayoutNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FullLayoutNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.ts b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.ts new file mode 100644 index 0000000..e130947 --- /dev/null +++ b/src/app/_layout/header/full-layout-navbar/full-layout-navbar.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; + +@Component({ + selector: 'app-full-layout-navbar', + templateUrl: './full-layout-navbar.component.html', + styleUrls: ['./full-layout-navbar.component.css'] +}) +export class FullLayoutNavbarComponent { + + constructor( + @Inject(DOCUMENT) private document: Document) { } + + toggleNavbar(e) { + const navbar = this.document.getElementById('navbar-mobile'); + if (navbar.classList.contains('show')) { + navbar.classList.remove('show'); + } else { + navbar.classList.add('show'); + } + } + +} diff --git a/src/app/_layout/header/header.component.css b/src/app/_layout/header/header.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/header/header.component.html b/src/app/_layout/header/header.component.html new file mode 100644 index 0000000..3c4e459 --- /dev/null +++ b/src/app/_layout/header/header.component.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/app/_layout/header/header.component.spec.ts b/src/app/_layout/header/header.component.spec.ts new file mode 100644 index 0000000..48d2626 --- /dev/null +++ b/src/app/_layout/header/header.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HeaderComponent } from './header.component'; + +describe('HeaderComponent', () => { + let component: HeaderComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HeaderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/header/header.component.ts b/src/app/_layout/header/header.component.ts new file mode 100644 index 0000000..099cdee --- /dev/null +++ b/src/app/_layout/header/header.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit, Renderer2, AfterViewInit, HostListener, Inject } from '@angular/core'; +import { takeUntil } from 'rxjs/operators'; + +import { ThemeSettingsService } from '../settings/theme-settings.service'; +import { Subject } from 'rxjs'; +import { AppConstants } from '../../_helpers/app.constants'; +import { DeviceDetectorService } from '../../_services/device-detector.service'; +import { DOCUMENT } from '@angular/common'; +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.css'] +}) +export class HeaderComponent implements OnInit, AfterViewInit { + + layout: string; + private _themeSettingsConfig: any; + private _unsubscribeAll: Subject; + private isMobile = false; + public selectedColorClass = ''; + + constructor(private _renderer: Renderer2, + @Inject(DOCUMENT) private document: Document, + private _themeSettingsService: ThemeSettingsService, + private deviceService: DeviceDetectorService) { + this._unsubscribeAll = new Subject(); + } + + ngOnInit() { + const self = this; + + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + if (config.layout && config.layout.style && + config.layout.style === 'vertical') { + self.layout = 'vertical'; + } else { + self.layout = 'horizontal'; + } + this.refreshView(); + }); + } + + refreshView() { + const self = this; + + const headerElement = document.getElementsByClassName('header-navbar'); + if (headerElement.item(0)) { + let currentHeaderClassList = []; + const navbar = this.document.getElementById('navbar-mobile'); + // Layout + if (self._themeSettingsConfig.layout.style === 'horizontal') { + currentHeaderClassList = ['header-navbar', 'navbar-expand-md', 'navbar', 'navbar-with-menu', + 'navbar-without-dd-arrow', 'navbar-static-top']; + const topHeaderElement = document.getElementById('top-header'); + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH_HORIZONTAL) { + currentHeaderClassList.push('fixed-top'); + this._renderer.removeClass(topHeaderElement, 'navbar-brand-center'); + navbar.classList.remove('show'); + } else { + currentHeaderClassList.push('navbar-brand-center'); + this._renderer.removeClass(topHeaderElement, 'fixed-top'); + navbar.classList.add('show'); + } + } else { + currentHeaderClassList = ['header-navbar', 'navbar-expand-md', 'navbar', 'navbar-with-menu', 'navbar-without-dd-arrow', 'fixed-top', + 'navbar-shadow']; + + if (self._themeSettingsConfig.colorTheme === 'semi-light' && self._themeSettingsConfig.layout.style === 'vertical') { + if (self._themeSettingsConfig.layout.style === 'vertical') { + // currentHeaderClassList.push('bg-info'); + } + self._renderer.addClass(headerElement.item(0), 'navbar-semi-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + self._renderer.removeClass(headerElement.item(0), 'navbar-light'); + } else if (self._themeSettingsConfig.colorTheme === 'semi-dark' && self._themeSettingsConfig.layout.style === 'vertical') { + self._renderer.addClass(headerElement.item(0), 'navbar-semi-dark'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + // self._renderer.removeClass(headerElement.item(0), 'bg-info'); + } else if (self._themeSettingsConfig.colorTheme === 'dark' && self._themeSettingsConfig.layout.style === 'vertical') { + self._renderer.addClass(headerElement.item(0), 'navbar-dark'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + // self._renderer.removeClass(headerElement.item(0), 'bg-info'); + } else if (self._themeSettingsConfig.colorTheme === 'light' && self._themeSettingsConfig.layout.style === 'vertical') { + self._renderer.addClass(headerElement.item(0), 'navbar-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-light'); + self._renderer.removeClass(headerElement.item(0), 'navbar-semi-dark'); + self._renderer.removeClass(headerElement.item(0), 'navbar-dark'); + // self._renderer.removeClass(headerElement.item(0), 'bg-info'); + } + } + + + + currentHeaderClassList.forEach(function (c) { + self._renderer.addClass(headerElement.item(0), c); + }); + + + } + } + + ngAfterViewInit() { + this.refreshView(); + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + if (event.target.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.isMobile = true; + } else { + this.isMobile = false; + } + this.refreshView(); + } + +} diff --git a/src/app/_layout/header/horizontal/horizontal.component.css b/src/app/_layout/header/horizontal/horizontal.component.css new file mode 100644 index 0000000..747f0ce --- /dev/null +++ b/src/app/_layout/header/horizontal/horizontal.component.css @@ -0,0 +1,12 @@ +@media (max-width: 767.98px) { + .header-navbar .navbar-header { + width: 100% !important; + top: 3px; + } +} + +.dropdown-menu-right { + right: 0; + left: auto !important; + top: auto !important; +} diff --git a/src/app/_layout/header/horizontal/horizontal.component.html b/src/app/_layout/header/horizontal/horizontal.component.html new file mode 100644 index 0000000..091a8c8 --- /dev/null +++ b/src/app/_layout/header/horizontal/horizontal.component.html @@ -0,0 +1,215 @@ + + diff --git a/src/app/_layout/header/horizontal/horizontal.component.spec.ts b/src/app/_layout/header/horizontal/horizontal.component.spec.ts new file mode 100644 index 0000000..d90ba98 --- /dev/null +++ b/src/app/_layout/header/horizontal/horizontal.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HorizontalComponent } from './horizontal.component'; + +describe('HorizontalComponent', () => { + let component: HorizontalComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HorizontalComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HorizontalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/header/horizontal/horizontal.component.ts b/src/app/_layout/header/horizontal/horizontal.component.ts new file mode 100644 index 0000000..cbcde7a --- /dev/null +++ b/src/app/_layout/header/horizontal/horizontal.component.ts @@ -0,0 +1,280 @@ +import { Component, OnInit, Inject, Renderer2, HostListener, AfterViewInit, ViewChild } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from '../../../_services/navbar.service'; +import { ThemeSettingsService } from '../../settings/theme-settings.service'; +import { MenuSettingsService } from '../../settings/menu-settings.service'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { AppConstants } from 'src/app/_helpers/app.constants'; +import { AuthService } from 'src/app/_services/auth.service'; +import { Router } from '@angular/router'; +import { DeviceDetectorService } from '../../../_services/device-detector.service'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; + +const docElmWithBrowsersFullScreenFunctions = document.documentElement as HTMLElement & { + mozRequestFullScreen(): Promise; + webkitRequestFullscreen(): Promise; + msRequestFullscreen(): Promise; +}; + +const docWithBrowsersExitFunctions = document as Document & { + mozCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; +}; +@Component({ + selector: 'app-header-horizontal', + templateUrl: './horizontal.component.html', + styleUrls: ['./horizontal.component.css'] +}) +export class HorizontalComponent implements OnInit, AfterViewInit { + + insideTm: any; + outsideTm: any; + private _unsubscribeAll: Subject; + brandName: string; + brandLogo: string; + public currentUser: any; + public _themeSettingsConfig: any; + private _menuSettingsConfig: any; + public displayName: boolean; + public isHeaderSearchOpen: any; + public maximize: any; + public search: any; + public internationalization: any; + public notification: any; + public email: any; + // public collapseOne = false; + // public collapseTwo = false; + // public collapseThree = false; + public selectedHeaderNavBarClass: string; + public selectedNavBarHeaderClass: string; + placement = 'bottom-right'; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor( + @Inject(DOCUMENT) private document: Document, + private _renderer: Renderer2, + private renderer: Renderer2, + private navbarService: NavbarService, + public authService: AuthService, + private router: Router, + private _menuSettingsService: MenuSettingsService, + private _themeSettingsService: ThemeSettingsService, + private deviceService: DeviceDetectorService + ) { + this._unsubscribeAll = new Subject(); + } + + ngOnInit() { + const _self = this; + if (localStorage.getItem('currentUser')) { + this.currentUser = JSON.parse(localStorage.getItem('currentUser')); + } + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + this.refreshView(); + }); + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._menuSettingsConfig = config; + }); + const isMobile = this.deviceService.isMobile(); + this.handleBody(isMobile); + this.maximize = this._themeSettingsConfig.headerIcons.maximize; + this.search = this._themeSettingsConfig.headerIcons.search; + this.internationalization = this._themeSettingsConfig.headerIcons.internationalization; + this.notification = this._themeSettingsConfig.headerIcons.notification; + this.email = this._themeSettingsConfig.headerIcons.email; + } + + ngAfterViewInit(): void { + this.refreshView(); + } + + handleBody(isMobile: boolean) { + const _self = this; + let currentBodyClassList = []; + + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH_HORIZONTAL && this._themeSettingsConfig.layout.style === 'horizontal') { + currentBodyClassList = ['horizontal-layout', '2-columns', 'vertical-overlay-menu', 'menu-hide']; + currentBodyClassList.push('fixed-navbar'); + } + currentBodyClassList.forEach(function (c) { + _self.renderer.addClass(document.body, c); + }); + } + + logout() { + if (localStorage.getItem('currentUser')) { + this.authService.doLogout().then(res => { + this.router.navigate(['/login']); + }, err => { + console.log(err); + }); + } + } + + refreshView() { + const topHeaderElement = document.getElementsByClassName('top-header'); + const menuColorElement = document.getElementsByClassName('menu-header'); + const navigationElement = document.getElementsByClassName('menu-header'); + if (topHeaderElement) { + if (this._themeSettingsConfig.colorTheme === 'light') { + this._renderer.removeClass(topHeaderElement.item(0), 'navbar-dark'); + this._renderer.addClass(topHeaderElement.item(0), 'navbar-light'); + } else if (this._themeSettingsConfig.colorTheme === 'dark') { + this._renderer.addClass(topHeaderElement.item(0), 'navbar-dark'); + this._renderer.removeClass(topHeaderElement.item(0), 'navbar-light'); + } + } + if (this._themeSettingsConfig.layout.style === 'horizontal') { + this.selectedHeaderNavBarClass = this._themeSettingsConfig.color; + } else if (this._themeSettingsConfig.layout.style === 'horizontal') { + this.selectedHeaderNavBarClass = this._themeSettingsConfig.color; + } + if (navigationElement) { + if (this._themeSettingsConfig.navigation === 'navbar-icon-right') { + this._renderer.addClass(navigationElement.item(0), 'navbar-icon-right'); + } + } + if (menuColorElement) { + if (this._themeSettingsConfig.menuColor === 'navbar-dark') { + this._renderer.removeClass(menuColorElement.item(0), 'navbar-light'); + this._renderer.addClass(menuColorElement.item(0), 'navbar-dark'); + } else if (this._themeSettingsConfig.menuColor === 'navbar-light') { + this._renderer.removeClass(menuColorElement.item(0), 'navbar-dark'); + this._renderer.addClass(menuColorElement.item(0), 'navbar-light'); + } + } + } + + toggleFixMenu(e) { + if (this.document.body.classList.contains('menu-expanded')) { + // show the left aside menu + this.document.body.classList.remove('menu-expanded'); + this.document.body.classList.add('menu-collapsed'); + } else { + this.document.body.classList.remove('menu-collapsed'); + this.document.body.classList.add('menu-expanded'); + } + } + toggleNavbar(e) { + const navbar = this.document.getElementById('navbar-mobile'); + if (navbar.classList.contains('show')) { + navbar.classList.remove('show'); + } else { + navbar.classList.add('show'); + } + } + toggleNavigation(e) { + const sidenav = document.getElementById('sidenav-overlay'); + const sidebarLeft = document.getElementById('sidebar-left') || document.getElementById('email-app-menu') || + document.getElementById('sidebar-todo'); + const contentOverlay = document.getElementById('content-overlay'); + const navbar = this.document.getElementById('navbar-mobile'); + + if (this.document.body.classList.contains('menu-hide')) { + this.document.body.classList.remove('menu-hide'); + this._renderer.removeClass(sidenav, 'd-none'); + this._renderer.addClass(sidenav, 'd-block'); + this.document.body.classList.remove('menu-close'); + this.document.body.classList.add('menu-open'); + this.document.body.classList.add('menu-expanded'); + navbar.classList.remove('show'); + } else if (!this.document.body.classList.contains('menu-hide') && !this.document.body.classList.contains('menu-open') ) { + this.document.body.classList.add('menu-open'); + this._renderer.addClass(sidenav, 'd-block'); + this._renderer.removeClass(sidenav, 'd-none'); + } else { + this._renderer.removeClass(sidenav, 'd-block'); + this.document.body.classList.remove('menu-open'); + this.document.body.classList.add('menu-hide'); + this._renderer.addClass(sidenav, 'd-none'); + navbar.classList.remove('show'); + } + + if (sidebarLeft) { + this._renderer.removeClass(sidebarLeft, 'show'); + this._renderer.removeClass(contentOverlay, 'show'); + } + } + + toggleFullScreen() { + const toggleIcon = document.getElementsByClassName('ficon'); + + if (toggleIcon.item(0).classList.contains('ft-maximize')) { + this.openfullscreen(); + this._renderer.removeClass(toggleIcon.item(0), 'ft-maximize'); + this._renderer.addClass(toggleIcon.item(0), 'ft-minimize'); + } else if (toggleIcon.item(0).classList.contains('ft-minimize')) { + this.closefullscreen(); + this._renderer.addClass(toggleIcon.item(0), 'ft-maximize'); + this._renderer.removeClass(toggleIcon.item(0), 'ft-minimize'); + } + } + + openfullscreen() { + // Trigger fullscreen + // eslint-disable-next-line no-shadow,@typescript-eslint/no-shadow + const docElmWithBrowsersFullScreenFunctions = document.documentElement as HTMLElement & { + mozRequestFullScreen(): Promise; + webkitRequestFullscreen(): Promise; + msRequestFullscreen(): Promise; + }; + + if (docElmWithBrowsersFullScreenFunctions.requestFullscreen) { + docElmWithBrowsersFullScreenFunctions.requestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen) { /* Firefox */ + docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen(); + } else if (docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ + docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.msRequestFullscreen) { /* IE/Edge */ + docElmWithBrowsersFullScreenFunctions.msRequestFullscreen(); + } + } + + closefullscreen() { + // eslint-disable-next-line no-shadow, @typescript-eslint/no-shadow + const docWithBrowsersExitFunctions = document as Document & { + mozCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; + }; + if (docWithBrowsersExitFunctions.exitFullscreen) { + docWithBrowsersExitFunctions.exitFullscreen(); + } else if (docWithBrowsersExitFunctions.mozCancelFullScreen) { /* Firefox */ + docWithBrowsersExitFunctions.mozCancelFullScreen(); + } else if (docWithBrowsersExitFunctions.webkitExitFullscreen) { /* Chrome, Safari and Opera */ + docWithBrowsersExitFunctions.webkitExitFullscreen(); + } else if (docWithBrowsersExitFunctions.msExitFullscreen) { /* IE/Edge */ + docWithBrowsersExitFunctions.msExitFullscreen(); + } + + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + const sidenav = document.getElementById('sidenav-overlay'); + if (event.target.innerWidth <= 767) { + this.document.body.classList.add('vertical-overlay-menu'); + this._renderer.removeClass(sidenav, 'd-block'); + this._renderer.addClass(sidenav, 'd-none'); + } + } + + public clickSearch() { + if (this.isHeaderSearchOpen) { + this.isHeaderSearchOpen = false; + } else { + this.isHeaderSearchOpen = true; + } + } +} diff --git a/src/app/_layout/header/vertical/vertical.component.css b/src/app/_layout/header/vertical/vertical.component.css new file mode 100644 index 0000000..3017bf8 --- /dev/null +++ b/src/app/_layout/header/vertical/vertical.component.css @@ -0,0 +1,35 @@ +.dropdown-menu-right { + right: 0; + left: auto !important; + top: auto !important; +} + +.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name { + margin-left: 0rem !important; +} + +.border_bottom { + border-bottom: none !important; +} + +:host ::ng-deep .dropdown-item:active { + color: #fff !important; +} + +@media only screen and (max-width: 991.98px) { + .ft-toggle-right { + display: none !important; + } + + .ft-toggle-left { + display: none !important; + } + + .collapse:not(.show) { + display: unset !important; + } +} + +.header-navbar .navbar-header .navbar-brand .brand-text { + padding-left: 11px !important; +} diff --git a/src/app/_layout/header/vertical/vertical.component.html b/src/app/_layout/header/vertical/vertical.component.html new file mode 100644 index 0000000..287a129 --- /dev/null +++ b/src/app/_layout/header/vertical/vertical.component.html @@ -0,0 +1,226 @@ + diff --git a/src/app/_layout/header/vertical/vertical.component.spec.ts b/src/app/_layout/header/vertical/vertical.component.spec.ts new file mode 100644 index 0000000..7a5942f --- /dev/null +++ b/src/app/_layout/header/vertical/vertical.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { VerticalComponent } from './vertical.component'; + +describe('VerticalComponent', () => { + let component: VerticalComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ VerticalComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(VerticalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/header/vertical/vertical.component.ts b/src/app/_layout/header/vertical/vertical.component.ts new file mode 100644 index 0000000..6d2705d --- /dev/null +++ b/src/app/_layout/header/vertical/vertical.component.ts @@ -0,0 +1,477 @@ +import { Component, OnInit, Inject, Renderer2, ElementRef, ViewChild, AfterViewInit, HostListener } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from '../../../_services/navbar.service'; +import { ThemeSettingsService } from '../../settings/theme-settings.service'; +import { MenuSettingsService } from '../../settings/menu-settings.service'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { AuthService } from 'src/app/_services/auth.service'; +import { Router } from '@angular/router'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { AppConstants } from 'src/app/_helpers/app.constants'; + +const docElmWithBrowsersFullScreenFunctions = document.documentElement as HTMLElement & { + mozRequestFullScreen(): Promise; + webkitRequestFullscreen(): Promise; + msRequestFullscreen(): Promise; +}; + +const docWithBrowsersExitFunctions = document as Document & { + mozCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; +}; +@Component({ + selector: 'app-header-vertical', + templateUrl: './vertical.component.html', + styleUrls: ['./vertical.component.css'] +}) +export class VerticalComponent implements OnInit, AfterViewInit { + + insideTm: any; + outsideTm: any; + private _unsubscribeAll: Subject; + private _unsubscribeAllMenu: Subject; + public _themeSettingsConfig: any; + private _menuSettingsConfig: any; + public selectedHeaderNavBarClass: string; + public selectedNavBarHeaderClass: string; + public currentUser: any; + public isHeaderSearchOpen: any; + isMobile = false; + showNavbar = false; + public maximize: any; + public search: any; + public internationalization: any; + public notification: any; + public email: any; + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor( + @Inject(DOCUMENT) private document: Document, + private _renderer: Renderer2, + private navbarService: NavbarService, + private _themeSettingsService: ThemeSettingsService, + private _menuSettingsService: MenuSettingsService, + public authService: AuthService, + private router: Router, + private elementRef: ElementRef + ) { + this._unsubscribeAll = new Subject(); + this._unsubscribeAllMenu = new Subject(); + } + + logout() { + if (localStorage.getItem('currentUser')) { + this.authService.doLogout().then(res => { + window.location.href = '/login'; + }, err => { + console.log(err); + }); + } + } + + ngOnInit() { + + this.isMobile = window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH; + if (!this.isMobile) { + this.showNavbar = true; + } + if (localStorage.getItem('currentUser')) { + this.currentUser = JSON.parse(localStorage.getItem('currentUser')); + } + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + this.refreshView(); + }); + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._menuSettingsConfig = config; + }); + this.maximize = this._themeSettingsConfig.headerIcons.maximize; + this.search = this._themeSettingsConfig.headerIcons.search; + this.internationalization = this._themeSettingsConfig.headerIcons.internationalization; + this.notification = this._themeSettingsConfig.headerIcons.notification; + this.email = this._themeSettingsConfig.headerIcons.email; + } + + ngAfterViewInit(): void { + this.refreshView(); + } + + refreshView() { + const iconElement = document.getElementsByClassName('toggle-icon'); + const menuColorElement = document.getElementsByClassName('main-menu'); + const navigationElement = document.getElementsByClassName('main-menu'); + const navbarElement = document.getElementsByClassName('header-navbar'); + const themeColorElement = document.getElementsByClassName('header-navbar'); + const element = document.getElementsByClassName('navbar-header'); + const boxelement = document.getElementById('customizer'); + if (iconElement) { + if (this._themeSettingsConfig.colorTheme === 'semi-light' || this._themeSettingsConfig.colorTheme === 'light') { + this._renderer.removeClass(iconElement.item(0), 'white'); + this._renderer.addClass(iconElement.item(0), 'blue-grey'); + this._renderer.addClass(iconElement.item(0), 'darken-3'); + } else if (this._themeSettingsConfig.colorTheme === 'semi-dark' || this._themeSettingsConfig.colorTheme === 'dark') { + this._renderer.addClass(iconElement.item(0), 'white'); + this._renderer.removeClass(iconElement.item(0), 'blue-grey'); + this._renderer.removeClass(iconElement.item(0), 'darken-3'); + } + } + + if (this._themeSettingsConfig.colorTheme === 'semi-light') { + this.selectedHeaderNavBarClass = this._themeSettingsConfig.color; + this.selectedNavBarHeaderClass = ''; + } else if (this._themeSettingsConfig.colorTheme === 'semi-dark') { + this.selectedNavBarHeaderClass = this._themeSettingsConfig.color; + this.selectedHeaderNavBarClass = ''; + } else if (this._themeSettingsConfig.colorTheme === 'dark') { + this.selectedHeaderNavBarClass = this._themeSettingsConfig.color; + this.selectedNavBarHeaderClass = ''; + } else if (this._themeSettingsConfig.colorTheme === 'light') { + this.selectedHeaderNavBarClass = this._themeSettingsConfig.color; + this.selectedNavBarHeaderClass = this._themeSettingsConfig.color; + } + if (menuColorElement) { + if (this._themeSettingsConfig.menuColor === 'menu-dark') { + this._renderer.removeClass(menuColorElement.item(0), 'menu-light'); + this._renderer.addClass(menuColorElement.item(0), 'menu-dark'); + } else if (this._themeSettingsConfig.menuColor === 'menu-light') { + this._renderer.removeClass(menuColorElement.item(0), 'menu-dark'); + this._renderer.addClass(menuColorElement.item(0), 'menu-light'); + } + } + + if (themeColorElement) { + if (this._themeSettingsConfig.colorTheme === 'semi-light') { + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-light'); + } else if (this._themeSettingsConfig.colorTheme === 'semi-dark') { + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-light'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-light'); + } else if (this._themeSettingsConfig.colorTheme === 'dark') { + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-light'); + } else if (this._themeSettingsConfig.colorTheme === 'light') { + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-dark'); + this._renderer.removeClass(themeColorElement.item(0), 'navbar-semi-light'); + } + } + + if (navigationElement) { + if (this._themeSettingsConfig.navigation === 'menu-native-scroll') { + this._renderer.addClass(navigationElement.item(0), 'menu-native-scroll'); + } else if (this._themeSettingsConfig.navigation === 'menu-icon-right') { + this._renderer.addClass(navigationElement.item(0), 'menu-icon-right'); + } else if (this._themeSettingsConfig.navigation === 'menu-bordered') { + this._renderer.addClass(navigationElement.item(0), 'menu-bordered'); + } else if (this._themeSettingsConfig.navigation === 'menu-flipped') { + this._renderer.addClass(document.body, 'menu-flipped'); + } else if (this._themeSettingsConfig.navigation === 'menu-collapsible') { + this._renderer.addClass(navigationElement.item(0), 'menu-collapsible'); + } else if (this._themeSettingsConfig.navigation === 'menu-static') { + this._renderer.addClass(navigationElement.item(0), 'menu-static'); + } + } + + if (navbarElement) { + if (this._themeSettingsConfig.menu === 'navbar-static-top') { + this._renderer.addClass(navbarElement.item(0), 'navbar-static-top'); + this._renderer.addClass(navigationElement.item(0), 'menu-static'); + } + } + + if (navbarElement) { + if (this._themeSettingsConfig.menu === 'semi-light') { + this._renderer.addClass(navbarElement.item(0), 'navbar-semi-light bg-gradient-x-grey-blue'); + } else if (this._themeSettingsConfig.menu === 'semi-dark') { + this._renderer.addClass(navbarElement.item(0), 'navbar-semi-dark'); + } else if (this._themeSettingsConfig.menu === 'dark') { + this._renderer.addClass(navbarElement.item(0), 'navbar-dark'); + } else if (this._themeSettingsConfig.menu === 'light') { + this._renderer.addClass(navbarElement.item(0), 'navbar-light'); + } + } + } + + resetOpenMenu() { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + const menu = this._menuSettingsConfig.vertical_menu.items[i]; + if (!menu.submenu) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + } else if (menu.submenu) { + for (let j = 0; j < menu.submenu.items.length; j++) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + menu.submenu.items[j]['isOpen'] = false; + } + } + } + } + + setOpenInNavbar(value) { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + const menu = this._menuSettingsConfig.vertical_menu.items[i]; + if (!menu.submenu && + menu.page === this.router.url) { + menu['isOpen'] = value; + menu['isActive'] = value; + } else if (menu.submenu) { + for (let j = 0; j < menu.submenu.items.length; j++) { + if (menu.submenu.items[j].page === this.router.url) { + menu['isOpen'] = value; + menu['isActive'] = value; + menu.submenu.items[j]['isOpen'] = value; + menu.submenu.items[j]['isActive'] = value; + break; + } + } + } + } + } + + /** + * Use for fixed left aside menu, to show menu on mouseenter event. + * @param e Event + */ + mouseEnter(e) { + if (this.navbarService.isFixedMenu()) { + return; + } + this.navbarService.setMouseInRegion(true); + const navBar = this.document.getElementById('navbar-header'); + const mainMenu = this.document.getElementById('main-menu'); + + // check if the left aside menu is fixed + if (!navBar.classList.contains('expanded')) { + this._renderer.addClass(navBar, 'expanded'); + this._renderer.addClass(mainMenu, 'expanded'); + this.resetOpenMenu(); + this.setOpenInNavbar(true); + } + } + + /** + * Use for fixed left aside menu, to show menu on mouseenter event. + * @param e Event + */ + mouseLeave(event) { + if (this.navbarService.isFixedMenu()) { + return; + } + const _self = this; + const navBar = this.document.getElementById('navbar-header'); + const mainMenu = this.document.getElementById('main-menu'); + if (navBar && navBar.classList.contains('expanded')) { + this.insideTm = setTimeout(() => { + if (!_self.navbarService.isMouseInRegion()) { + this._renderer.removeClass(navBar, 'expanded'); + this._renderer.removeClass(mainMenu, 'expanded'); + this.resetOpenMenu(); + this.setOpenInNavbar(false); + } + }, 100); + } + this.navbarService.setMouseInRegion(false); + } + + // example to update badge value dynamically from another component + updateMenuBadgeValue() { + for (let i = 0; i < this._menuSettingsConfig.items.length; i++) { + if (this._menuSettingsConfig.items[i].badge) { + this._menuSettingsConfig.items[i].badge.value = 19; + } + } + this._menuSettingsService.config = this._menuSettingsConfig; + } + + handleCollapseOfMenu(element) { + if (element.classList && element.classList.contains('has-sub') && element.classList.contains('open')) { + element.classList.remove('open'); + element.classList.remove('hover'); + element.classList.add('menu-collapsed-open'); + } + } + + handleExpandOfMenu(element) { + if (element.classList && element.classList.contains('has-sub') && + element.classList.contains('menu-collapsed-open')) { + element.classList.remove('menu-collapsed-open'); + element.classList.add('open'); + element.classList.add('hover'); + } + } + + toggleMenu(event) { + const target = event.target || event.srcElement || event.currentTarget; + const parent = target.parentElement; + if (parent && parent.classList.contains('has-sub')) { + this.openSubMenuUsingParent(parent); + } else { + const parentOfParent = parent.parentElement; + this.openSubMenuUsingParent(parentOfParent); + } + } + + openSubMenuUsingParent(parent) { + if (parent.classList && parent.classList.contains('has-sub') && + !parent.classList.contains('open')) { + parent.classList.add('open'); + } else if (parent.classList && parent.classList.contains('has-sub') && + parent.classList.contains('open')) { + parent.classList.remove('open'); + } + } + + toggleFullScreen() { + const toggleIcon = document.getElementsByClassName('ficon'); + + if (toggleIcon.item(0).classList.contains('ft-maximize')) { + this.openfullscreen(); + this._renderer.removeClass(toggleIcon.item(0), 'ft-maximize'); + this._renderer.addClass(toggleIcon.item(0), 'ft-minimize'); + } else if (toggleIcon.item(0).classList.contains('ft-minimize')) { + this.closefullscreen(); + this._renderer.addClass(toggleIcon.item(0), 'ft-maximize'); + this._renderer.removeClass(toggleIcon.item(0), 'ft-minimize'); + } + } + + openfullscreen() { + // Trigger fullscreen + // eslint-disable-next-line no-shadow,@typescript-eslint/no-shadow + const docElmWithBrowsersFullScreenFunctions = document.documentElement as HTMLElement & { + mozRequestFullScreen(): Promise; + webkitRequestFullscreen(): Promise; + msRequestFullscreen(): Promise; + }; + + if (docElmWithBrowsersFullScreenFunctions.requestFullscreen) { + docElmWithBrowsersFullScreenFunctions.requestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen) { /* Firefox */ + docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen(); + } else if (docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ + docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.msRequestFullscreen) { /* IE/Edge */ + docElmWithBrowsersFullScreenFunctions.msRequestFullscreen(); + } + } + + closefullscreen() { + // eslint-disable-next-line no-shadow, @typescript-eslint/no-shadow + const docWithBrowsersExitFunctions = document as Document & { + mozCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; + }; + if (docWithBrowsersExitFunctions.exitFullscreen) { + docWithBrowsersExitFunctions.exitFullscreen(); + } else if (docWithBrowsersExitFunctions.mozCancelFullScreen) { /* Firefox */ + docWithBrowsersExitFunctions.mozCancelFullScreen(); + } else if (docWithBrowsersExitFunctions.webkitExitFullscreen) { /* Chrome, Safari and Opera */ + docWithBrowsersExitFunctions.webkitExitFullscreen(); + } else if (docWithBrowsersExitFunctions.msExitFullscreen) { /* IE/Edge */ + docWithBrowsersExitFunctions.msExitFullscreen(); + } + + } + + toggleFixMenu(e) { + if (this.document.body.classList.contains('menu-expanded')) { + // show the left aside menu + this.navbarService.setFixedMenu(false); + this.document.body.classList.remove('menu-expanded'); + this.document.body.classList.add('menu-collapsed'); + // Change switch icon + this._themeSettingsConfig.menu = 'collapse'; + } else { + this.navbarService.setFixedMenu(true); + this.document.body.classList.remove('menu-collapsed'); + this.document.body.classList.add('menu-expanded'); + // Change switch icon + this._themeSettingsConfig.menu = 'expand'; + } + const navBar = this.document.getElementById('navbar-header'); + const mainMenu = this.document.getElementById('main-menu'); + this._renderer.addClass(navBar, 'expanded'); + this._renderer.addClass(mainMenu, 'expanded'); + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } + + toggleNavigation(e) { + const sidenav = document.getElementById('sidenav-overlay'); + const sidebarLeft = document.getElementById('sidebar-left') || document.getElementById('email-app-menu') || + document.getElementById('sidebar-todo'); + const contentOverlay = document.getElementById('content-overlay'); + + if (this.document.body.classList.contains('menu-open') && (this.router.url === '/todos' || this.router.url === '/contacts' || + this.router.url === '/email' || this.router.url === '/chats' || this.router.url === '/chats/static-chat')) { + this.document.body.classList.remove('menu-open'); + this._renderer.removeClass(sidenav, 'd-block'); + this._renderer.removeClass(contentOverlay, 'show'); + this.document.body.classList.add('menu-close'); + this._renderer.addClass(sidenav, 'd-none'); + this.showNavbar = false; + } else if (this.document.body.classList.contains('menu-open')) { + this.document.body.classList.remove('menu-open'); + this._renderer.removeClass(sidenav, 'd-block'); + this.document.body.classList.add('menu-close'); + this._renderer.addClass(sidenav, 'd-none'); + this.showNavbar = false; + } else { + this._renderer.removeClass(sidenav, 'd-none'); + this.document.body.classList.remove('menu-close'); + this.document.body.classList.add('menu-open'); + this._renderer.addClass(sidenav, 'd-block'); + this.showNavbar = false; + } + + if (sidebarLeft) { + this._renderer.removeClass(sidebarLeft, 'show'); + } + if(contentOverlay){ + this._renderer.removeClass(contentOverlay, 'show'); + } + } + + toggleNavbar(e) { + if (this.showNavbar) { + this.showNavbar = false; + } else { + this.showNavbar = true; + } + } + + public clickSearch() { + if (this.isHeaderSearchOpen) { + this.isHeaderSearchOpen = false; + } else { + this.isHeaderSearchOpen = true; + } + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + if (event.target.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.isMobile = true; + this.showNavbar = false; + } else { + this.isMobile = false; + this.showNavbar = true; + } + } + +} diff --git a/src/app/_layout/navigation/horizontalnav/horizontalnav.component.css b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.css new file mode 100644 index 0000000..24e620a --- /dev/null +++ b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.css @@ -0,0 +1,39 @@ +.is-sticky { + width: 100%; + position: fixed; + top: 0px; + z-index: 999; +} + +.container { + padding-left: 0px !important; + padding-right: 0px !important; +} + +.is-static { + width: 100%; + position: sticky; + top: 0px; + z-index: 999; +} + +:host ::ng-deep .navbar-dark .navbar-nav .nav-link { + color: white !important; +} + +:host ::ng-deep .navbar-light .navbar-nav .nav-link { + color: #6b6f82 !important; +} + +.dropdown-menu .dropdown-submenu>a:after { + top: 14px; +} + +.dropdown .dropdown-menu { + min-width: 13rem !important; +} + +.navbar-horizontal .dropdown-menu .dropdown-submenu>a:after, +.navbar-horizontal .dropdown-menu .dropdown-submenu>button:after { + right: 0.5rem; +} diff --git a/src/app/_layout/navigation/horizontalnav/horizontalnav.component.html b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.html new file mode 100644 index 0000000..d775b60 --- /dev/null +++ b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.html @@ -0,0 +1,59 @@ + diff --git a/src/app/_layout/navigation/horizontalnav/horizontalnav.component.spec.ts b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.spec.ts new file mode 100644 index 0000000..71a50e6 --- /dev/null +++ b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HorizontalnavComponent } from './horizontalnav.component'; + +describe('HorizontalnavComponent', () => { + let component: HorizontalnavComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HorizontalnavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HorizontalnavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/navigation/horizontalnav/horizontalnav.component.ts b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.ts new file mode 100644 index 0000000..7c5c79a --- /dev/null +++ b/src/app/_layout/navigation/horizontalnav/horizontalnav.component.ts @@ -0,0 +1,259 @@ +import { Component, AfterViewInit, OnInit, Renderer2, HostListener } from '@angular/core'; +import { trigger, state, transition, style, animate } from '@angular/animations'; +import { ThemeSettingsService } from '../../settings/theme-settings.service'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { MenuSettingsService } from '../../settings/menu-settings.service'; +import { isArray } from 'util'; +import { Router } from '@angular/router'; +import { AppConstants } from 'src/app/_helpers/app.constants'; + + +@Component({ + selector: 'app-horizontalnav', + templateUrl: './horizontalnav.component.html', + styleUrls: ['./horizontalnav.component.css'], + animations: [ + trigger('fade', + [ + state('void', style({ opacity: 0 })), + transition(':enter', [animate(300)]), + transition(':leave', [animate(500)]), + ] + )] +}) +export class HorizontalnavComponent implements OnInit, AfterViewInit { + + insideTm: any; + private _themeSettingsConfig: any; + private _unsubscribeAll: Subject; + private _unsubscribeAllMenu: Subject; + public _menuSettingsConfig: any; + loggedInUser: any; + + constructor(private _themeSettingsService: ThemeSettingsService, + public _menuSettingsService: MenuSettingsService, + private _renderer: Renderer2, + private router: Router) { + this._unsubscribeAll = new Subject(); + this._unsubscribeAllMenu = new Subject(); + } + ngAfterViewInit(): void { + this.refreshView(); + } + + ngOnInit() { + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + this.refreshView(); + }); + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAllMenu)) + .subscribe((config) => { + this._menuSettingsConfig = config; + }); + this.setActiveRouteInNavbar(); + } + setTheme(theme) { + this._themeSettingsService.config = { + colorTheme: theme, // semi-light, semi-dark + }; + } + + setLayout(layout) { + this._themeSettingsService.config = { + layout: { + pattern: layout + } + }; + } + + fixComponent(component, value) { + if (component === 'header') { + this._themeSettingsService.config = { + header: value + }; + } else if (component === 'footer') { + this._themeSettingsService.config = { + footer: value + }; + } else { + this._themeSettingsService.config = { + header: value, + footer: value + }; + } + } + + callFunction(event) { + const methodName = event.methodName; + if (this[methodName]) { + // method exists on the component + const param = event.methodParam; + if (!isArray(param)) { + this[methodName](param); // call it + } else { + this[methodName](param[0], param[1]); // call it + } + + } + } + + + refreshView() { + const menuHeaderElement = document.getElementsByClassName('menu-header'); + // Theme + if (menuHeaderElement && menuHeaderElement.length > 0) { + if (this._themeSettingsConfig.colorTheme === 'light') { + this._renderer.removeClass(menuHeaderElement.item(0), 'navbar-dark'); + this._renderer.addClass(menuHeaderElement.item(0), 'navbar-light'); + } else if (this._themeSettingsConfig.colorTheme === 'dark') { + this._renderer.addClass(menuHeaderElement.item(0), 'navbar-dark'); + this._renderer.removeClass(menuHeaderElement.item(0), 'navbar-light'); + } + if (this._themeSettingsConfig.layout.pattern === 'static') { + this._renderer.addClass(menuHeaderElement.item(0), 'menu-static'); + } else if (this._themeSettingsConfig.layout.pattern === 'fixed') { + this._renderer.removeClass(menuHeaderElement.item(0), 'menu-static'); + } + } + + } + setActiveRouteInNavbar() { + for (let i = 0; i < this._menuSettingsConfig.horizontal_menu.items.length; i++) { + if (!this._menuSettingsConfig.horizontal_menu.items[i].submenu && + this._menuSettingsConfig.horizontal_menu.items[i].page === this.router.url) { + this._menuSettingsConfig.horizontal_menu.items[i]['isSelected'] = true; + break; + } else if (this._menuSettingsConfig.horizontal_menu.items[i].submenu) { + // Level 1 menu + for (let j = 0; j < this._menuSettingsConfig.horizontal_menu.items[i].submenu.items.length; j++) { + if (!this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu && + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].page === this.router.url) { + this._menuSettingsConfig.horizontal_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].isOpen = true; + break; + } else if (this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu) { + // Level 2 menu + for (let k = 0; k < this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items.length; k++) { + if (this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items[k].page === this.router.url) { + this._menuSettingsConfig.horizontal_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].isOpen = true; + + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items[k]['isSelected'] = true; + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].isOpen = true; + } + } + } + } + } + } + } + toggleMenu(event, child, isSubmenuOfSubmenu) { + const toggle = document.getElementById('sidenav-overlay'); + this.resetOtherActiveMenu(child, isSubmenuOfSubmenu); + this.loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + child['isSelected'] = true; + + if (this.router.url !== '') { + this._renderer.addClass(toggle, 'd-none'); + this._renderer.removeClass(toggle, 'd-block'); + } + + if ( child.page === '/chats' && this.loggedInUser.email === 'john@pixinvent.com') { + this.router.navigate(['/chats/static-chat']); + } else if ( child.page === '/chats' && this.loggedInUser.email !== 'john@pixinvent.com') { + this.router.navigate(['/chats']); + } + } + + resetOtherActiveMenu(selectedChild, isSubmenuOfSubmenu) { + for (let i = 0; i < this._menuSettingsConfig.horizontal_menu.items.length; i++) { + if (selectedChild.page !== 'null') { + this._menuSettingsConfig.horizontal_menu.items[i]['isSelected'] = false; + } + this.handleSubmenuItems(this._menuSettingsConfig.horizontal_menu.items[i], selectedChild, isSubmenuOfSubmenu); + } + } + + handleSubmenuItems(parentItem, selectedChild, isSubmenuOfSubmenu) { + let isSelectedChildExist = false; + if (selectedChild['title'] === 'Horizontal') { + localStorage.setItem('currentLayoutStyle', AppConstants.LAYOUT_STYLE_HORIZONTAL); + window.location.reload(); + } else if (selectedChild['title'] === 'Vertical') { + localStorage.setItem('currentLayoutStyle', AppConstants.LAYOUT_STYLE_VERTICAL); + window.location.reload(); + } else if (parentItem['submenu'] && + parentItem['submenu']['items'] && + parentItem['submenu']['items'].length > 0) { + for (let j = 0; j < parentItem['submenu']['items'].length; j++) { + if (selectedChild.title === parentItem['submenu']['items'][j].title) { + isSelectedChildExist = true; + } + this.handleSubmenuItems(parentItem['submenu']['items'][j], selectedChild, isSubmenuOfSubmenu); + + if (parentItem['submenu']['items'][j]['isSelected'] === true) { + isSelectedChildExist = true; + } + } + if (!isSelectedChildExist) { + parentItem['isSelected'] = false; + } else { + parentItem['isSelected'] = true; + } + } else if (parentItem.title !== selectedChild.title && !isSubmenuOfSubmenu) { + parentItem['isSelected'] = false; + } + } + + + @HostListener('window:scroll', ['$event']) + onWindowScroll(e) { + const element = document.getElementById('sticky-wrapper'); + if (this._themeSettingsConfig.layout.style === 'horizontal') { + if (this._themeSettingsConfig.layout.pattern === 'fixed' || + this._themeSettingsConfig.layout.pattern === '') { + if (window.pageYOffset > 70) { // 70 is the height of the horizontal header + element.classList.add('is-sticky'); + element.classList.remove('container'); + } else { + element.classList.remove('is-sticky'); + } + } else if (this._themeSettingsConfig.layout.pattern === 'boxed') { + if (window.pageYOffset > 70) { // 70 is the height of the horizontal header + element.classList.add('is-sticky'); + element.classList.add('container'); + } else { + element.classList.remove('is-sticky'); + element.classList.remove('container'); + } + } else if (this._themeSettingsConfig.layout.pattern === 'static') { + element.classList.remove('is-sticky'); + element.classList.remove('container'); + element.classList.add('is-static'); + } + } + } + + + mouseEnter(e) { + const _event = e; + _event.srcElement.classList.add('show'); + } + + /** + * Use for fixed left aside menu, to show menu on mouseenter event. + * @param e Event + */ + mouseLeave(event) { + const _event = event; + _event.srcElement.classList.remove('show'); + } +} diff --git a/src/app/_layout/navigation/navigation.component.css b/src/app/_layout/navigation/navigation.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/navigation/navigation.component.html b/src/app/_layout/navigation/navigation.component.html new file mode 100644 index 0000000..289731b --- /dev/null +++ b/src/app/_layout/navigation/navigation.component.html @@ -0,0 +1,10 @@ +
+ + + + + + + + +
diff --git a/src/app/_layout/navigation/navigation.component.spec.ts b/src/app/_layout/navigation/navigation.component.spec.ts new file mode 100644 index 0000000..e5f0ae4 --- /dev/null +++ b/src/app/_layout/navigation/navigation.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { NavigationComponent } from './navigation.component'; + +describe('NavigationComponent', () => { + let component: NavigationComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ NavigationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/navigation/navigation.component.ts b/src/app/_layout/navigation/navigation.component.ts new file mode 100644 index 0000000..ee726f0 --- /dev/null +++ b/src/app/_layout/navigation/navigation.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit, HostListener } from '@angular/core'; +import { takeUntil } from 'rxjs/operators'; + +import { ThemeSettingsService } from '../settings/theme-settings.service'; +import { Subject } from 'rxjs'; +import { AppConstants } from 'src/app/_helpers/app.constants'; +@Component({ + selector: 'app-navigation', + templateUrl: './navigation.component.html', + styleUrls: ['./navigation.component.css'] +}) +export class NavigationComponent implements OnInit { + + layout: string; + private _themeSettingsConfig: any; + private _unsubscribeAll: Subject; + isMobile = false; + constructor(private _themeSettingsService: ThemeSettingsService) { + this._unsubscribeAll = new Subject(); + } + + ngOnInit() { + const self = this; + this.isMobile = window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH_HORIZONTAL; + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + if (config.layout && config.layout.style && + config.layout.style === 'vertical') { + self.layout = 'vertical'; + } else { + self.layout = 'horizontal'; + } + }); + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + if (event.target.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH_HORIZONTAL) { + this.isMobile = true; + } else { + this.isMobile = false; + } + } +} diff --git a/src/app/_layout/navigation/navigation.config.ts b/src/app/_layout/navigation/navigation.config.ts new file mode 100644 index 0000000..813c31a --- /dev/null +++ b/src/app/_layout/navigation/navigation.config.ts @@ -0,0 +1,57 @@ +// Default theme settings configurations + +export class NavigationConfig { + public config: any = {}; + + constructor() { + this.config = { + items: [ + { + title: 'Dashboard', + root: true, + icon: 'la-home', + page: '/home', + badge: {type: 'badge-info', value: '2'} + }, + { + title: 'Changelog', + root: true, + icon: 'la-file', + page: 'null', + submenu: { + items : [ + { + + } + ] + } + }, + { + title: 'Changelog', + root: true, + icon: 'la-file', + page: 'null', + badge: {type: 'badge-danger', value: '1.0'} + }, + { + title: 'Support', + root: true, + icon: 'la-ellipsis-h feather ft-minus', + page: 'null' + }, + { + title: 'Raise Support', + root: true, + icon: 'la-support', + page: 'null' + }, + { + title: 'Documentation', + root: true, + icon: 'la-folder', + page: 'null' + } + ] + }; + } +} diff --git a/src/app/_layout/navigation/verticalnav/verticalnav.component.css b/src/app/_layout/navigation/verticalnav/verticalnav.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/navigation/verticalnav/verticalnav.component.html b/src/app/_layout/navigation/verticalnav/verticalnav.component.html new file mode 100644 index 0000000..dd766f6 --- /dev/null +++ b/src/app/_layout/navigation/verticalnav/verticalnav.component.html @@ -0,0 +1,83 @@ + diff --git a/src/app/_layout/navigation/verticalnav/verticalnav.component.spec.ts b/src/app/_layout/navigation/verticalnav/verticalnav.component.spec.ts new file mode 100644 index 0000000..a743f70 --- /dev/null +++ b/src/app/_layout/navigation/verticalnav/verticalnav.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { VerticalnavComponent } from './verticalnav.component'; + +describe('VerticalnavComponent', () => { + let component: VerticalnavComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ VerticalnavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(VerticalnavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/navigation/verticalnav/verticalnav.component.ts b/src/app/_layout/navigation/verticalnav/verticalnav.component.ts new file mode 100644 index 0000000..02edc99 --- /dev/null +++ b/src/app/_layout/navigation/verticalnav/verticalnav.component.ts @@ -0,0 +1,389 @@ +import { Component, Inject, OnInit, Renderer2, NgZone, ViewChild } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from '../../../_services/navbar.service'; +import { ThemeSettingsService } from '../../settings/theme-settings.service'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { MenuSettingsService } from '../../settings/menu-settings.service'; +import { isArray } from 'util'; +import { trigger, state, style, animate, transition } from '@angular/animations'; +import { AppConstants } from 'src/app/_helpers/app.constants'; +import { Router, NavigationEnd, Event } from '@angular/router'; + +@Component({ + + selector: 'app-verticalnav', + templateUrl: './verticalnav.component.html', + styleUrls: ['./verticalnav.component.css'], + animations: [ + trigger('popOverState', [ + state('show', style({ + opacity: '1', + })), + state('hide', style({ + opacity: '0', + height: '*', + })), + transition('show => hide', animate('200ms ease-in-out')), + transition('hide => show', animate('200ms ease-in-out')) + ]) + ] +}) +export class VerticalnavComponent implements OnInit { + child: any; + insideTm: any; + outsideTm: any; + loggedInUser: any; + public title; + private _themeSettingsConfig: any; + public _menuSettingsConfig: any; + private _unsubscribeAll: Subject; + private _unsubscribeAllMenu: Subject; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor( + @Inject(DOCUMENT) private document: Document, + private navbarService: NavbarService, + private _themeSettingsService: ThemeSettingsService, + private _menuSettingsService: MenuSettingsService, + private _renderer: Renderer2, + private router: Router + ) { + this._unsubscribeAll = new Subject(); + this._unsubscribeAllMenu = new Subject(); + this.router.events.subscribe((event: Event) => { + + if (event instanceof NavigationEnd) { + this.resetMainMenu(); + this.setActiveRouteInNavbar(); + } + }); + } + ngOnInit() { + + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + this.refreshView(); + }); + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAllMenu)) + .subscribe((config) => { + this._menuSettingsConfig = config; + }); + // TODO Patch to reset menu after login + this.resetMainMenu(); + this.setActiveRouteInNavbar(); + } + + resetMainMenu() { + const nodes = this.document.getElementById('main-menu-navigation').childNodes; + for (let i = 0; i < nodes.length; i++) { + this.resetCollapseMenu(nodes[i]); + } + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = false; + this._menuSettingsConfig.vertical_menu.items[i]['hover'] = false; + this._menuSettingsConfig.vertical_menu.items[i]['isOpen'] = false; + this.resetSubmenuItems(this._menuSettingsConfig.vertical_menu.items[i]); + } + } + + resetCollapseMenu(element) { + if (element.classList && element.classList.contains('has-sub') && element.classList.contains('open')) { + element.classList.remove('hover'); + element.classList.remove('menu-collapsed-open'); + } + } + + resetSubmenuItems(parentItem) { + if (parentItem['submenu'] && + parentItem['submenu']['items'] && + parentItem['submenu']['items'].length > 0) { + parentItem['isOpen'] = false; + for (let j = 0; j < parentItem['submenu']['items'].length; j++) { + parentItem['submenu']['items'][j]['isSelected'] = false; + this.resetSubmenuItems(parentItem['submenu']['items'][j]); + } + } + } + + refreshView() { + const mainMenuElement = document.getElementsByClassName('main-menu'); + if (mainMenuElement && mainMenuElement.length > 0) { + if (this._themeSettingsConfig.colorTheme === 'semi-light' || this._themeSettingsConfig.colorTheme === 'light') { + this._renderer.removeClass(mainMenuElement.item(0), 'menu-dark'); + this._renderer.addClass(mainMenuElement.item(0), 'menu-light'); + } else if (this._themeSettingsConfig.colorTheme === 'semi-dark' || this._themeSettingsConfig.colorTheme === 'dark') { + this._renderer.addClass(mainMenuElement.item(0), 'menu-dark'); + this._renderer.removeClass(mainMenuElement.item(0), 'menu-light'); + } + if (this._themeSettingsConfig.layout.pattern === 'static') { + this._renderer.removeClass(mainMenuElement.item(0), 'menu-fixed'); + this._renderer.addClass(mainMenuElement.item(0), 'menu-static'); + } else if (this._themeSettingsConfig.layout.pattern === 'fixed') { + this._renderer.removeClass(mainMenuElement.item(0), 'menu-static'); + this._renderer.addClass(mainMenuElement.item(0), 'menu-fixed'); + } + } + } + + setActiveRouteInNavbar() { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + if (!this._menuSettingsConfig.vertical_menu.items[i].submenu && + this._menuSettingsConfig.vertical_menu.items[i].page === this.router.url) { + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = true; + break; + } else if (this._menuSettingsConfig.vertical_menu.items[i].submenu) { + // Level 1 menu + for (let j = 0; j < this._menuSettingsConfig.vertical_menu.items[i].submenu.items.length; j++) { + if (!this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu && + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].page === this.router.url) { + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].isOpen = true; + break; + } else if (this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu) { + // Level 2 menu + for (let k = 0; k < this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items.length; k++) { + if (this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items[k].page === this.router.url) { + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].isOpen = true; + + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items[k]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].isOpen = true; + } + } + } else if(!this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu ){ + let a,b; + let URL = localStorage.getItem('creatorurl'); + let SurveyUrl = localStorage.getItem('surveyurl'); + if( this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].page ==='/creator' && this.router.url === URL){ + a = j; + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[a]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].isOpen = true; + // this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j]['isSelected'] = false; + } else if(this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].page ==='/survey' && this.router.url === SurveyUrl){ + b = j; + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[b]['isSelected'] = true; + this._menuSettingsConfig.vertical_menu.items[i].isOpen = true; + if (this._menuSettingsConfig.vertical_menu.items[i].submenu.items[a]) { + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[a]['isSelected'] = false; + } + } + } + } + } + } + } + + resetOpenMenu() { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + const menu = this._menuSettingsConfig.vertical_menu.items[i]; + if (!menu.submenu) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + } else if (menu.submenu) { + for (let j = 0; j < menu.submenu.items.length; j++) { + menu['isOpen'] = false; + menu['isActive'] = false; + menu['hover'] = false; + menu.submenu.items[j]['isOpen'] = false; + } + } + } + } + + setOpenInNavbar(value) { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + const menu = this._menuSettingsConfig.vertical_menu.items[i]; + if (!menu.submenu && + menu.page === this.router.url) { + menu['isOpen'] = value; + menu['isActive'] = value; + } else if (menu.submenu) { + for (let j = 0; j < menu.submenu.items.length; j++) { + if (menu.submenu.items[j].page === this.router.url) { + menu['isOpen'] = value; + menu['isActive'] = value; + menu.submenu.items[j]['isOpen'] = value; + menu.submenu.items[j]['isActive'] = value; + break; + } + } + } + } + } + + callFunction(event, child, isSubmenuOfSubmenu) { + const methodName = event.methodName; + if (this[methodName]) { + // method exists on the component + const param = event.methodParam; + if (!isArray(param)) { + this[methodName](param); // call it + } else { + this[methodName](param[0], param[1]); // call it + } + } + this.resetOtherActiveMenu(child, isSubmenuOfSubmenu); + child['isSelected'] = true; + } + + setTheme(theme) { + this._themeSettingsService.config = { + colorTheme: theme, // semi-light, semi-dark + }; + } + + setLayout(layout) { + this._themeSettingsService.config = { + layout: { + pattern: layout + } + }; + } + + fixComponent(component, value) { + if (component === 'header') { + this._themeSettingsService.config = { + header: value + }; + } else if (component === 'footer') { + this._themeSettingsService.config = { + footer: value + }; + } else { + this._themeSettingsService.config = { + header: value, + footer: value + }; + } + } + + /** + * Use for fixed left aside menu, to show menu on mouseenter event. + * @param e Event + */ + mouseEnter(e) { + if (this.navbarService.isFixedMenu()) { + return; + } + this.navbarService.setMouseInRegion(true); + const navBar = this.document.getElementById('navbar-header'); + const mainMenu = this.document.getElementById('main-menu'); + + // check if the left aside menu is fixed + if (!navBar.classList.contains('expanded')) { + this._renderer.addClass(navBar, 'expanded'); + this._renderer.addClass(mainMenu, 'expanded'); + this.resetOpenMenu(); + this.setOpenInNavbar(true); + } + } + + /** + * Use for fixed left aside menu, to show menu on mouseenter event. + * @param e Event + */ + mouseLeave(event) { + if (this.navbarService.isFixedMenu()) { + return; + } + const _self = this; + const navBar = this.document.getElementById('navbar-header'); + const mainMenu = this.document.getElementById('main-menu'); + if (navBar && navBar.classList.contains('expanded')) { + this.insideTm = setTimeout(() => { + if (!_self.navbarService.isMouseInRegion()) { + this._renderer.removeClass(navBar, 'expanded'); + this._renderer.removeClass(mainMenu, 'expanded'); + this.resetOpenMenu(); + this.setOpenInNavbar(false); + } + }, 100); + } + this.navbarService.setMouseInRegion(false); + } + + resetOtherActiveMenu(selectedChild, isSubmenuOfSubmenu) { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + this._menuSettingsConfig.vertical_menu.items[i]['isSelected'] = false; + this._menuSettingsConfig.vertical_menu.items[i]['hover'] = false; + this.handleSubmenuItems(this._menuSettingsConfig.vertical_menu.items[i], selectedChild, isSubmenuOfSubmenu); + } + } + + handleSubmenuItems(parentItem, selectedChild, isSubmenuOfSubmenu) { + if (selectedChild['title'] === 'Horizontal') { + localStorage.setItem('currentLayoutStyle', AppConstants.LAYOUT_STYLE_HORIZONTAL); + window.location.reload(); + } else if (selectedChild['title'] === 'Vertical') { + localStorage.setItem('currentLayoutStyle', AppConstants.LAYOUT_STYLE_VERTICAL); + window.location.reload(); + } else if (parentItem['submenu'] && + parentItem['submenu']['items'] && + parentItem['submenu']['items'].length > 0) { + if (parentItem.title !== selectedChild.title && parentItem['isOpen'] === true && !isSubmenuOfSubmenu && + this._themeSettingsConfig.navigation === AppConstants.NAVIGATION_TYPE_COLLAPSIBLE) { + parentItem['isOpen'] = false; + } + for (let j = 0; j < parentItem['submenu']['items'].length; j++) { + if (selectedChild.page !== 'null') { + parentItem['submenu']['items'][j]['isSelected'] = false; + } + this.handleSubmenuItems(parentItem['submenu']['items'][j], selectedChild, isSubmenuOfSubmenu); + } + } else if (parentItem.title !== selectedChild.title && !selectedChild.submenu + && this._themeSettingsConfig.navigation === AppConstants.NAVIGATION_TYPE_COLLAPSIBLE + && parentItem['isOpen'] === true) { + parentItem['isOpen'] = false; + } + } + toggleMenu(event, child, isSubmenuOfSubmenu) { + const toggle = document.getElementById('sidenav-overlay'); + this.resetOtherActiveMenu(child, isSubmenuOfSubmenu); + this.loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + if (child['isSelected'] === true) { + child['isSelected'] = false; + } else { + child['isSelected'] = true; + } + + if (child['hover'] === true) { + child['hover'] = false; + } else { + child['hover'] = true; + } + + if (child['isOpen'] === true) { + child['isOpen'] = false; + } else { + child['isOpen'] = true; + } + + if (this.router.url !== '') { + this._renderer.addClass(toggle, 'd-none'); + this._renderer.removeClass(toggle, 'd-block'); + } + + if ( child.page === '/chats' && this.loggedInUser.email === 'john@pixinvent.com') { + this.router.navigate(['/chats/static-chat']); + } else if ( child.page === '/chats' && this.loggedInUser.email !== 'john@pixinvent.com') { + this.router.navigate(['/chats']); + } + + } +} diff --git a/src/app/_layout/private-layout/private-layout.component.css b/src/app/_layout/private-layout/private-layout.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/private-layout/private-layout.component.html b/src/app/_layout/private-layout/private-layout.component.html new file mode 100644 index 0000000..0ef945f --- /dev/null +++ b/src/app/_layout/private-layout/private-layout.component.html @@ -0,0 +1,14 @@ +
+ + +
+ +
+ + +
+
+
+ Buy Now +
+
\ No newline at end of file diff --git a/src/app/_layout/private-layout/private-layout.component.spec.ts b/src/app/_layout/private-layout/private-layout.component.spec.ts new file mode 100644 index 0000000..d2ee157 --- /dev/null +++ b/src/app/_layout/private-layout/private-layout.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PrivateLayoutComponent } from './private-layout.component'; + +describe('PrivateLayoutComponent', () => { + let component: PrivateLayoutComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PrivateLayoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PrivateLayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/private-layout/private-layout.component.ts b/src/app/_layout/private-layout/private-layout.component.ts new file mode 100644 index 0000000..6fc21ae --- /dev/null +++ b/src/app/_layout/private-layout/private-layout.component.ts @@ -0,0 +1,322 @@ +import { Component, OnInit, Renderer2, HostListener, Inject } from '@angular/core'; +import { ThemeSettingsService } from '../settings/theme-settings.service'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { DeviceDetectorService } from '../../_services/device-detector.service'; +import { AppConstants } from '../../_helpers/app.constants'; +import { Router, NavigationStart, NavigationEnd, Event, NavigationError } from '@angular/router'; +import { DOCUMENT } from '@angular/common'; +import { NavbarService } from 'src/app/_services/navbar.service'; + +@Component({ + selector: 'app-private-layout', + templateUrl: './private-layout.component.html', + styleUrls: ['./private-layout.component.css'] +}) +export class PrivateLayoutComponent implements OnInit { + + private _unsubscribeAll: Subject; + private _themeSettingsConfig: any; + public layout: any; + public customizer: any; + public buybutton: any; + deviceInfo = null; + + constructor(private renderer: Renderer2, + @Inject(DOCUMENT) private document: Document, + private router: Router, + private navbarService: NavbarService, + private _themeSettingsService: ThemeSettingsService, + private deviceService: DeviceDetectorService) { + this._unsubscribeAll = new Subject(); + + this.router.events.subscribe((event: Event) => { + if (event instanceof NavigationStart) { + // Show loading indicator + } + if (event instanceof NavigationEnd) { + // Hide loading indicator + if (this.router.url === '/chats' || this.router.url === '/chats/static-chat') { + this.renderer.addClass(document.body, 'chat-application'); + } else { + this.renderer.removeClass(document.body, 'chat-application'); + } + + if (this.router.url === '/email') { + this.renderer.addClass(document.body, 'email-application'); + } else { + this.renderer.removeClass(document.body, 'email-application'); + } + + if (this.router.url === '/contacts') { + this.renderer.addClass(document.body, 'app-contacts'); + } else { + this.renderer.removeClass(document.body, 'app-contacts'); + } + + if (this.router.url === '/todos') { + this.renderer.addClass(document.body, 'todo'); + } else { + this.renderer.removeClass(document.body, 'todo'); + } + if (this.router.url === '/todo-app') { + this.renderer.addClass(document.body, 'todo-application'); + } else { + this.renderer.removeClass(document.body, 'todo-application'); + } + } + + if (event instanceof NavigationError) { + // Hide loading indicator + } + }); + } + + ngOnInit() { + + this.renderer.removeClass(document.body, 'bg-full-screen-image'); + + // Subscribe to config changes + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + if (localStorage.getItem('currentLayoutStyle')) { + this._themeSettingsConfig.layout.style = localStorage.getItem('currentLayoutStyle'); + } + }); + + this.deviceInfo = this.deviceService.getDeviceInfo(); + const isMobile = this.deviceService.isMobile(); + this.handleBody(isMobile); + this.handleCollapsibleMenu(); + } + + handleBody(isMobile: boolean) { + const _self = this; + + if (this._themeSettingsConfig.layout.style === 'vertical') { + _self.renderer.setAttribute(document.body, 'data-menu', 'vertical-menu-modern'); + } else { + _self.renderer.setAttribute(document.body, 'data-menu', 'horizontal-menu-modern'); + } + + let currentBodyClassList = []; + this.layout = this._themeSettingsConfig.layout.style; + this.customizer = this._themeSettingsConfig.customizer; + this.buybutton = this._themeSettingsConfig.buybutton; + // Vertical resposive view + if (this._themeSettingsConfig.layout.style === 'vertical' && + window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + const previosBodyClassList = [].slice.call(document.body.classList); + previosBodyClassList.forEach(function (c) { + _self.renderer.removeClass(document.body, c); + }); + if (this._themeSettingsConfig.layout.style === 'vertical') { + currentBodyClassList = ['vertical-layout', 'vertical-overlay-menu', '2-columns', 'pace-done', 'menu-close', 'fixed-navbar']; + if (this._themeSettingsConfig.layout.pattern === 'fixed') { + currentBodyClassList.push('fixed-navbar'); + } + } else { + currentBodyClassList = ['vertical-layout', '2-columns', 'vertical-overlay-menu', 'pace-done', 'menu-hide']; + } + if (this._themeSettingsConfig.layout.pattern === 'fixed') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === '') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === 'boxed') { + this.renderer.addClass(document.body, 'boxed-layout'); + this.renderer.addClass(document.body, 'container'); + this.renderer.addClass(document.body, 'fixed-navbar'); + } + // Horizontal resposive view + } else if (this._themeSettingsConfig.layout.style === 'horizontal' && + window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH_HORIZONTAL) { + const previosBodyClassList = [].slice.call(document.body.classList); + previosBodyClassList.forEach(function (c) { + _self.renderer.removeClass(document.body, c); + }); + currentBodyClassList = ['horizontal-layout', 'horizontal-menu', '2-columns', 'pace-done', + 'fixed-navbar', 'menu-hide']; + + if (this._themeSettingsConfig.layout.pattern === 'fixed') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === '') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === 'boxed') { + this.renderer.addClass(document.body, 'boxed-layout'); + this.renderer.addClass(document.body, 'container'); + this.renderer.addClass(document.body, 'fixed-navbar'); + } + // Normal view + } else { + const previosBodyClassList = [].slice.call(document.body.classList); + let callapseOrExpanded = ''; + previosBodyClassList.forEach(function (c) { + if (c === 'menu-collapsed') { + callapseOrExpanded = 'menu-collapsed'; + } else if (c === 'menu-expanded') { + callapseOrExpanded = 'menu-expanded'; + } + _self.renderer.removeClass(document.body, c); + }); + if (this._themeSettingsConfig.layout.style === 'vertical') { + if (callapseOrExpanded === '') { + const toggleIcon = document.getElementsByClassName('toggle-icon'); + if (toggleIcon.item && toggleIcon.item(0) && + toggleIcon.item(0).classList.contains('ft-toggle-right')) { + callapseOrExpanded = 'menu-expanded'; + } else { + callapseOrExpanded = 'menu-collapsed'; + } + } + + // callapseOrExpanded = callapseOrExpanded !== '' ? callapseOrExpanded : 'menu-collapsed'; + currentBodyClassList = ['vertical-layout', 'vertical-menu-modern', '2-columns', 'pace-done', 'menu-close', callapseOrExpanded]; + + if (this._themeSettingsConfig.layout.pattern === 'fixed') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === '') { + currentBodyClassList.push('fixed-navbar'); + } + + if (this._themeSettingsConfig.layout.pattern === 'boxed') { + this.renderer.addClass(document.body, 'boxed-layout'); + this.renderer.addClass(document.body, 'container'); + this.renderer.addClass(document.body, 'fixed-navbar'); + } + + } else { + currentBodyClassList = ['horizontal-layout', '2-columns', 'horizontal-menu']; + if (window.innerWidth >= AppConstants.MOBILE_RESPONSIVE_WIDTH) { + currentBodyClassList.push('menu-expanded'); + } else { + currentBodyClassList.push('menu-collapsed'); + } + + if (this._themeSettingsConfig.layout.pattern === 'boxed') { + this.renderer.addClass(document.body, 'boxed-layout'); + this.renderer.addClass(document.body, 'container'); + } + } + } + const footer = document.getElementById('footer'); + // if (this.router.url == '/chats') { + // const footer = document.getElementById('footer'); + if (this.router.url === '/chats' || this.router.url === '/chats/static-chat') { + currentBodyClassList.push('chat-application'); + // footer.classList.add('fixed-bottom'); + } else if (currentBodyClassList.includes('fixed-bottom')) { + currentBodyClassList.push('chat-application'); + currentBodyClassList = currentBodyClassList.filter(item => item !== 'fixed-bottom'); + footer.classList.remove('fixed-bottom'); + } + + if (this.router.url === '/email') { + currentBodyClassList.push('email-application'); + // footer.classList.add('fixed-bottom'); + } else if (currentBodyClassList.includes('fixed-bottom')) { + currentBodyClassList.push('email-application'); + currentBodyClassList = currentBodyClassList.filter(item => item !== 'fixed-bottom'); + footer.classList.remove('fixed-bottom'); + } + + if (this.router.url === '/contacts') { + currentBodyClassList.push('app-contacts'); + } + if (this.router.url === '/todos') { + currentBodyClassList.push('todo'); + } + if (this.router.url === '/todo-app') { + currentBodyClassList.push('todo-application'); + } + + currentBodyClassList.forEach(function (c) { + _self.renderer.addClass(document.body, c); + }); + this.handleFullScreen(); + } + + handleFullScreen() { + const toggleIcon = document.getElementsByClassName('ficon'); + if (window.innerWidth === screen.width && window.innerHeight === screen.height && toggleIcon.item(0)) { + this.renderer.removeClass(toggleIcon.item(0), 'ft-maximize'); + this.renderer.addClass(toggleIcon.item(0), 'ft-minimize'); + } else if (toggleIcon.item(0)) { + this.renderer.addClass(toggleIcon.item(0), 'ft-maximize'); + this.renderer.removeClass(toggleIcon.item(0), 'ft-minimize'); + } + } + + handleCollapsibleMenu() { + if (this._themeSettingsConfig.menu === 'collapse') { + // show the left aside menu + this.navbarService.setFixedMenu(false); + this.document.body.classList.remove('menu-expanded'); + this.document.body.classList.add('menu-collapsed'); + } else { + this.navbarService.setFixedMenu(true); + this.document.body.classList.remove('menu-collapsed'); + this.document.body.classList.add('menu-expanded'); + } + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + const menuClose = document.body.getElementsByClassName('menu-close'); + const toggle = document.getElementsByClassName('content-overlay'); + const sidenavOverlay = document.getElementsByClassName('sidenav-overlay'); + const emailMenu = document.getElementsByClassName('email-app-menu'); + const toggleIcon = document.getElementById('sidebar-left'); + + if (event.target.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.handleBody(true); + if (menuClose) { + this.renderer.removeClass(sidenavOverlay.item(0), 'd-block'); + this.renderer.addClass(sidenavOverlay.item(0), 'd-none'); + } + } else { + this.handleBody(false); + } + if (toggle && (this.router.url === '/chats' || this.router.url === '/static-chat' || + this.router.url === '/todos' || this.router.url === '/contacts') && + event.target.innerWidth > AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.renderer.removeClass(toggle.item(0), 'show'); + this.renderer.removeClass(sidenavOverlay.item(0), 'd-block'); + this.renderer.addClass(sidenavOverlay.item(0), 'd-none'); + this.renderer.removeClass(toggleIcon, 'show'); + } + if ((toggle || sidenavOverlay) && this.router.url === '/email' && event.target.innerWidth > 767) { + this.renderer.removeClass(toggle.item(0), 'show'); + this.renderer.removeClass(emailMenu.item(0), 'show'); + this.renderer.removeClass(sidenavOverlay.item(0), 'd-block'); + this.renderer.addClass(sidenavOverlay.item(0), 'd-none'); + } + } + + rightbar(event) { + const toggle = document.getElementById('sidenav-overlay'); + if (event.currentTarget.className === 'sidenav-overlay d-block') { + this.renderer.removeClass(toggle, 'd-block'); + this.document.body.classList.remove('menu-open'); + this.document.body.classList.add('menu-close'); + this.renderer.addClass(toggle, 'd-none'); + } else if (event.currentTarget.className === 'sidenav-overlay d-none') { + this.renderer.removeClass(toggle, 'd-none'); + this.document.body.classList.remove('menu-close'); + this.document.body.classList.add('menu-open'); + this.renderer.addClass(toggle, 'd-block'); + } + } + +} diff --git a/src/app/_layout/public-layout/public-layout.component.css b/src/app/_layout/public-layout/public-layout.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/_layout/public-layout/public-layout.component.html b/src/app/_layout/public-layout/public-layout.component.html new file mode 100644 index 0000000..d6d3f77 --- /dev/null +++ b/src/app/_layout/public-layout/public-layout.component.html @@ -0,0 +1,2 @@ + +
diff --git a/src/app/_layout/public-layout/public-layout.component.spec.ts b/src/app/_layout/public-layout/public-layout.component.spec.ts new file mode 100644 index 0000000..63355f2 --- /dev/null +++ b/src/app/_layout/public-layout/public-layout.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PublicLayoutComponent } from './public-layout.component'; + +describe('PublicLayoutComponent', () => { + let component: PublicLayoutComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PublicLayoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PublicLayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/_layout/public-layout/public-layout.component.ts b/src/app/_layout/public-layout/public-layout.component.ts new file mode 100644 index 0000000..ea0ce9a --- /dev/null +++ b/src/app/_layout/public-layout/public-layout.component.ts @@ -0,0 +1,50 @@ +import { Component, OnInit, Renderer2, Inject } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { Router, NavigationStart, NavigationEnd, Event, NavigationError } from '@angular/router'; +@Component({ + selector: 'app-public-layout', + templateUrl: './public-layout.component.html', + styleUrls: ['./public-layout.component.css'] +}) +export class PublicLayoutComponent implements OnInit { + + constructor(private renderer: Renderer2, + private router: Router, + @Inject(DOCUMENT) private document: Document) {} + ngOnInit() { + this.setBodyClass(); + } + + rightbar(event) { + const toggle = document.getElementById('sidenav-overlay'); + if (event.currentTarget.className === 'sidenav-overlay d-block') { + this.renderer.removeClass(toggle, 'd-block'); + this.document.body.classList.remove('menu-open'); + this.document.body.classList.add('menu-close'); + this.renderer.addClass(toggle, 'd-none'); + } else if (event.currentTarget.className === 'sidenav-overlay d-none') { + this.renderer.removeClass(toggle, 'd-none'); + this.document.body.classList.remove('menu-close'); + this.document.body.classList.add('menu-open'); + this.renderer.addClass(toggle, 'd-block'); + } + } + + setBodyClass() { + const previosBodyClassList = [].slice.call(document.body.classList); + const self = this; + previosBodyClassList.forEach(function (c) { + self.renderer.removeClass(document.body, c); + }); + const currentBodyClassList = ['vertical-layout', 'bg-full-screen-image', 'vertical-overlay-menu', + '2-columns', 'pace-done', 'menu-close', 'fixed-navbar']; + currentBodyClassList.forEach(function (c) { + self.renderer.addClass(document.body, c); + }); + // if (this.router.url === '/login' || (this.router.url === '')) { + // this.renderer.removeClass(document.body, 'fixed-navbar'); + // } else { + // this.renderer.addClass(document.body, 'fixed-navbar'); + // } + } +} diff --git a/src/app/_layout/settings/menu-settings.config.ts b/src/app/_layout/settings/menu-settings.config.ts new file mode 100644 index 0000000..7250db3 --- /dev/null +++ b/src/app/_layout/settings/menu-settings.config.ts @@ -0,0 +1,1620 @@ +// Default menu settings configurations + +export interface MenuItem { + title: string; + icon: string; + page: string; + isExternalLink?: boolean; + issupportExternalLink?: boolean; + isStarterkitExternalLink?: boolean; + badge: { type: string, value: string }; + submenu: { + items: Partial[]; + }; + section: string; +} + +export interface MenuConfig { + horizontal_menu: { + items: Partial[] + }; + vertical_menu: { + items: Partial[] + }; +} + +export const MenuSettingsConfig: MenuConfig = { + horizontal_menu: { + items: [ + { + title: 'Dashboard', + icon: 'la-home', + page: 'null', + badge: { type: 'badge-info', value: '3' }, + submenu: { + items: [ + { + title: 'Sales', + icon: 'la-dollar', + page: '/dashboard/sales' + }, + { + title: 'Ecommerce', + icon: 'la-cart-plus', + page: '/dashboard/ecommerce' + }, + { + title: 'Hospital', + icon: 'la-h-square', + page: '/dashboard/hospital' + } + ] + } + }, + // { + // title: 'Templates', + // icon: 'la-television', + // page: 'null', + // submenu: { + // items: [ + // { + // title: 'Horizontal', + // page: 'null' + // }, + // { + // title: 'Vertical', + // page: 'null' + // }, + // ] + // } + // }, + { + title: 'APPS', + icon: 'la-mobile', + page: 'null', + submenu: { + items: [ + + { + title: 'To Do', + icon: 'la-edit', + page: '/todo-app' + }, + { + title: 'Contacts', + icon: 'la-users', + page: '/contacts' + }, + { + title: 'Email Application', + icon: 'la-envelope', + page: '/email' + }, + { + title: 'Chat Application', + icon: 'la-comments', + page: '/chats' + }, + { + title: 'Calenders', + icon: 'la-calendar', + page: 'null', + submenu: { + items: [ + { + title: 'Basic', + page: '/calender/basic' + }, + { + title: 'Events', + page: '/calender/events' + }, + + { + title: 'Add Event', + page: '/calender/addevent' + }, + ] + } + }, + { + title: 'KanBan', + icon: 'la-comments', + page: '/kanban' + }, + ] + } + }, + { + title: 'Pages', + icon: 'la-file-text', + page: 'null', + submenu: { + items: [ + { + title: 'News Feed', + icon: 'la-newspaper-o', + page: '/news-feed/news-feed' + }, + { + title: 'Social Feed', + icon: 'la-share-alt', + page: '/social-feed/social-feed' + }, + { + title: 'Invoice', + icon: 'la-clipboard', + page: 'null', + submenu: { + items: [ + { + title: 'Invoice Summary', + page: '/invoice/invoice-summary', + }, + { + title: 'Invoice Template', + page: '/invoice/invoice-template', + }, + { + title: 'Invoice List', + page: '/invoice/invoice-list', + }, + ] + } + }, + { + title: 'Timelines', + icon: 'la-film', + page: 'null', + submenu: { + items: [ + { + title: 'Timelines Center', + page: '/timelines/timelines-center', + }, + { + title: 'Timelines Left ', + page: '/timelines/timelines-left', + }, + { + title: 'Timelines Right ', + page: '/timelines/timelines-right', + }, + { + title: 'Timelines Horizontal', + page: '/timelines/timelines-horizontal', + } + ] + } + }, + { + title: 'User', + icon: 'la-user', + page: 'null', + submenu: { + items: [ + { + title: 'User Profile', + page: '/user/user-profile', + }, + { + title: 'User Cards', + page: '/user/user-cards', + }, + ] + } + }, + { + title: 'File Uploader', + icon: 'la la-cloud-upload', + page: 'null', + submenu: { + items: [ + { + title: 'Dropzone', + page: '/dropzone/dropzone', + } + ] + } + }, + { + title: 'Gallery', + icon: 'la-image', + page: 'null', + submenu: { + items: [ + { + title: 'Gallery Grid', + page: '/gallery/gallery-grid', + }, + { + title: 'Gallery Grid with Desc', + page: '/gallery/gallery-grid-desc', + }, + { + title: 'Masonry Gallery', + page: '/gallery/masonry-gallery', + }, + { + title: 'Hover Effect', + page: '/gallery/hover-effect', + }, + ] + } + }, + { + title: 'Authentication', + icon: 'la-unlock', + page: 'null', + submenu: { + items: [ + { + title: 'Login Simple', + page: '/authentication/loginSimple', + }, + { + title: 'Login With Bg', + page: '/authentication/loginWithBg', + }, + { + title: 'Login With Bg Image', + page: '/authentication/loginWithBgImage', + }, + { + title: 'Login With Navbar', + page: '/authentication/loginWithNavbar', + }, + { + title: 'Login Advanced', + page: '/authentication/loginAdvanced', + }, + { + title: 'Register Simple', + page: '/authentication/registerSimple', + }, + { + title: 'Register With Bg', + page: '/authentication/registerWithBg', + }, + { + title: 'Register With Bg Image', + page: '/authentication/registerWithBgImage', + }, + { + title: 'Register With Navbar', + page: '/authentication/registerWithNavbar', + }, + { + title: 'Register Advanced', + page: '/authentication/registerAdvanced', + }, + { + title: 'Unlock User', + page: '/authentication/unlockUser', + }, + { + title: 'recover-password', + page: '/authentication/recoverPassword', + }, + ] + } + }, + { + title: 'Error', + icon: 'la-warning', + page: 'null', + submenu: { + items: [ + { + title: 'Error 400', + page: '/error/error400', + }, + { + title: 'Error 400 with Navbar', + page: '/error/error400WithNavbar', + }, + { + title: 'Error 401', + page: '/error/error401', + }, + { + title: 'Error 401 with Navbar', + page: '/error/error401WithNavbar', + }, + { + title: 'Error 403', + page: '/error/error403', + }, + { + title: 'Error 403 with Navbar', + page: '/error/error403WithNavbar', + }, + { + title: 'Error 404', + page: '/error/error404', + }, + { + title: 'Error 404 with Navbar', + page: '/error/error404WithNavbar', + }, + { + title: 'Error 500', + page: '/error/error500', + }, + { + title: 'Error 500 with Navbar', + page: '/error/error500WithNavbar', + }, + ] + } + }, + { + title: 'Search', + icon: 'la-search', + page: 'null', + submenu: { + items: [ + { + title: 'Search Page', + page: '/others/searchPage', + }, + { + title: 'Search Website', + page: '/search/searchWebsite', + }, + { + title: 'Search Images', + page: '/search/searchImages', + }, + { + title: 'Search Videos', + page: '/search/searchVideos', + }, + ] + } + }, + { + title: 'Others', + icon: 'la-file-text', + page: 'null', + submenu: { + items: [ + { + title: 'Coming Soon', + page: 'null', + submenu: { + items: [ + { + title: 'Flat', + page: '/others/flat' + }, + { + title: 'Bg image', + page: '/others/bgImage' + }, + // { + // title: 'Bg video', + // page: '/others/bgVideo' + // }, + ] + } + }, + { + title: 'Maintenance', + page: '/others/maintenance' + }, + ] + } + }, + ] + } + }, + { + title: ' UI', + icon: 'la-pencil', + page: 'null', + submenu: { + items: [ + { + title: 'Components', + icon: 'la-server', + page: 'null', + submenu: { + items: [ + { + title: 'Alerts', + page: '/components/alerts' + }, + { + title: 'Callout', + page: '/components/callout' + }, + { + title: 'Buttons', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Buttons', + page: '/components/basic-buttons' + }, + { + title: 'Extended Buttons', + page: '/components/extended-buttons' + } + ] + } + }, + { + title: 'Tooltips', + page: '/components/tooltips' + }, + { + title: 'Dropdowns', + page: '/components/dropdowns' + }, + { + title: 'List Group', + page: '/components/list-group' + }, + { + title: 'Popovers', + page: '/components/popovers' + }, + { + title: 'Carousel', + page: '/components/carousel' + }, + { + title: 'Collapse', + page: '/components/collapse' + }, + { + title: 'Modals', + page: '/components/modals' + }, + { + title: 'Progress', + page: '/components/progress' + }, + { + title: 'Pill Badges', + page: '/components/pill-badges' + }, + { + title: 'Scrollable', + page: '/components/scrollable' + }, + { + title: 'Navs Component', + page: '/components/navs' + }, + { + title: 'Badges', + page: '/components/badges' + }, + { + title: 'Media Objects', + page: '/components/mediaobjects' + }, + { + title: 'Spinners', + page: '/components/spinners' + }, + { + title: 'Pagination', + page: '/components/pagination' + }, + { + title: 'Pills Component', + page: '/components/pills' + } + ] + } + }, + { + title: 'Cards', + icon: 'la-tablet', + page: 'null', + submenu: { + items: [ + { + title: 'Bootstrap', + page: '/cards/bootstrap' + } + ] + } + }, + { + title: 'Advance Cards', + icon: 'la-fire', + page: 'null', + submenu: { + items: [ + { + title: 'Statistics', + page: '/advanceCards/statistics' + }, + { + title: 'Social', + page: '/advanceCards/social' + }, + { + title: 'Charts', + page: '/advanceCards/charts' + }, + ] + } + }, + { + title: 'Extra Components', + icon: 'la-diamond', + page: 'null', + submenu: { + items: [ + { + title: 'Date Time Picker', + page: '/extraComponents/dateTimePicker' + }, + { + title: 'TypeAhead', + page: '/extraComponents/typeAhead' + }, + { + title: 'Text Editer', + page: '/extraComponents/text-editor' + } + ] + } + }, + { + title: 'Icons', + + icon: 'la-eye', + page: 'null', + submenu: { + items: [ + { + title: 'Feather', + page: '/icons/feather' + }, + { + title: 'Line Awesome', + page: '/icons/line-awesome' + }, + { + title: 'Meteocons', + page: '/icons/meteocons' + }, + { + title: 'Simple Line Icons', + page: '/icons/simple-line-icons' + } + ] + } + }, + ] + } + }, + { section: 'Forms', icon: 'la-ellipsis-h' }, + { + title: 'Form ', + + icon: 'la-th-list', + page: 'null', + submenu: { + items: [ + { + title: 'Form Elements', + + icon: 'la-terminal', + page: 'null', + submenu: { + items: [ + { + title: 'Form Inputs', + page: '/form-elements/form-inputs' + }, + { + title: 'Input Groups', + page: '/form-elements/input-groups' + }, + { + title: 'Input Grid', + page: '/form-elements/input-grid' + }, + { + title: 'Checkboxes & Radios', + page: '/form-elements/checkboxes-radios' + }, + { + title: 'Switch', + page: '/form-elements/switch' + }, + { + title: 'Select', + page: '/form-elements/select' + }, + { + title: 'Extended Inputs', + page: '/form-elements/extendedinputs' + }, + ] + } + }, + { + title: 'Form Layouts', + + icon: 'la-file-text', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Forms', + page: '/form-layouts/basic-forms' + }, + { + title: 'Horizontal Forms', + page: '/form-layouts/horizontal-forms' + }, + { + title: 'Hidden Labels', + page: '/form-layouts/hidden-labels' + }, + { + title: 'Form Actions', + page: '/form-layouts/form-actions' + }, + { + title: 'Row Separator', + page: '/form-layouts/row-separator' + }, + { + title: 'Bordered', + page: '/form-layouts/bordered' + }, + { + title: 'Striped Rows', + page: '/form-layouts/striped-rows' + }, + { + title: 'Striped Labels', + page: '/form-layouts/striped-labels' + }, + ] + } + }, + { + title: 'Form Wizard', + + icon: 'la-paste', + page: '/form-wizard', + }, + { + title: 'Form Repeater', + + icon: 'la-repeat', + page: '/form-repeater' + } + ] + } + }, + { section: 'Charts', icon: 'la-ellipsis-h' }, + { + title: 'Charts', + + icon: 'la-line-chart', + page: 'null', + submenu: { + items: [ + { + title: 'ChartJs', + icon: 'la-area-chart', + page: '/chartjs/charts' + }, + { + title: 'Chartist', + icon: 'la-pie-chart', + page: '/ngchartist/linecharts' + } + ] + } + }, + { section: 'Table', icon: 'la-ellipsis-h' }, + { + title: 'Tables', + + icon: 'la-table', + page: 'null', + submenu: { + items: [ + { + title: 'Boostrap Tables', + + icon: 'la-table', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Table', + page: '/boostraptables/basictable' + }, + { + title: 'Table Border', + page: '/boostraptables/tableborder' + }, + { + title: 'Table Sizing', + page: '/boostraptables/tablesizing' + }, + { + title: 'Table Styling', + page: '/boostraptables/tablestyling' + }, + { + title: 'Table Components', + page: '/boostraptables/tablecomponents' + }, + { + title: 'Ngx BoostrapTables', + page: '/boostraptables/ngxboostraptables' + }, + ] + } + }, + { + title: 'Data Tables', + + icon: 'la-th', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Installation', + page: '/datatables/basicinitialisation' + + }, + { + title: 'Styling', + page: '/datatables/styling' + }, + { + title: 'API', + page: '/datatables/api' + + }, + ] + } + }, + { + title: 'DataTables Ext', + + icon: 'la-th-large', + page: 'null', + submenu: { + items: [ + { + title: 'Buttons', + page: '/datatablesext/buttons' + + }, + { + title: 'HTML5 Data Export', + page: '/datatablesext/html5dataexport' + + }, + { + title: 'Hidden On load', + page: '/datatablesext/hiddentable' + + }, + ] + } + } + ] + } + }, + { section: 'SUPPORT', icon: 'la-ellipsis-h' }, + { + title: 'Support', + + icon: 'la-support', + page: 'null', + submenu: { + items: [ + { + title: 'Starter Kit', + icon: 'la-puzzle-piece', + page: 'https://modern-admin-8453e.firebaseapp.com/changelog', + isExternalLink: true + }, + { + title: 'Changelog', + icon: 'la-file', + page: '/changelog', + badge: { type: 'badge-danger', value: '3.5' }, + }, + { + title: 'Raise Support', + icon: 'la-support', + page: 'https://pixinvent.ticksy.com/', + isExternalLink: true + }, + { + title: 'Documentaion', + icon: 'la-text-height', + page: 'https://modern-admin-docs.web.app/html/ltr/documentation/index.html', + isExternalLink: true, + } + ] + } + } + ] + }, + vertical_menu: { + items: [ + { + title: 'Dashboard', + icon: 'la-home', + page: 'null', + badge: { type: 'badge-info', value: '3' }, + submenu: { + items: [ + { + title: 'Sales', + page: '/dashboard/sales' + }, + { + title: 'Ecommerce', + page: '/dashboard/ecommerce' + }, + { + title: 'Hospital', + page: '/dashboard/hospital' + } + ] + } + }, + { + title: 'Templates', + icon: 'la-television', + page: 'null', + submenu: { + items: [ + { + title: 'Horizontal', + page: 'null' + }, + { + title: 'Vertical', + page: 'null' + }, + ] + } + }, + { section: 'APPS', icon: 'la-ellipsis-h' }, + + { + title: 'To Do', + icon: 'la-edit', + page: '/todo-app' + }, + { + title: 'Contacts', + icon: 'la-users', + page: '/contacts' + }, + { + title: 'Email Application', + icon: 'la-envelope', + page: '/email' + }, + { + title: 'Chat Application', + icon: 'la-comments', + page: '/chats' + }, + { + title: 'Calenders', + icon: 'la-calendar', + page: 'null', + submenu: { + items: [ + { + title: 'Basic', + page: '/calender/basic' + }, + { + title: 'Events', + page: '/calender/events' + }, + + { + title: 'Addevent', + page: '/calender/addevent' + }, + ] + } + }, + { + title: 'KanBan', + icon: 'la-comments', + page: '/kanban' + }, + { section: 'PAGES', icon: 'la-ellipsis-h' }, + { + title: 'News Feed', + icon: 'la-newspaper-o', + page: '/news-feed/news-feed' + }, + { + title: 'Social Feed', + icon: 'la-share-alt', + page: '/social-feed/social-feed' + }, + { + title: 'Invoice', + icon: 'la-clipboard', + page: 'null', + submenu: { + items: [ + { + title: 'Invoice Summary', + page: '/invoice/invoice-summary', + }, + { + title: 'Invoice Template', + page: '/invoice/invoice-template', + }, + { + title: 'Invoice List', + page: '/invoice/invoice-list', + }, + ] + } + }, + { + title: 'Timelines', + icon: 'la-film', + page: 'null', + submenu: { + items: [ + { + title: 'Timelines Center', + page: '/timelines/timelines-center', + }, + { + title: 'Timelines Left ', + page: '/timelines/timelines-left', + }, + { + title: 'Timelines Right ', + page: '/timelines/timelines-right', + }, + { + title: 'Timelines Horizontal', + page: '/timelines/timelines-horizontal', + } + ] + } + }, + { + title: 'User', + icon: 'la-user', + page: 'null', + submenu: { + items: [ + { + title: 'User Profile', + page: '/user/user-profile', + }, + { + title: 'User Cards', + page: '/user/user-cards', + }, + ] + } + }, + { + title: 'Gallery', + icon: 'la-image', + page: 'null', + submenu: { + items: [ + { + title: 'Gallery Grid', + page: '/gallery/gallery-grid', + }, + { + title: 'Gallery Grid with Desc', + page: '/gallery/gallery-grid-desc', + }, + { + title: 'Masonry Gallery', + page: '/gallery/masonry-gallery', + }, + { + title: 'Hover Effect', + page: '/gallery/hover-effect', + }, + ] + } + }, + { + title: 'File Uploader', + icon: 'la la-cloud-upload', + page: 'null', + submenu: { + items: [ + { + title: 'Dropzone', + page: '/dropzone/dropzone', + } + ] + } + }, + { + title: 'Search', + icon: 'la-search', + page: 'null', + submenu: { + items: [ + { + title: 'Search Page', + page: '/others/searchPage', + }, + { + title: 'Search Website', + page: '/search/searchWebsite', + }, + { + title: 'Search Images', + page: '/search/searchImages', + }, + { + title: 'Search Videos', + page: '/search/searchVideos', + }, + ] + } + }, + { + title: 'Authentication', + icon: 'la-unlock', + page: 'null', + submenu: { + items: [ + { + title: 'Login Simple', + page: '/authentication/loginSimple', + }, + { + title: 'Login With Bg', + page: '/authentication/loginWithBg', + }, + { + title: 'Login With Bg Image', + page: '/authentication/loginWithBgImage', + }, + { + title: 'Login With Navbar', + page: '/authentication/loginWithNavbar', + }, + { + title: 'Login Advanced', + page: '/authentication/loginAdvanced', + }, + { + title: 'Register Simple', + page: '/authentication/registerSimple', + }, + { + title: 'Register With Bg', + page: '/authentication/registerWithBg', + }, + { + title: 'Register With Bg Image', + page: '/authentication/registerWithBgImage', + }, + { + title: 'Register With Navbar', + page: '/authentication/registerWithNavbar', + }, + { + title: 'Register Advanced', + page: '/authentication/registerAdvanced', + }, + { + title: 'Unlock User', + page: '/authentication/unlockUser', + }, + { + title: 'recover-password', + page: '/authentication/recoverPassword', + }, + ] + } + }, + { + title: 'Error', + icon: 'la-warning', + page: 'null', + submenu: { + items: [ + { + title: 'Error 400', + page: '/error/error400', + }, + { + title: 'Error 400 with Navbar', + page: '/error/error400WithNavbar', + }, + { + title: 'Error 401', + page: '/error/error401', + }, + { + title: 'Error 401 with Navbar', + page: '/error/error401WithNavbar', + }, + { + title: 'Error 403', + page: '/error/error403', + }, + { + title: 'Error 403 with Navbar', + page: '/error/error403WithNavbar', + }, + { + title: 'Error 404', + page: '/error/error404', + }, + { + title: 'Error 404 with Navbar', + page: '/error/error404WithNavbar', + }, + { + title: 'Error 500', + page: '/error/error500', + }, + { + title: 'Error 500 with Navbar', + page: '/error/error500WithNavbar', + }, + ] + } + }, + { + title: 'Others', + icon: 'la-file-text', + page: 'null', + submenu: { + items: [ + { + title: 'Coming Soon', + page: 'null', + submenu: { + items: [ + { + title: 'Flat', + page: '/others/flat' + }, + { + title: 'Bg image', + page: '/others/bgImage' + }, + // { + // title: 'Bg video', + // page: '/others/bgVideo' + // }, + ] + } + }, + { + title: 'Maintenance', + page: '/others/maintenance' + }, + ] + } + }, + { section: 'USER INTERFACE', icon: 'la-ellipsis-h' }, + { + title: 'Cards', + page: '/cards/bootstrap', + icon: 'la-tablet' + }, + { + title: 'Advance Cards', + icon: 'la-fire', + page: 'null', + submenu: { + items: [ + { + title: 'Statistics', + page: '/advanceCards/statistics' + }, + { + title: 'Social', + page: '/advanceCards/social' + }, + { + title: 'Charts', + page: '/advanceCards/charts' + }, + ] + } + }, + { + title: 'Components', + icon: 'la-server', + page: 'null', + submenu: { + items: [ + { + title: 'Alerts', + page: '/components/alerts' + }, + { + title: 'Callout', + page: '/components/callout' + }, + { + title: 'Buttons', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Buttons', + page: '/components/basic-buttons' + }, + { + title: 'Extended Buttons', + page: '/components/extended-buttons' + } + ] + } + }, + { + title: 'Carousel', + page: '/components/carousel' + }, + { + title: 'Collapse', + page: '/components/collapse' + }, + { + title: 'Dropdowns', + page: '/components/dropdowns' + }, + { + title: 'List Group', + page: '/components/list-group' + }, + { + title: 'Modals', + page: '/components/modals' + }, + { + title: 'Pagination', + page: '/components/pagination' + }, + { + title: 'Navs Component', + page: '/components/navs' + }, + { + title: 'Pills Component', + page: '/components/pills' + }, + { + title: 'Tooltips', + page: '/components/tooltips' + }, + { + title: 'Popovers', + page: '/components/popovers' + }, + { + title: 'Badges', + page: '/components/badges' + }, + { + title: 'Pill Badges', + page: '/components/pill-badges' + }, + { + title: 'Progress', + page: '/components/progress' + }, + { + title: 'Media Objects', + page: '/components/mediaobjects' + }, + { + title: 'Scrollable', + page: '/components/scrollable' + }, + { + title: 'Spinners', + page: '/components/spinners' + }, + ] + } + }, + { + title: 'Extra Components', + icon: 'la-diamond', + page: 'null', + submenu: { + items: [ + { + title: 'Date Time Picker', + page: '/extraComponents/dateTimePicker' + }, + { + title: 'TypeAhead', + page: '/extraComponents/typeAhead' + }, + { + title: 'Text Editer', + page: '/extraComponents/text-editor' + } + ] + } + }, + { + title: 'Icons', + + icon: 'la-eye', + page: 'null', + submenu: { + items: [ + { + title: 'Feather', + page: '/icons/feather' + }, + { + title: 'Line Awesome', + page: '/icons/line-awesome' + }, + { + title: 'Meteocons', + page: '/icons/meteocons' + }, + { + title: 'Simple Line Icons', + page: '/icons/simple-line-icons' + } + ] + } + }, + { section: 'FORMS', icon: 'la-ellipsis-h' }, + { + title: 'Form Elements', + + icon: 'la-terminal', + page: 'null', + submenu: { + items: [ + { + title: 'Form Inputs', + page: '/form-elements/form-inputs' + }, + { + title: 'Input Groups', + page: '/form-elements/input-groups' + }, + { + title: 'Input Grid', + page: '/form-elements/input-grid' + }, + { + title: 'Checkboxes & Radios', + page: '/form-elements/checkboxes-radios' + }, + { + title: 'Switch', + page: '/form-elements/switch' + }, + { + title: 'Select', + page: '/form-elements/select' + }, + { + title: 'Extended Inputs', + page: '/form-elements/extendedinputs' + }, + ] + } + }, + { + title: 'Form Layouts', + + icon: 'la-file-text', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Forms', + page: '/form-layouts/basic-forms' + }, + { + title: 'Horizontal Forms', + page: '/form-layouts/horizontal-forms' + }, + { + title: 'Hidden Labels', + page: '/form-layouts/hidden-labels' + }, + { + title: 'Form Actions', + page: '/form-layouts/form-actions' + }, + { + title: 'Row Separator', + page: '/form-layouts/row-separator' + }, + { + title: 'Bordered', + page: '/form-layouts/bordered' + }, + { + title: 'Striped Rows', + page: '/form-layouts/striped-rows' + }, + { + title: 'Striped Labels', + page: '/form-layouts/striped-labels' + }, + ] + } + }, + { + title: 'Form Wizard', + + icon: 'la-paste', + page: '/form-wizard', + // submenu: { + // items: [ + // { + // title: 'Circle Style', + // page: '/form-wizard/circle-style' + // }, + // ] + // } + }, + { + title: 'Form Repeater', + + icon: 'la-repeat', + page: '/form-repeater' + }, + { section: 'TABLE', icon: 'la-ellipsis-h' }, + { + title: 'Boostrap Tables', + + icon: 'la-table', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Table', + page: '/boostraptables/basictable' + }, + { + title: 'Table Border', + page: '/boostraptables/tableborder' + }, + { + title: 'Table Sizing', + page: '/boostraptables/tablesizing' + }, + { + title: 'Table Styling', + page: '/boostraptables/tablestyling' + }, + { + title: 'Table Components', + page: '/boostraptables/tablecomponents' + }, + { + title: 'Ngx BoostrapTables', + page: '/boostraptables/ngxboostraptables' + }, + ] + } + }, + { + title: 'Data Tables', + + icon: 'la-th', + page: 'null', + submenu: { + items: [ + { + title: 'Basic Installation', + page: '/datatables/basicinitialisation' + + }, + { + title: 'Styling', + page: '/datatables/styling' + }, + { + title: 'API', + page: '/datatables/api' + + }, + ] + } + }, + { + title: 'DataTables Ext', + + icon: 'la-th-large', + page: 'null', + submenu: { + items: [ + { + title: 'Buttons', + page: '/datatablesext/buttons' + + }, + { + title: 'HTML5 Data Export', + page: '/datatablesext/html5dataexport' + + }, + { + title: 'Hidden On load', + page: '/datatablesext/hiddentable' + + }, + ] + } + }, + { section: 'CHARTS', icon: 'la-ellipsis-h' }, + { + title: 'Chartjs', + icon: 'la-bar-chart', + page: '/chartjs/charts', + }, + { + title: 'Chartist', + icon: 'la-pie-chart', + page: '/ngchartist/linecharts' + }, + { + title: 'Starter Kit', + icon: 'la-puzzle-piece', + page: 'https://modern-admin-8453e.firebaseapp.com/changelog', + isStarterkitExternalLink: true, + }, + { + title: 'Changelog', + icon: 'la-file', + page: '/changelog', + badge: { type: 'badge-danger', value: '3.5' } + }, + { section: 'SUPPORT', icon: 'la-ellipsis-h' }, + { + title: 'Raise Support', + icon: 'la-support', + page: 'https://pixinvent.ticksy.com/', + isExternalLink: true + }, + { + title: 'Documentaion', + icon: 'la-text-height', + page: 'https://modern-admin-docs.web.app/html/ltr/documentation/index.html', + isExternalLink: true, + } + ] + } + +}; + + + + + diff --git a/src/app/_layout/settings/menu-settings.service.ts b/src/app/_layout/settings/menu-settings.service.ts new file mode 100644 index 0000000..913e66f --- /dev/null +++ b/src/app/_layout/settings/menu-settings.service.ts @@ -0,0 +1,60 @@ +import { Injectable, InjectionToken, Inject } from '@angular/core'; +import { Router, RoutesRecognized } from '@angular/router'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import * as _ from 'lodash'; + +export const MENU_SETTINGS_CONFIG = new InjectionToken('menuCustomConfig'); + +@Injectable({ + providedIn: 'root' +}) +export class MenuSettingsService { + + private _configSubject: BehaviorSubject; + private readonly _defaultConfig: any; + + constructor(private _router: Router, @Inject(MENU_SETTINGS_CONFIG) private _config) { + // Set the default config from the user provided config (from forRoot) + this._defaultConfig = _config; + + // Initialize the service + this._init(); + } + + private _init(): void { + // Set the config from the default config + this._configSubject = new BehaviorSubject(_.cloneDeep(this._defaultConfig)); + + // Reload the default layout config on every RoutesRecognized event + // if the current layout config is different from the default one + this._router.events + .pipe(filter(event => event instanceof RoutesRecognized)) + .subscribe(() => { + if (!_.isEqual(this._configSubject.getValue().layout, this._defaultConfig.layout)) { + // Clone the current config + const config = _.cloneDeep(this._configSubject.getValue()); + + // Set the config + this._configSubject.next(config); + } + }); + } + + set config(value) { + // Get the value from the behavior subject + let config = this._configSubject.getValue(); + + // Merge the new config + config = _.merge({}, config, value); + + // Notify the observers + this._configSubject.next(config); + } + + get config(): any | Observable { + return this._configSubject.asObservable(); + } + +} diff --git a/src/app/_layout/settings/settings.module.ts b/src/app/_layout/settings/settings.module.ts new file mode 100644 index 0000000..d002a62 --- /dev/null +++ b/src/app/_layout/settings/settings.module.ts @@ -0,0 +1,28 @@ +import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; +import { THEME_SETTINGS_CONFIG } from './theme-settings.service'; +import { MENU_SETTINGS_CONFIG } from './menu-settings.service'; + +@NgModule() +export class SettingsModule { + constructor(@Optional() @SkipSelf() parentModule: SettingsModule) { + if (parentModule) { + throw new Error('SettingsModule is already loaded. Import it in the AppModule only!'); + } + } + + static forRoot(themeConfig, menuConfig): ModuleWithProviders { + return { + ngModule: SettingsModule, + providers: [ + { + provide: THEME_SETTINGS_CONFIG, + useValue: themeConfig + }, + { + provide: MENU_SETTINGS_CONFIG, + useValue: menuConfig + } + ] + }; + } +} diff --git a/src/app/_layout/settings/theme-settings.config.ts b/src/app/_layout/settings/theme-settings.config.ts new file mode 100644 index 0000000..03c010c --- /dev/null +++ b/src/app/_layout/settings/theme-settings.config.ts @@ -0,0 +1,33 @@ +// Default theme settings configurations + +export const ThemeSettingsConfig = { + colorTheme: 'semi-dark', // light, semi-light, semi-dark, dark + layout: { + style: 'vertical', // style: 'vertical', horizontal, + pattern: 'fixed' // fixed, boxed, static + }, + menuColor: 'menu-dark', // Vertical: [menu-dark, menu-light] , Horizontal: [navbar-dark, navbar-light] + navigation: 'menu-collapsible', // menu-collapsible, menu-accordation + menu: 'expand', // collapse, expand + header: 'fix', // fix, static + footer: 'static', // fix, static + customizer: 'on', // on,off + buybutton: 'on', // on, off + headerIcons: { + maximize: 'on', // on, off + search: 'on', // on, off + internationalization: 'on', // on, off + notification: 'on', // on, off + email: 'on' // on, off + }, + brand: { + brand_name: 'Modern ', + logo: { + type: 'internal', // internal, url + value: 'assets/custom/images/logo.png' // recommended location for custom images + // type:'url', + // value:'http://evolvision.com/wp-content/uploads/2018/01/envelope4-green.png' + }, + }, + defaultTitleSuffix: 'Modern Admin - Angular 11+ Bootstrap 5 Admin Dashboard Template' +}; diff --git a/src/app/_layout/settings/theme-settings.service.ts b/src/app/_layout/settings/theme-settings.service.ts new file mode 100644 index 0000000..2780a77 --- /dev/null +++ b/src/app/_layout/settings/theme-settings.service.ts @@ -0,0 +1,63 @@ +import { Injectable, InjectionToken, Inject } from '@angular/core'; +import { Router, RoutesRecognized } from '@angular/router'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import * as _ from 'lodash'; + +export const THEME_SETTINGS_CONFIG = new InjectionToken('themeCustomConfig'); + +@Injectable({ + providedIn: 'root' +}) +export class ThemeSettingsService { + // Private + private _configSubject: BehaviorSubject; + private readonly _defaultConfig: any; + + constructor(private _router: Router, @Inject(THEME_SETTINGS_CONFIG) private _config) { + // Set the default config from the user provided config (from forRoot) + this._defaultConfig = _config; + + // Initialize the service + this._init(); + } + + private _init(): void { + // Set the config from the default config + this._configSubject = new BehaviorSubject(_.cloneDeep(this._defaultConfig)); + + // Reload the default layout config on every RoutesRecognized event + // if the current layout config is different from the default one + this._router.events + .pipe(filter(event => event instanceof RoutesRecognized)) + .subscribe(() => { + if (!_.isEqual(this._configSubject.getValue().layout, this._defaultConfig.layout)) { + // Clone the current config + const config = _.cloneDeep(this._configSubject.getValue()); + + // Reset the layout from the default config + // config.layout = _.cloneDeep(this._defaultConfig.layout); + + // Set the config + this._configSubject.next(config); + } + }); + } + + set config(value) { + // Get the value from the behavior subject + let config = this._configSubject.getValue(); + + // Merge the new config + config = _.merge({}, config, value); + + // Notify the observers + this._configSubject.next(config); + } + + get config(): any | Observable { + return this._configSubject.asObservable(); + } + +} diff --git a/src/app/_services/alert.service.ts b/src/app/_services/alert.service.ts new file mode 100644 index 0000000..7a98e25 --- /dev/null +++ b/src/app/_services/alert.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { Router, NavigationStart } from '@angular/router'; +import { Observable, Subject } from 'rxjs'; + +@Injectable() +export class AlertService { + private subject = new Subject(); + private keepAfterNavigationChange = false; + + constructor(private router: Router) { + // Clear alert message on route change + router.events.subscribe(event => { + if (event instanceof NavigationStart) { + if (this.keepAfterNavigationChange) { + // Only keep for a single location change + this.keepAfterNavigationChange = false; + } else { + // Clear alert + this.subject.next({}); + } + } + }); + } + + success(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: 'success', text: message }); + } + + error(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: 'error', text: message }); + } + + getMessage(): Observable { + return this.subject.asObservable(); + } +} diff --git a/src/app/_services/application-api.service.spec.ts b/src/app/_services/application-api.service.spec.ts new file mode 100644 index 0000000..abd7f4e --- /dev/null +++ b/src/app/_services/application-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { ApplicationApiService } from './application-api.service'; + +describe('ApplicationApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ApplicationApiService = TestBed.get(ApplicationApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_services/application-api.service.ts b/src/app/_services/application-api.service.ts new file mode 100644 index 0000000..b1bd3c5 --- /dev/null +++ b/src/app/_services/application-api.service.ts @@ -0,0 +1,49 @@ +import { Injectable } from '@angular/core'; +import { Observable, of, throwError } from 'rxjs'; +import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http'; +const httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) +}; + +@Injectable({ + providedIn: 'root' +}) +export class ApplicationApiService { + apiBaseURL = 'assets/data'; + loadChatsDataURL = null; + loadEmailDataURL = null; + loadChatContactDataURL = null; + constructor(private http: HttpClient) { + this.loadChatsDataURL = `${this.apiBaseURL}/application/chats.json`; + this.loadChatContactDataURL = `${this.apiBaseURL}/application/chatcontact.json`; + this.loadEmailDataURL = `${this.apiBaseURL}/application/email.json`; + } + private handleError(error: HttpErrorResponse) { + if (error.error instanceof ErrorEvent) { + // Error + console.error('error:', error.error.message); + } else { + // Error + console.error( + `Api server returned ${error.status}, ` + + `error body: ${error.error}`); + } + // throwError is observable + return throwError('Error has happened'); + } + + private extractData(res: Response) { + const body = res; + return body || {}; + } + getChatsData(): Observable { + return this.http.get(this.loadChatsDataURL, httpOptions); + } + getChatContactData(): Observable { + return this.http.get(this.loadChatContactDataURL, httpOptions); + } + getEmailData(): Observable { + return this.http.get(this.loadEmailDataURL, httpOptions); + } +} + diff --git a/src/app/_services/auth.service.ts b/src/app/_services/auth.service.ts new file mode 100644 index 0000000..6c9d3da --- /dev/null +++ b/src/app/_services/auth.service.ts @@ -0,0 +1,120 @@ +import { Injectable } from '@angular/core'; +import { AngularFireAuth } from '@angular/fire/compat/auth'; +import firebase from 'firebase/compat/app'; + + +@Injectable() +export class AuthService { + constructor(public afAuth: AngularFireAuth) {} + + // Facebook login + doFacebookLogin() { + return new Promise((resolve, reject) => { + const provider = new firebase.auth.FacebookAuthProvider(); + this.afAuth.signInWithPopup(provider).then( + res => { + resolve(res); + }, + err => { + console.log(err); + reject(err); + } + ); + }); + } + + // Github login + doGitHubLogin() { + return new Promise((resolve, reject) => { + const provider = new firebase.auth.GithubAuthProvider(); + this.afAuth.signInWithPopup(provider).then( + res => { + resolve(res); + }, + err => { + console.log(err); + reject(err); + } + ); + }); + } + + // Twitter login + doTwitterLogin() { + return new Promise((resolve, reject) => { + const provider = new firebase.auth.TwitterAuthProvider(); + this.afAuth.signInWithPopup(provider).then( + res => { + resolve(res); + }, + err => { + console.log(err); + reject(err); + } + ); + }); + } + + // Google login + doGoogleLogin() { + return new Promise((resolve, reject) => { + const provider = new firebase.auth.GoogleAuthProvider(); + provider.addScope('profile'); + provider.addScope('email'); + this.afAuth.signInWithPopup(provider).then( + res => { + resolve(res); + }, + err => { + console.log(err); + reject(err); + } + ); + }); + } + + // Register + doRegister(value) { + return new Promise((resolve, reject) => { + firebase + .auth() + .createUserWithEmailAndPassword(value.email, value.password) + .then( + res => { + resolve(res); + }, + err => reject(err) + ); + }); + } + + // Login + doLogin(value) { + return new Promise((resolve, reject) => { + firebase + .auth() + .signInWithEmailAndPassword(value.email, value.password) + .then( + res => { + resolve(res); + }, + err => reject(err) + ); + }); + } + + // Logout + doLogout() { + return new Promise((resolve, reject) => { + if (firebase.auth().currentUser) { + localStorage.removeItem('currentUser'); + localStorage.removeItem('remember'); + this.afAuth.signOut(); + resolve(); + } else { + localStorage.removeItem('currentUser'); + resolve(); + } + }); + } +} diff --git a/src/app/_services/chart.api.ts b/src/app/_services/chart.api.ts new file mode 100644 index 0000000..1e7b212 --- /dev/null +++ b/src/app/_services/chart.api.ts @@ -0,0 +1,66 @@ +import { Injectable } from '@angular/core'; +import { Observable, of, throwError } from 'rxjs'; +import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http'; +import { catchError, tap, map } from 'rxjs/operators'; + +const httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) +}; + +@Injectable() +export class ChartApiService { + + apiBaseURL = 'assets/data'; + loadDataURL = null; + loadSalesDataURL = null; + loadEcommerceDataURL = null; + loadStatisticsDataURL = null; + loadTimelineDataURL = null; + loadInvoiceDataURL = null; + constructor(private http: HttpClient) { + this.loadDataURL = `${this.apiBaseURL}/chartist/charts/chartist.json`; + this.loadSalesDataURL = `${this.apiBaseURL}/dashboard/sales/chartist.json`; + this.loadEcommerceDataURL = `${this.apiBaseURL}/dashboard/ecommerce/chartist.json`; + this.loadStatisticsDataURL = `${this.apiBaseURL}/advancecard/statistics/chartist.json`; + this.loadStatisticsDataURL = `${this.apiBaseURL}/advancecard/statistics/chartist.json`; + this.loadTimelineDataURL = `${this.apiBaseURL}/user-profile/user-profile.json`; + this.loadInvoiceDataURL = `${this.apiBaseURL}/invoice-summary/invoice-summary.json`; + } + private handleError(error: HttpErrorResponse) { + if (error.error instanceof ErrorEvent) { + // Error + console.error('error:', error.error.message); + } else { + // Error + console.error( + `Api server returned ${error.status}, ` + + `error body: ${error.error}`); + } + // throwError is observable + return throwError('Error has happened'); + } + + private extractData(res: Response) { + const body = res; + return body || {}; + } + + getChartistData(): Observable { + return this.http.get(this.loadDataURL, httpOptions); + } + getSalesData(): Observable { + return this.http.get(this.loadSalesDataURL, httpOptions); + } + getEcommerceData(): Observable { + return this.http.get(this.loadEcommerceDataURL, httpOptions); + } + getStatisticsData(): Observable { + return this.http.get(this.loadStatisticsDataURL, httpOptions); + } + getTimelineData(): Observable { + return this.http.get(this.loadTimelineDataURL, httpOptions); + } + getInvoiceData(): Observable { + return this.http.get(this.loadInvoiceDataURL, httpOptions); + } +} diff --git a/src/app/_services/country.service.ts b/src/app/_services/country.service.ts new file mode 100644 index 0000000..82a7f79 --- /dev/null +++ b/src/app/_services/country.service.ts @@ -0,0 +1,105 @@ +import {Injectable, PipeTransform} from '@angular/core'; + +import {BehaviorSubject, Observable, of, Subject} from 'rxjs'; +import {COUNTRIES, Country} from '../content/table/boostraptables/ngxboostraptables/countries'; +import {DecimalPipe} from '@angular/common'; +import {debounceTime, delay, switchMap, tap} from 'rxjs/operators'; +import {SortDirection} from '../_directives/sortable.directive'; + +interface SearchResult { + countries: Country[]; + total: number; +} + +interface State { + page: number; + pageSize: number; + searchTerm: string; + sortColumn: string; + sortDirection: SortDirection; +} + +function compare(v1, v2) { + return v1 < v2 ? -1 : v1 > v2 ? 1 : 0; +} + +function sort(countries: Country[], column: string, direction: string): Country[] { + if (direction === '') { + return countries; + } else { + return [...countries].sort((a, b) => { + const res = compare(a[column], b[column]); + return direction === 'asc' ? res : -res; + }); + } +} + +function matches(country: Country, term: string, pipe: PipeTransform) { + return country.firstname.toLowerCase().includes(term.toLowerCase()) + || country.lastname.toLowerCase().includes(term.toLowerCase()) + || country.username.toLowerCase().includes(term.toLowerCase()); + } + +@Injectable({providedIn: 'root'}) +export class CountryService { + private _loading$ = new BehaviorSubject(true); + private _search$ = new Subject(); + private _countries$ = new BehaviorSubject([]); + private _total$ = new BehaviorSubject(0); + + private _state: State = { + page: 1, + pageSize: 4, + searchTerm: '', + sortColumn: '', + sortDirection: '' + }; + + constructor(private pipe: DecimalPipe) { + this._search$.pipe( + tap(() => this._loading$.next(true)), + debounceTime(200), + switchMap(() => this._search()), + delay(200), + tap(() => this._loading$.next(false)) + ).subscribe(result => { + this._countries$.next(result.countries); + this._total$.next(result.total); + }); + + this._search$.next(); + } + + get countries$() { return this._countries$.asObservable(); } + get total$() { return this._total$.asObservable(); } + get loading$() { return this._loading$.asObservable(); } + get page() { return this._state.page; } + get pageSize() { return this._state.pageSize; } + get searchTerm() { return this._state.searchTerm; } + + set page(page: number) { this._set({page}); } + set pageSize(pageSize: number) { this._set({pageSize}); } + set searchTerm(searchTerm: string) { this._set({searchTerm}); } + set sortColumn(sortColumn: string) { this._set({sortColumn}); } + set sortDirection(sortDirection: SortDirection) { this._set({sortDirection}); } + + private _set(patch: Partial) { + Object.assign(this._state, patch); + this._search$.next(); + } + + private _search(): Observable { + const {sortColumn, sortDirection, pageSize, page, searchTerm} = this._state; + + // 1. sort + let countries = sort(COUNTRIES, sortColumn, sortDirection); + + // 2. filter + countries = countries.filter(country => matches(country, searchTerm, this.pipe)); + const total = countries.length; + + // 3. paginate + countries = countries.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize); + return of({countries, total}); + } +} diff --git a/src/app/_services/device-detector.service.ts b/src/app/_services/device-detector.service.ts new file mode 100644 index 0000000..8ab4d4e --- /dev/null +++ b/src/app/_services/device-detector.service.ts @@ -0,0 +1,86 @@ +import { PLATFORM_ID, Inject , Injectable} from '@angular/core' +import { isPlatformBrowser } from '@angular/common' +import { DeviceInfo, DevicePlatform, DeviceOs, DeviceMobile, DeviceTablet } from './device-detector' + +@Injectable({ + providedIn: 'root' +}) + +export class DeviceDetectorService { + userAgent: string + + constructor(@Inject(PLATFORM_ID) private platformId) { + this.userAgent = isPlatformBrowser(this.platformId) ? window.navigator.userAgent.toLowerCase() : '' + } + + private find(match) { + return this.userAgent.indexOf(match) !== -1 + } + + private findMatch(type) { + return Object.entries(type).find(([key, val]) => !!val) || [] + } + + private deviceOS() { + const isWindows = this.find('windows') + const isIos = this.deviceShared()[DeviceMobile.Iphone] || this.deviceShared()[DeviceTablet.Ipad] + + return { + [DeviceOs.Windows]: isWindows, + [DeviceOs.Macos]: !isIos && this.find('mac'), + [DeviceOs.Android]: !isWindows && this.find('android'), + [DeviceOs.Ios]: isIos, + [DeviceOs.Blackberry]: this.find('blackberry') || this.find('bb10'), + [DeviceOs.Fxos]: (this.find('(mobile') || this.find('(tablet')) && this.find(' rv:') + } + } + + private deviceShared() { + return { + [DeviceMobile.Iphone]: !this.find('windows') && this.find('iphone'), + [DeviceTablet.Ipad]: this.find('ipad') || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1, + } + } + + private deviceMobile() { + return { + [DeviceMobile.Iphone]: this.deviceShared()[DeviceMobile.Iphone], + [DeviceMobile.AndroidPhone]: this.deviceOS()[DeviceOs.Android] && this.find('mobile'), + [DeviceMobile.WindowsPhone]: this.deviceOS()[DeviceOs.Windows] && this.find('phone'), + [DeviceMobile.BlackberryPhone]: this.deviceOS()[DeviceOs.Blackberry] && !this.find('tablet'), + [DeviceMobile.Meego]: this.find('meego'), + [DeviceMobile.FxosPhone]: this.deviceOS()[DeviceOs.Fxos] && this.find('mobile') + } + } + + private deviceTablet() { + return { + [DeviceTablet.Ipad]: this.deviceShared()[DeviceTablet.Ipad], + [DeviceTablet.AndroidTablet]: this.deviceOS()[DeviceOs.Android] && !this.find('mobile'), + [DeviceTablet.BlackberryTablet]: this.deviceOS()[DeviceOs.Blackberry] && this.find('tablet'), + [DeviceTablet.WindowsTablet]: this.deviceOS()[DeviceOs.Windows] && (this.find('touch') && !this.deviceMobile()[DeviceMobile.WindowsPhone]), + [DeviceTablet.FxosTablet]: this.deviceOS()[DeviceOs.Fxos] && this.find('tablet'), + } + } + + isMobile() { + return this.findMatch(this.deviceMobile()).length > 0 + } + + isTablet() { + return this.findMatch(this.deviceTablet()).length > 0 + } + + isDesktop() { + return !this.isTablet() && !this.isMobile() + } + + getDeviceInfo(): DeviceInfo { + const touchDevices = this.findMatch({ ...this.deviceMobile(), ...this.deviceTablet() }) + return { + platform: this.isDesktop() ? DevicePlatform.Desktop : (this.isMobile() ? DevicePlatform.Mobile : DevicePlatform.Tablet), + os: this.findMatch(this.deviceOS())[0], + device: touchDevices.length ? touchDevices[0] : DevicePlatform.Desktop + } + } +} diff --git a/src/app/_services/device-detector.ts b/src/app/_services/device-detector.ts new file mode 100644 index 0000000..74dd261 --- /dev/null +++ b/src/app/_services/device-detector.ts @@ -0,0 +1,38 @@ +export enum DevicePlatform { + Mobile = 'mobile', + Tablet = 'tablet', + Desktop = 'desktop' + } + + export enum DeviceOs { + Ios = 'ios', + Android = 'android', + Macos = 'macos', + Windows = 'windows', + Blackberry = 'blackberry', + Fxos = 'fxos' + } + + export enum DeviceMobile { + AndroidPhone = 'androidPhone', + Iphone = 'iphone', + WindowsPhone = 'windowsPhone', + BlackberryPhone = 'blackberryPhone', + Meego = 'meego', + FxosPhone = 'fxosPhone' + } + + export enum DeviceTablet { + Ipad = 'ipad', + AndroidTablet = 'androidTablet', + BlackberryTablet = 'blackberryTablet', + WindowsTablet = 'windowsTablet', + FxosTablet = 'fxosTablet' + } + + export interface DeviceInfo { + platform: DevicePlatform + os: DeviceOs | string + device: DeviceMobile | DeviceTablet | string + } + \ No newline at end of file diff --git a/src/app/_services/geocoding.service.ts b/src/app/_services/geocoding.service.ts new file mode 100644 index 0000000..ce9bf36 --- /dev/null +++ b/src/app/_services/geocoding.service.ts @@ -0,0 +1,56 @@ +import { Injectable } from '@angular/core'; +import { MapsAPILoader } from '@agm/core'; +import { from } from 'rxjs'; +import { tap, map, switchMap } from 'rxjs/operators'; +import { Observable, of } from 'rxjs'; +import { Location } from '../content/maps/services/services.component'; + +declare var google: any; + +@Injectable({ + providedIn: 'root' +}) +export class GeocodingService { + private geocoder: any; + + constructor(private mapLoader: MapsAPILoader) {} + + private initGeocoder() { + console.log('Init geocoder!'); + this.geocoder = new google.maps.Geocoder(); + } + + private waitForMapsToLoad(): Observable { + if (!this.geocoder) { + return from(this.mapLoader.load()).pipe( + tap(() => this.initGeocoder()), + map(() => true) + ); + } + return of(true); + } + + geocodeAddress(location: string): Observable { + console.log('Start geocoding!'); + return this.waitForMapsToLoad().pipe( + // filter(loaded => loaded), + switchMap(() => { + return new Observable(observer => { + this.geocoder.geocode({ address: location }, (results, status) => { + if (status === google.maps.GeocoderStatus.OK) { + console.log('Geocoding complete!'); + observer.next({ + lat: results[0].geometry.location.lat(), + lng: results[0].geometry.location.lng() + }); + } else { + console.log('Error - ', results, ' & Status - ', status); + observer.next({ lat: 0, lng: 0 }); + } + observer.complete(); + }); + }); + }) + ); + } +} diff --git a/src/app/_services/navbar.service.ts b/src/app/_services/navbar.service.ts new file mode 100644 index 0000000..2f7cbe1 --- /dev/null +++ b/src/app/_services/navbar.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from "@angular/core"; + +@Injectable() +export class NavbarService { + private mouseInMenuRegion = false; + private fixedMenu = false; + constructor() {} + + isMouseInRegion() { + return this.mouseInMenuRegion; + } + + setMouseInRegion(flag) { + this.mouseInMenuRegion = flag; + } + + isFixedMenu() { + return this.fixedMenu; + } + + setFixedMenu(flag) { + this.fixedMenu = flag; + } +} diff --git a/src/app/_services/ng-select-data.service.ts b/src/app/_services/ng-select-data.service.ts new file mode 100644 index 0000000..8b9f604 --- /dev/null +++ b/src/app/_services/ng-select-data.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import { Observable, of } from 'rxjs'; +import { delay } from 'rxjs/operators'; +import { HttpClient } from '@angular/common/http'; + +export interface City { + item_id: number; + item_text: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class NgSelectDataService { + + constructor(private http: HttpClient) { } + + getPeople(term: string = null): Observable { + let items = getMockCity(); + if (term) { + items = items.filter(x => x.item_text.toLocaleLowerCase().indexOf(term.toLocaleLowerCase()) > -1); + } + return of(items).pipe(delay(500)); + } +} + +function getMockCity() { + return [ + { item_id: 1, item_text: 'Alaska' }, + { item_id: 2, item_text: 'California' }, + { item_id: 3, item_text: 'Colorado' }, + { item_id: 4, item_text: 'New Mexico' }, + { item_id: 5, item_text: 'Alabama' }, + { item_id: 6, item_text: 'Connecticut' }, + { item_id: 7, item_text: 'New York' } + ]; +} diff --git a/src/app/_services/quill-initialize-service.service.spec.ts b/src/app/_services/quill-initialize-service.service.spec.ts new file mode 100644 index 0000000..9710c99 --- /dev/null +++ b/src/app/_services/quill-initialize-service.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { QuillInitializeServiceService } from './quill-initialize-service.service'; + +describe('QuillInitializeServiceService', () => { + let service: QuillInitializeServiceService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(QuillInitializeServiceService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_services/quill-initialize-service.service.ts b/src/app/_services/quill-initialize-service.service.ts new file mode 100644 index 0000000..24d6946 --- /dev/null +++ b/src/app/_services/quill-initialize-service.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import Quill from 'quill'; +import QuillAutoLink from '../content/applications/quill/quillAutolinks'; +@Injectable({ + providedIn: 'root' +}) +export class QuillInitializeServiceService { + + constructor() { + var Link = Quill.import('formats/link'); + Link.sanitize = (url) => { + if(url.indexOf("http") <= -1){ + url = "https://" + url; + } + return url; + } + Quill.register('modules/autoLink', QuillAutoLink); + } + +} \ No newline at end of file diff --git a/src/app/_services/table-api.service.spec.ts b/src/app/_services/table-api.service.spec.ts new file mode 100644 index 0000000..73bb295 --- /dev/null +++ b/src/app/_services/table-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { TableApiService } from './table-api.service'; + +describe('TableApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: TableApiService = TestBed.get(TableApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_services/table-api.service.ts b/src/app/_services/table-api.service.ts new file mode 100644 index 0000000..90c3ec5 --- /dev/null +++ b/src/app/_services/table-api.service.ts @@ -0,0 +1,99 @@ +import { Injectable } from '@angular/core'; +import { Observable, of, throwError } from 'rxjs'; +import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http'; +import { catchError, tap, map } from 'rxjs/operators'; + +const httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) +}; +@Injectable({ + providedIn: 'root' +}) +export class TableApiService { + + apiBaseURL = 'assets/data'; + loadEcommerceTableDataURL = null; + loadInvoiceTableDataURL = null; + loadBasicTableDataURL = null; + loadTableBorderDataURL = null; + loadTableStylingDataURL = null; + loadTableApiDataURL = null; + loadTableInitialisationDataURL = null; + loadStylingDataURL = null; + loadTableButtonDataURL = null; + loadTableExportDataURL = null; + loadTableHiddenDataURL = null; + loadTableNgxDataURL = null; + constructor(private http: HttpClient) { + this.loadEcommerceTableDataURL = `${this.apiBaseURL}/dashboard/ecommerce/datatable.json`; + this.loadInvoiceTableDataURL = `${this.apiBaseURL}/invoice/invoicelist/invoicetable.json`; + this.loadBasicTableDataURL = `${this.apiBaseURL}/boostraptable/basictable.json`; + this.loadTableBorderDataURL = `${this.apiBaseURL}/boostraptable/tableborder.json`; + this.loadTableStylingDataURL = `${this.apiBaseURL}/boostraptable/tablestyling.json`; + this.loadTableApiDataURL = `${this.apiBaseURL}/datatables/tableapi/tableapi.json`; + this.loadTableInitialisationDataURL = `${this.apiBaseURL}/datatables/tableinitialisation/tableinitialisation.json`; + this.loadStylingDataURL = `${this.apiBaseURL}/datatables/tablestyling/tablestyling.json`; + this.loadTableButtonDataURL = `${this.apiBaseURL}/datatables/buttons/tablebuttons.json`; + this.loadTableExportDataURL = `${this.apiBaseURL}/datatables/html5dataexport/html5dataexport.json`; + this.loadTableHiddenDataURL = `${this.apiBaseURL}/datatables/hiddentable/hiddentable.json`; + this.loadTableNgxDataURL = `${this.apiBaseURL}/boostraptable/ngxboostraptables.json`; + } + private handleError(error: HttpErrorResponse) { + if (error.error instanceof ErrorEvent) { + // Error + console.error('error:', error.error.message); + } else { + // Error + console.error( + `Api server returned ${error.status}, ` + + `error body: ${error.error}`); + } + // throwError is observable + return throwError('Error has happened'); + } + + private extractData(res: Response) { + const body = res; + return body || {}; + } + + + getEcommerceTableData(): Observable { + return this.http.get(this.loadEcommerceTableDataURL, httpOptions); + } + + getInvoiceTableData(): Observable { + return this.http.get(this.loadInvoiceTableDataURL, httpOptions); + } + getBasicTableData(): Observable { + return this.http.get(this.loadBasicTableDataURL, httpOptions); + } + getTableBorderData(): Observable { + return this.http.get(this.loadTableBorderDataURL, httpOptions); + } + getTableStylingData(): Observable { + return this.http.get(this.loadTableStylingDataURL, httpOptions); + } + getTableApiData(): Observable { + return this.http.get(this.loadTableApiDataURL, httpOptions); + } + getTableInitialisationData(): Observable { + return this.http.get(this.loadTableInitialisationDataURL, httpOptions); + } + getStylingData(): Observable { + return this.http.get(this.loadStylingDataURL, httpOptions); + } + getTableButtonData(): Observable { + return this.http.get(this.loadTableButtonDataURL, httpOptions); + } + getTableExportData(): Observable { + return this.http.get(this.loadTableExportDataURL, httpOptions); + } + getTableHiddenData(): Observable { + return this.http.get(this.loadTableHiddenDataURL, httpOptions); + } + getTableNgxData(): Observable { + return this.http.get(this.loadTableNgxDataURL, httpOptions); + } +} + diff --git a/src/app/_services/tableexcel.service.spec.ts b/src/app/_services/tableexcel.service.spec.ts new file mode 100644 index 0000000..cd2c413 --- /dev/null +++ b/src/app/_services/tableexcel.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { TableexcelService } from './tableexcel.service'; + +describe('TableexcelService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: TableexcelService = TestBed.get(TableexcelService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/_services/tableexcel.service.ts b/src/app/_services/tableexcel.service.ts new file mode 100644 index 0000000..12d0b93 --- /dev/null +++ b/src/app/_services/tableexcel.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import * as FileSaver from 'file-saver'; +import * as XLSX from 'xlsx'; + +const EXCEL_TYPE = + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'; +const EXCEL_EXTENSION = '.xlsx'; + +@Injectable({ + providedIn: 'root' +}) +export class TableexcelService { + constructor() { } + public exportAsExcelFile(json: any[], excelFileName: string): void { + const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json); + console.log('worksheet', worksheet); + const workbook: XLSX.WorkBook = { + Sheets: { data: worksheet }, + SheetNames: ['data'] + }; + const excelBuffer: any = XLSX.write(workbook, { + bookType: 'xlsx', + type: 'array' + }); + this.saveAsExcelFile(excelBuffer, excelFileName); + } + + private saveAsExcelFile(buffer: any, fileName: string): void { + const data: Blob = new Blob([buffer], { + type: EXCEL_TYPE + }); + FileSaver.saveAs( + data, + fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION + ); + } +} diff --git a/src/app/app.component.css b/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000..82ec659 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000..bf7665d --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,27 @@ +import { TestBed, waitForAsync } from '@angular/core/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', waitForAsync(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'modern-admin'`, waitForAsync(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('modern-admin'); + })); + it('should render title in a h1 tag', waitForAsync(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to modern-admin!'); + })); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..5f87147 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,145 @@ +import { Component, Inject, OnInit, Injectable } from '@angular/core'; +import { NgxSpinnerService } from 'ngx-spinner'; +import { LoadingBarService } from '@ngx-loading-bar/core'; +import { NavigationStart, RouteConfigLoadStart, RouteConfigLoadEnd, NavigationEnd, NavigationCancel } from '@angular/router'; +import { DeviceDetectorService } from './_services/device-detector.service'; +import { DOCUMENT } from '@angular/common'; +import { Router } from '@angular/router'; +import { AppConstants } from './_helpers/app.constants'; +import { MenuSettingsService } from './_layout/settings/menu-settings.service'; +import { ThemeSettingsService } from './_layout/settings/theme-settings.service'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { Title } from '@angular/platform-browser'; + +@Component({ + selector: 'app-main', + templateUrl: 'app.component.html', + styleUrls: ['./app.component.css'] +}) + +export class AppComponent implements OnInit { + public _menuSettingsConfig: any; + public _themeSettingsConfig: any; + public _unsubscribeAll: Subject; + private _unsubscribeAllMenu: Subject; + public showContent = false; + public title; + constructor(private spinner: NgxSpinnerService, + @Inject(DOCUMENT) private document: Document, + private router: Router, + public loader: LoadingBarService, + private deviceService: DeviceDetectorService, + public _menuSettingsService: MenuSettingsService, + public _themeSettingsService: ThemeSettingsService, + private titleService: Title + ) { + this._unsubscribeAll = new Subject(); + this._unsubscribeAllMenu = new Subject(); + this.setTitle(); + } + + ngOnInit() { + this._menuSettingsService.config + .pipe(takeUntil(this._unsubscribeAllMenu)) + .subscribe((config) => { + this._menuSettingsConfig = config; + }); + this._themeSettingsService.config + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe((config) => { + this._themeSettingsConfig = config; + }); + // page progress bar percentage + this.router.events.subscribe(event => { + if (event instanceof NavigationStart) { + // set page progress bar loading to start on NavigationStart event router + this.loader.start(); + } + if (event instanceof RouteConfigLoadStart) { + this.loader.increment(35); + } + if (event instanceof RouteConfigLoadEnd) { + this.loader.increment(75); + } + if (event instanceof NavigationEnd || event instanceof NavigationCancel) { + // set page progress bar loading to end on NavigationEnd event router + this.loader.complete(); + this.showContent = true; + // close menu for mobile view + if (this.deviceService.isMobile() || window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + if (document.body.classList.contains('menu-open')) { + document.body.classList.remove('menu-open'); + document.body.classList.add('menu-close'); + } + } + if (this.title && this.router.url !== '/') { + this.titleService.setTitle(this.title + ' - ' + this._themeSettingsConfig.defaultTitleSuffix); + } else { + if ((this.router.url === '/' || this.router.url === '/login' || this.router.url === '/register') && + !localStorage.getItem('remember')) { + this.title = 'Login with Background Image'; + this.titleService.setTitle(this.title + '' + this._themeSettingsConfig.defaultTitleSuffix); + this.title = ''; + } + } + } + }); + } + + setTitle() { + this.router.events.subscribe(event => { + if (event instanceof NavigationEnd) { + if (this._themeSettingsConfig.layout.style === 'vertical') { + for (let i = 0; i < this._menuSettingsConfig.vertical_menu.items.length; i++) { + if (!this._menuSettingsConfig.vertical_menu.items[i].submenu && + this._menuSettingsConfig.vertical_menu.items[i].page === this.router.url) { + this.title = this._menuSettingsConfig.vertical_menu.items[i].title; + break; + } else if (this._menuSettingsConfig.vertical_menu.items[i].submenu) { + // Level 1 menu + for (let j = 0; j < this._menuSettingsConfig.vertical_menu.items[i].submenu.items.length; j++) { + if (!this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu && + this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].page === this.router.url) { + this.title = this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].title; + break; + } else if (this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu) { + // Level 2 menu + for (let k = 0; k < this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items.length; k++) { + if (this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items[k].page === this.router.url) { + this.title = this._menuSettingsConfig.vertical_menu.items[i].submenu.items[j].submenu.items[k].title; + } + } + } + } + } + } + } else if (this._themeSettingsConfig.layout.style === 'horizontal') { + for (let i = 0; i < this._menuSettingsConfig.horizontal_menu.items.length; i++) { + if (!this._menuSettingsConfig.horizontal_menu.items[i].submenu && + this._menuSettingsConfig.horizontal_menu.items[i].page === this.router.url) { + this.title = this._menuSettingsConfig.horizontal_menu.items[i].title; + break; + } else if (this._menuSettingsConfig.horizontal_menu.items[i].submenu) { + // Level 1 menu + for (let j = 0; j < this._menuSettingsConfig.horizontal_menu.items[i].submenu.items.length; j++) { + if (!this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu && + this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].page === this.router.url) { + this.title = this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].title; + break; + } else if (this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu) { + // Level 2 menu + for (let k = 0; k < this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items.length; k++) { + if (this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items[k].page === this.router.url) { + this.title = this._menuSettingsConfig.horizontal_menu.items[i].submenu.items[j].submenu.items[k].title; + } + } + } + } + } + } + } + } + }); + } +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..d784384 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,143 @@ +import { NgModule } from '@angular/core'; +import { + BrowserModule, + HAMMER_GESTURE_CONFIG, + HammerGestureConfig +} from '@angular/platform-browser'; +import { ReactiveFormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; +import { + NgbModule, + NgbCarouselConfig, + NgbModalConfig +} from '@ng-bootstrap/ng-bootstrap'; +import { FormsModule } from '@angular/forms'; +import { AngularFireModule } from '@angular/fire/compat'; +import { AngularFirestoreModule } from '@angular/fire/compat/firestore'; +import { AngularFireAuthModule } from '@angular/fire/compat/auth'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { environment } from '../environments/environment'; +import { AuthGuard } from './_guards/auth.guard'; +import { AlertComponent } from './_helpers/alert.component'; +import { AlertService } from './_services/alert.service'; +import { AuthService } from './_services/auth.service'; +import { ChartApiService } from './_services/chart.api'; +import { TableApiService } from './_services/table-api.service'; +import { ApplicationApiService } from './_services/application-api.service'; +import { QuillInitializeServiceService } from './_services/quill-initialize-service.service'; + +// Routing +import { routing } from './app.routing'; +// Components +import { AppComponent } from './app.component'; +import { SettingsModule } from './_layout/settings/settings.module'; +import { ThemeSettingsConfig } from './_layout/settings/theme-settings.config'; +import { MenuSettingsConfig } from './_layout/settings/menu-settings.config'; +import { HeaderComponent } from './_layout/header/header.component'; +import { VerticalComponent as HeaderVerticalComponent } from './_layout/header/vertical/vertical.component'; +import { HorizontalComponent as HeaderHorizontalComponent } from './_layout/header/horizontal/horizontal.component'; +import { FullLayoutNavbarComponent } from './_layout/header/full-layout-navbar/full-layout-navbar.component'; +import { FooterComponent } from './_layout/footer/footer.component'; +import { NavigationComponent as AppNavigationComponent } from './_layout/navigation/navigation.component'; +import { PublicLayoutComponent } from './_layout/public-layout/public-layout.component'; +import { PrivateLayoutComponent } from './_layout/private-layout/private-layout.component'; +import { RegisterComponent } from './register'; +import { SocialSigninComponent } from './social-signin/social-signin.component'; +import { LoginComponent } from './login'; +import { ChangelogComponent } from './changelog/changelog.component'; +import { NavbarService } from './_services/navbar.service'; +import { VerticalnavComponent } from './_layout/navigation/verticalnav/verticalnav.component'; +import { HorizontalnavComponent } from './_layout/navigation/horizontalnav/horizontalnav.component'; +// perfect scroll bar +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +// spinner +import { NgxSpinnerModule } from 'ngx-spinner'; +import { LoadingBarRouterModule } from '@ngx-loading-bar/router'; +import { DeviceDetectorService } from './_services/device-detector.service'; +import { RouterModule } from '@angular/router'; +import { CustomizerComponent } from './_layout/customizer/customizer.component'; +import { NgChartsModule } from 'ng2-charts'; +import { PartialsModule } from './content/partials/partials.module'; +import { BreadcrumbModule } from './_layout/breadcrumb/breadcrumb.module'; +import { HorizontalCustomizerComponent } from './_layout/customizer/horizontal-customizer/horizontal-customizer.component'; +import { BlockTemplateComponent } from './_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; +import { MatchHeightModule } from './content/partials/general/match-height/match-height.module'; +import { FullLayoutComponent } from './_layout/full-layout/full-layout.component'; +import { ToastrModule } from 'ngx-toastr'; +import { UserService } from './_api/user/user.service'; +import { PrivacyPolicyComponent } from './login/privacy-policy/privacy-policy.component'; +import { TermsConditionComponent } from './login/terms-condition/terms-condition.component';; + +@NgModule({ + imports: [ + BrowserModule, + PartialsModule, + ReactiveFormsModule, + HttpClientModule, + NgChartsModule, + BrowserAnimationsModule, + MatchHeightModule, + BreadcrumbModule, + NgbModule, + FormsModule, + AngularFireModule.initializeApp(environment.firebase), + AngularFirestoreModule, // imports firebase/firestore, only needed for database features + AngularFireAuthModule, // imports firebase/auth, only needed for auth features + routing, + // Settings modules + SettingsModule.forRoot(ThemeSettingsConfig, MenuSettingsConfig), + PerfectScrollbarModule, + ToastrModule.forRoot(), + NgxSpinnerModule, + LoadingBarRouterModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }) + ], + declarations: [ + AppComponent, + PublicLayoutComponent, + PrivateLayoutComponent, + HeaderComponent, + FullLayoutNavbarComponent, + HeaderHorizontalComponent, + HeaderVerticalComponent, + FooterComponent, + AppNavigationComponent, + AlertComponent, + RegisterComponent, + SocialSigninComponent, + LoginComponent, + ChangelogComponent, + VerticalnavComponent, + HorizontalnavComponent, + CustomizerComponent, + HorizontalCustomizerComponent, + BlockTemplateComponent, + FullLayoutComponent, + PrivacyPolicyComponent, + TermsConditionComponent, + ], + providers: [ + AuthGuard, + ChartApiService, + AlertService, + NavbarService, + TableApiService, + ApplicationApiService, + DeviceDetectorService, + QuillInitializeServiceService, + AuthService, + UserService, + { + provide: HAMMER_GESTURE_CONFIG, + useClass: HammerGestureConfig + }, + NgbCarouselConfig, + NgbModalConfig, + ], + bootstrap: [AppComponent], + exports: [RouterModule] +}) +export class AppModule { } diff --git a/src/app/app.routing.ts b/src/app/app.routing.ts new file mode 100644 index 0000000..0669ad3 --- /dev/null +++ b/src/app/app.routing.ts @@ -0,0 +1,177 @@ +import { Routes, RouterModule, ExtraOptions } from '@angular/router'; +import { PublicLayoutComponent } from './_layout/public-layout/public-layout.component'; +import { PrivateLayoutComponent } from './_layout/private-layout/private-layout.component'; +import { AuthGuard } from './_guards/auth.guard'; +import { RegisterComponent } from './register'; +import { LoginComponent } from './login'; +import { ChangelogComponent } from './changelog/changelog.component'; +import { FullLayoutComponent } from './_layout/full-layout/full-layout.component'; +import { PrivacyPolicyComponent } from './login/privacy-policy/privacy-policy.component'; +import { TermsConditionComponent } from './login/terms-condition/terms-condition.component'; +const appRoutes: Routes = [ + { path: 'privacypolicy', component: PrivacyPolicyComponent }, + { path: 'termCondition', component: TermsConditionComponent }, + // Public layout + { + path: '', + component: PublicLayoutComponent, + children: [ + { path: 'register', component: RegisterComponent }, + { path: 'login', component: LoginComponent }, + { path: '', component: LoginComponent }, + + ] + }, + { + path: '', + component: FullLayoutComponent, + children: [ + { + path: 'error', loadChildren: () => import('../app/content/full-pages/error/error.module').then(m => m.ErrorModule) + , canActivate: [AuthGuard] + }, + { + path: 'authentication', loadChildren: () => import('../app/content/full-pages/authentication/authentication.module').then(m => + m.AuthenticationModule), + canActivate: [AuthGuard] + }, + { + path: 'others', loadChildren: () => import('../app/content/full-pages/others/others.module').then(m => m.OthersModule), + canActivate: [AuthGuard] + } + ] + }, + // Private layout + { + path: '', + component: PrivateLayoutComponent, + children: [ + { path: 'logout', component: LoginComponent, canActivate: [AuthGuard] }, + { path: 'changelog', component: ChangelogComponent, canActivate: [AuthGuard] }, + { + path: 'dashboard', loadChildren: () => import('../app/content/dashboard/dashboard.module').then(m => m.DashboardModule) + , canActivate: [AuthGuard] + }, + { + path: 'components', loadChildren: () => import('../app/content/ngbbootstrap/components.module').then(m => m.ComponentsModule), + canActivate: [AuthGuard] + }, + { + path: 'todo-app', loadChildren: () => import('../app/content/applications/todo-app/todo-app.module').then(m => m.TodoAppModule) + , canActivate: [AuthGuard] + }, + { + path: 'chats', loadChildren: () => import('../app/content/applications/chat/chats.module').then(m => m.ChatsModule), + canActivate: [AuthGuard] + }, + { + path: 'email', loadChildren: () => import('../app/content/applications/email/email.module').then(m => m.EmailModule) + , canActivate: [AuthGuard] + }, + { + path: 'kanban', loadChildren: () => import('../app/content/applications/kanban/kanban.module').then(m => m.KanbanModule) + , canActivate: [AuthGuard] + }, + { + path: 'calender', loadChildren: () => import('../app/content/applications/calender/calender.module').then(m => m.CalenderModule), + canActivate: [AuthGuard] + }, + { + path: 'contacts', loadChildren: () => import('../app/content/applications/contacts/contacts.module').then(m => m.ContactsModule), + canActivate: [AuthGuard] + }, + { + path: 'chartjs', loadChildren: () => import('../app/content/charts-maps/chartjs/chartjs.module').then(m => m.ChartjsModule) + , canActivate: [AuthGuard] + }, + { + path: 'form-elements', loadChildren: () => import('../app/content/forms/form-elements/form-elements.module').then(m => + m.FormElementsModule), + canActivate: [AuthGuard] + }, + { + path: 'form-layouts', loadChildren: () => import('../app/content/forms/form-layouts/form-layouts.module').then(m => + m.FormLayoutsModule), + canActivate: [AuthGuard] + }, + { + path: 'form-wizard', loadChildren: () => import('../app/content/forms/form-wizard/form-wizard.module').then(m => + m.FormWizardModule), + canActivate: [AuthGuard] + }, + { + path: 'form-repeater', loadChildren: () => import('../app/content/forms/form-repeater/form-repeater.module').then(m => + m.FormRepeaterModule), + canActivate: [AuthGuard] + }, + { + path: 'ngchartist', loadChildren: () => import('../app/content/charts-maps/ngchartist/ngchartist.module').then(m => + m.NgchartistModule), + canActivate: [AuthGuard] + }, + { + path: 'boostraptables', loadChildren: () => import('../app/content/table/boostraptables/boostraptables.module').then(m => + m.BoostraptablesModule), + canActivate: [AuthGuard] + }, + { + path: 'datatables', loadChildren: () => import('../app/content/table/datatables/datatables.module').then(m => m.DatatablesModule), + canActivate: [AuthGuard] + }, + { + path: 'datatablesext', loadChildren: () => import('../app/content/table/datatablesext/datatablesext.module').then(m => + m.DatatablesextModule), + canActivate: [AuthGuard] + }, + { path: 'icons', loadChildren: () => import('../app/content/icons/icons.module').then(m => m.IconsModule), canActivate: [AuthGuard] }, + { path: 'cards', loadChildren: () => import('../app/content/cards/cards.module').then(m => m.CardsModule), canActivate: [AuthGuard] }, + { + path: 'invoice', loadChildren: () => import('../app/content/pages/invoice/invoice.module').then(m => m.InvoiceModule) + , canActivate: [AuthGuard] + }, + { + path: 'timelines', loadChildren: () => import('../app/content/pages/timelines/timelines.module').then(m => m.TimelinesModule), + canActivate: [AuthGuard] + }, + { + path: 'user', loadChildren: () => import('../app/content/pages/user/user.module').then(m => m.UserModule) + , canActivate: [AuthGuard] + }, + { + path: 'gallery', loadChildren: () => import('../app/content/pages/gallery/gallery.module').then(m => m.GalleryModule) + , canActivate: [AuthGuard] + }, + { + path: 'news-feed', loadChildren: () => import('../app/content/pages/news-feed/news-feed.module').then(m => m.NewsFeedModule) + , canActivate: [AuthGuard] + }, + { + path: 'dropzone', loadChildren: () => import('../app/content/pages/dropzone/dropzone.module').then(m => m.DropzoneModule) + , canActivate: [AuthGuard] + }, + { + path: 'social-feed', loadChildren: () => import('../app/content/pages/social-feed/social-feed.module').then(m => + m.SocialFeedModule), + canActivate: [AuthGuard] + }, + { + path: 'search', loadChildren: () => import('../app/content/pages/search/search.module').then(m => m.SearchModule) + , canActivate: [AuthGuard] + }, + { + path: 'advanceCards', loadChildren: () => import('../app/content/advance-cards/advance-cards.module').then(m => + m.AdvanceCardsModule), + canActivate: [AuthGuard] + }, + { + path: 'extraComponents', loadChildren: () => import('../app/content/extra-components/extra-components.module').then(m => + m.ExtraComponentsModule), + canActivate: [AuthGuard] + }, + ], + }, + // otherwise redirect to home + { path: '**', redirectTo: 'changelog' } +]; + +export const routing = RouterModule.forRoot(appRoutes, { scrollOffset: [0, 0], scrollPositionRestoration: 'top' }); diff --git a/src/app/changelog/changelog.component.css b/src/app/changelog/changelog.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/changelog/changelog.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/changelog/changelog.component.html b/src/app/changelog/changelog.component.html new file mode 100644 index 0000000..d23803c --- /dev/null +++ b/src/app/changelog/changelog.component.html @@ -0,0 +1,146 @@ +
+
+
+ +
+
+
+
+
+ + + Release Updates: + + +
12-01-2023 [V3.5]
+
+
    +
  • Upgraded project to use Angular 15.0.4
  • +
  • Make it compatible with Node 18.10
  • +
  • Other minor bug fixes.
  • +
+
+
24-07-2022 [V3.4]
+
+
    +
  • Resolve few deprecated warnings
  • +
  • Other minor bug fixes.
  • +
+
+
14-06-2022 [V3.3]
+
+
    +
  • Upgraded project to use Angular 14.0.1
  • +
  • Other minor bug fixes.
  • +
+
+
26-11-2021 [V3.2]
+
+
    +
  • Upgraded project to use Angular 13.0.2
  • +
  • Other minor bug fixes.
  • +
+
+
26-08-2021 [V3.1]
+
+
    +
  • Upgraded project to use ESLint
  • +
  • Other minor bug fixes.
  • +
+
+
25-06-2021 [V3.0]
+
+
    +
  • Upgraded project to use Angular 12.0.5
  • +
  • Other minor bug fixes.
  • +
+
+
24-05-2021 [V2.6]
+
+
    +
  • Upgraded project to use Angular 11.2.12.
  • +
  • Added Kanban Application
  • +
  • Added Hospital theme Dashboard
  • +
  • Fixed all high severity vulnerablities with Angular 11.2.12.
  • +
  • Other minor bug fixes.
  • +
+
+
11-02-2021 [V2.5]
+
+
    +
  • Upgraded project to use Angular 11.1.0.
  • +
  • Added Tree View under Extra Components
  • +
  • Other minor bug fixes.
  • +
+
+
08-11-2020 [V2.4]
+
+
    +
  • Upgraded project to use Angular 11.0.0.
  • +
  • Upgraded project to use ng-bootstrap 5.0.0.
  • +
  • Fix ngb-calender not default to current date.
  • +
  • Added Dropzone for file upload.
  • +
  • Other minor bug fixes.
  • +
+
+
01-09-2020 [V2.3]
+
+
    +
  • Upgraded project to use Angular 10.1.0.
  • +
  • Fix Card layout issue.
  • +
  • Other minor bug fixes.
  • +
+
+
29-07-2020 [V2.2]
+
+
    +
  • Upgraded project to use Angular 10.0.6.
  • +
  • New layout for TODO applications.
  • +
+
+
30-02-2020 [V2.1]
+
+
    +
  • Upgraded to Angular 9.1.9
  • +
  • Upgraded to Bootstrap 5.2.2
  • +
  • Upgraded SCSS to latest HTML version of the Modern admin
  • +
  • New design for Email Application
  • +
  • New design for Chat Application (Static as well as Live)
  • +
+
+
15-02-2020 [V2.0]
+
+
    +
  • Upgraded project to use Angular 9.0.0.
  • +
  • Fixed bank navigation menu highlight issue.
  • +
+
+
12-06-2019 [V1.2]
+
+
    +
  • Upgraded project to use Angular 9.0.0.
  • +
  • Fixed bank navigation menu highlight issue.
  • +
+
+
11-08-2019 [V1.1]
+
+
    +
  • Added configuration to hide header icons.
  • +
  • Added ngx-toastr in TODO application.
  • +
  • Added fully functional CRUD Firebase API integration for TODO App.
  • +
+
+
10-12-2019 [V1.0]
+
+
    +
  • Initial release
  • +
+
+
+
+
+
+
+
+
+
diff --git a/src/app/changelog/changelog.component.ts b/src/app/changelog/changelog.component.ts new file mode 100644 index 0000000..36d31e1 --- /dev/null +++ b/src/app/changelog/changelog.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-home', + templateUrl: './changelog.component.html', + styleUrls: ['./changelog.component.css'] +}) +export class ChangelogComponent implements OnInit { + + @BlockUI('changelog') blockUIChangelog: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'ChangeLog', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'ChangeLog', + 'isLink': false, + 'link': '#' + }, + ] + }; + } + + reloadChangelog() { + this.blockUIChangelog.start('Loading..'); + + setTimeout(() => { + this.blockUIChangelog.stop(); + }, 2500); + } +} diff --git a/src/app/changelog/index.ts b/src/app/changelog/index.ts new file mode 100644 index 0000000..bf3706d --- /dev/null +++ b/src/app/changelog/index.ts @@ -0,0 +1 @@ +export * from './changelog.component'; diff --git a/src/app/content/advance-cards/advance-cards.module.ts b/src/app/content/advance-cards/advance-cards.module.ts new file mode 100644 index 0000000..a779176 --- /dev/null +++ b/src/app/content/advance-cards/advance-cards.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { StatisticsComponent } from './statistics/statistics.component'; +import { ChartistModule } from 'ng-chartist'; +import { SocialComponent } from './social/social.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgChartsModule } from 'ng2-charts'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { ChartsComponent } from './charts/charts.component'; +import { CardModule } from '../partials/general/card/card.module'; +import { MatchHeightModule } from '../partials/general/match-height/match-height.module'; + +@NgModule({ + imports: [ + CommonModule, + NgbModule, + ChartistModule, + CardModule, + NgChartsModule, + BreadcrumbModule, + MatchHeightModule, + RouterModule.forChild([ + { + path: 'statistics', + component: StatisticsComponent + }, + { + path: 'social', + component: SocialComponent + }, + { + path: 'charts', + component: ChartsComponent + } + ]) + ], + declarations: [StatisticsComponent, SocialComponent, ChartsComponent], + exports: [RouterModule] +}) +export class AdvanceCardsModule {} diff --git a/src/app/content/advance-cards/charts/charts.component.css b/src/app/content/advance-cards/charts/charts.component.css new file mode 100644 index 0000000..7bf75e0 --- /dev/null +++ b/src/app/content/advance-cards/charts/charts.component.css @@ -0,0 +1,159 @@ +:host ::ng-deep .areaChartLegend .ct-series-a .ct-line { + stroke:#1e9ff2; +} +:host ::ng-deep .areaChartLegend .ct-series-a .ct-line { + stroke: url(#gradient1); + stroke-width: 5px; + stroke-linecap: round; +} +:host ::ng-deep .areaChartLegend { + -webkit-filter: drop-shadow(0px 20px 11px rgba(0, 0, 0, 0.5)) !important; + filter: drop-shadow(0px 20px 11px rgba(0, 0, 0, 0.5)); +} +:host ::ng-deep .areaChartLegend .ct-series-a .ct-area { + fill: #ffffff; +} +:host ::ng-deep .areaChartLegend .ct-series-a .ct-line { + stroke: #3da2ea; +} + +:host ::ng-deep .earningchart .ct-series-a .ct-line { + stroke: #FF4961; + } +:host ::ng-deep .earningchart .ct-series-a .ct-point-circle { + stroke-width: 3px; + stroke: #FF4961; + fill: #ffffff; +} +:host ::ng-deep .barchart .ct-series-a .ct-bar { + stroke: #ff394f !important; + stroke-width: 7px !important; +} +:host ::ng-deep .Revenuechartist .ct-series-a .ct-line { + + stroke: url(#gradient2); + stroke-linecap: round; + } +:host ::ng-deep .Revenuechartist { + filter: drop-shadow(0px 20px 11px rgba(252, 198, 198, 0.8)) !important; + +} +:host ::ng-deep .Revenuechartist .ct-grid{ + stroke-dasharray: 0px; + stroke: rgba(0, 0, 0, 0.4); + stroke-width: 0.6px; +} +:host ::ng-deep .Revenuechartist .ct-series-a .ct-line { + stroke: #ff4961; +} +:host ::ng-deep .Revenuechartist .ct-series-b .ct-line { + stroke: #c8c2c3; + stroke-dasharray: 8px 3px; +} + +:host ::ng-deep .Revenuechartist .ct-label.ct-vertical.ct-start { + font-weight: 600; + color: #636161; + font-size: 12px; +} +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-point-circle { + stroke-width: 5px; + stroke: #ffffff; + fill: #1e9ff2; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-point-circle { + stroke-width: 5px; + stroke: #ffffff; + fill: #58e0cd; + ; +} +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-area { + fill: #4105f9f5; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-area { + fill: #03f7b2fa; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-line { + stroke: #58e0cd; +} +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-line { + stroke: #1e9ff2; +} +:host ::ng-deep .donut-chart2{ + margin-bottom: -25px; + margin-top: -17px; +} + +:host ::ng-deep .donut-chart2 .ct-series-a .ct-slice-donut { + stroke: #28d094; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart2 .ct-series-b .ct-slice-donut { + stroke: #ff4961; + stroke-width: 5.5px !important; +} +:host ::ng-deep .donut-chart2 { +-webkit-filter: drop-shadow(0px 10px 11px rgba(187,187,187)) !important; + filter: drop-shadow(0px 10px 11px rgba(187,187,187)); + height: 288px; +} +:host ::ng-deep .donut-chart2 .ct-label { + fill: #ff4b62; + color: rgba(0, 0, 0, 0.4); + font-size: 1.75rem; + line-height: 1; +} +:host ::ng-deep .donut-chart1 { + margin-bottom: -25px; + margin-top: -17px; + height: 288px; +} +:host ::ng-deep .donut-chart1 .ct-series-a .ct-slice-donut { + stroke: #ff7889; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart1 .ct-series-b .ct-slice-donut { + stroke: #ffffff; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart1 .ct-label { + fill: #ffffff; + color: rgba(0, 0, 0, 0.4); + font-size: 1.75rem; + line-height: 1; +} +:host ::ng-deep .donut .ct-done .ct-slice-donut { + stroke: #28d094; + stroke-width: 24px !important; +} + +:host ::ng-deep .donut .ct-progress .ct-slice-donut { + stroke: #ff4558; + stroke-width: 16px !important; +} + +:host ::ng-deep .donut .ct-outstanding .ct-slice-donut { + stroke: #ff7d4d; + stroke-width: 8px !important; +} + +:host ::ng-deep .donut .ct-started .ct-slice-donut { + stroke: #666ECC; + stroke-width: 32px !important; +} + +:host ::ng-deep .donut .ct-label { + text-anchor: middle; + font-size: 20px; + fill: #868e96; +} + +:host ::ng-deep .dountchartheader{ + margin-top: 10px; +} diff --git a/src/app/content/advance-cards/charts/charts.component.html b/src/app/content/advance-cards/charts/charts.component.html new file mode 100644 index 0000000..54912ea --- /dev/null +++ b/src/app/content/advance-cards/charts/charts.component.html @@ -0,0 +1,194 @@ +
+
+
+ +
+
+ +
+
+
+

Charts

+
+
+
+
+
+
+
+
+
+
+ + +
+
+ Statistics for the last year. +
+
+
+
+
+
+
+
+
+
+
    +
  • +
    iOS
    +
  • +
  • +
    Windows
    +
  • +
  • +
    Android
    +
  • +
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Project Tasks

+
+ + +
+
+
+
+
+
+ + + Hit Rate -12% + + +
+ + +
+
+
+
+
+ + +

Deals -55% + + 152/200 + +

+
+ + +
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/advance-cards/charts/charts.component.spec.ts b/src/app/content/advance-cards/charts/charts.component.spec.ts new file mode 100644 index 0000000..bfb4f9d --- /dev/null +++ b/src/app/content/advance-cards/charts/charts.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ChartsComponent } from './charts.component'; + +describe('ChartsComponent', () => { + let component: ChartsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ChartsComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChartsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/advance-cards/charts/charts.component.ts b/src/app/content/advance-cards/charts/charts.component.ts new file mode 100644 index 0000000..36ee2fe --- /dev/null +++ b/src/app/content/advance-cards/charts/charts.component.ts @@ -0,0 +1,472 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import * as Chartist from 'chartist'; +import { ChartEvent, ChartType } from 'ng-chartist'; +import { ChartApiService } from '../../../_services/chart.api'; + + +export interface Chart { + type: ChartType; + data: Chartist.IChartistData; + options?: any; + responsiveOptions?: any; + events?: ChartEvent; +} + +@Component({ + selector: 'app-charts', + templateUrl: './charts.component.html', + styleUrls: ['./charts.component.css'] +}) +export class ChartsComponent implements OnInit { + public breadcrumb: any; + salesData: any; + ChartistData: any; + lineArea: any; + earningchart: any; + DonutChart: any; + barChart: any; + lineArea1: any; + ecommercesaleslineArea: any; + donutChart2: any; + donutChart1: any; + constructor(private chartApiservice: ChartApiService) { } + hitRateOptions = { + bodyClass: ['bg-hexagons', 'pt-0'], + headerClass: ['bg-hexagons'], + cardClass: ['pull-up'], + close: false, + expand: false, + minimize: false, + reload: true + }; + dealsOptions = { + bodyClass: ['bg-hexagons-danger'], + cardClass: ['pull-up'], + contentClass: ['bg-gradient-directional-danger'] + }; + getlineArea() { + const Chartdata = this.ChartistData; + this.lineArea = { + type: 'Line', + data: Chartdata['lineArea'], + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 1.8 + }), + fullwidth: true, + height: '320px', + low: 0, + showArea: true, + fullWidth: true, + showPoint: false, + axisX: { + showGrid: false + }, + axisY: { + low: 0, + offset: 16, + scaleMinSpace: 40, + labelInterpolationFnc: function (value) { + return value + 'K'; + } + } + }, + responsiveOptions: [ + [ + 'screen and (max-width: 640px) and (min-width: 200px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + } + ], + [ + 'screen and (max-width: 380px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + } + ] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs + .elem('linearGradient', { + id: 'gradient1', + x1: 1, + y1: 1, + x2: 1, + y2: 1 + }) + .elem('stop', { + offset: 0, + 'stop-color': 'rgba(22, 141, 238, 1)' + }) + .parent() + .elem('stop', { + offset: 1, + 'stop-color': 'rgba(98, 188, 270, 11)' + }); + } + } + }; + + + this.DonutChart = { + type: 'Pie', + data: Chartdata['donutDashboard'], + options: { + width: '100%', + height: '280px', + donut: true, + startAngle: 0, + labelInterpolationFnc: function (value) { + const total = Chartdata['donutDashboard'].series.reduce(function ( + prev, + series + ) { + return prev + series.value; + }, + 0); + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + this.barChart = { + type: 'Bar', + data: Chartdata['Bar'], + options: { + fullwidth: true, + height: '320px', + seriesBarDistance: 21, + chartPadding: { + top: 0 + }, + axisX: { + showLable: true, + showGrid: false, + offset: 60, + labelInterpolationFnc: function (value) { + return value.slice(0, 3); + } + }, + + axisY: { + scaleMinSpace: 40 + } + } + }; + + this.ecommercesaleslineArea = { + type: 'Line', + data: Chartdata['lineArea2'], + options: { + height: '300px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + axisX: { + showGrid: false + }, + axisY: { + low: 0, + scaleMinSpace: 40, + showGrid: false + } + }, + responsiveOptions: [ + [ + 'screen and (max-width: 640px) and (min-width: 381px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + } + ], + [ + 'screen and (max-width: 380px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + } + ] + ], + events: { + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + } + }; + + } + getChartData() { + const SaleschartData = this.salesData; + this.earningchart = { + type: 'Line', + data: SaleschartData['earningchart'], + options: { + chartPadding: 0, + height: '440px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + + axisX: { + showGrid: false, + showLabel: false, + offset: -1 + }, + axisY: { + scaleMinSpace: 40, + showGrid: false, + showLabel: false, + offset: -2 + } + }, + responsiveOptions: [ + [ + 'screen and (max-width: 640px) and (min-width: 381px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + } + ], + [ + 'screen and (max-width: 380px)', + { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + } + ] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs + .elem('linearGradient', { + id: 'gradient1', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }) + .elem('stop', { + offset: 0, + 'stop-color': 'rgb(255,73,97)' + }) + .parent() + .elem('stop', { + offset: 1, + 'stop-color': 'rgb(255,73,97)' + }); + }, + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + } + }; + this.lineArea1 = { + type: 'Line', + data: SaleschartData['lineArea'], + + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 2.8 + }), + fullWidth: true, + height: '320px', + showArea: false, + showPoint: false, + axisX: { + showGrid: false, + showLabel: true, + offset: 32 + }, + axisY: { + showGrid: true, + showLabel: true, + scaleMinSpace: 28, + offset: 44 + } + }, + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs + .elem('linearGradient', { + id: 'gradient2', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }) + .elem('stop', { + offset: 0, + 'stop-color': 'rgb(255,73,97)' + }) + .parent() + .elem('stop', { + offset: 1, + 'stop-color': 'rgb(255,73,97)' + }); + }, + draw(data: any): void { + const circleRadius = 4; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } else if (data.type === 'label') { + // adjust label position for rotation + const dX = data.width / 2 + (26 - data.width); + data.element.attr({ x: data.element.attr('x') - dX }); + } + } + } + }; + this.donutChart2 = { + type: 'Pie', + data: SaleschartData['donut1'], + options: { + chartPadding: 0, + fullwidth: true, + height: '273px', + donut: true, + showLabel: true, + startAngle: 0, + labelInterpolationFnc: function (value) { + const total = 82; + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + this.donutChart1 = { + type: 'Pie', + data: SaleschartData['donut2'], + options: { + chartPadding: 0, + fullwidth: true, + height: '273px', + donut: true, + showLabel: true, + labelInterpolationFnc: function (value) { + const total = 76; + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + } + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Advance Charts Cards', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Advance Cards', + isLink: true, + link: '#' + }, + { + name: 'Charts', + isLink: false, + link: '#' + } + ] + }; + this.chartApiservice.getSalesData().subscribe(Response => { + this.salesData = Response; + this.getChartData(); + }); + this.chartApiservice.getEcommerceData().subscribe(Response => { + this.ChartistData = Response; + this.getlineArea(); + }); + } +} diff --git a/src/app/content/advance-cards/social/social.component.css b/src/app/content/advance-cards/social/social.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/advance-cards/social/social.component.html b/src/app/content/advance-cards/social/social.component.html new file mode 100644 index 0000000..822882c --- /dev/null +++ b/src/app/content/advance-cards/social/social.component.html @@ -0,0 +1,206 @@ +
+
+
+ +
+
+ +
+
+
+

Social Cards

+

User's social profile cards with followers - following numbers and follow button.

+
+
+
+
+
+
+
+
+ Card image +
+
+
+

Linda Holland

+
    +
  • +

    3.5K

    Likes +
  • +
  • +

    2845

    Followers +
  • +
  • +

    645

    Following +
  • +
+
+
+ Follow +
+
+
+
+
+
+
+
+
+
+ Card image +
+
+
+

Philip Garrett

+
    +
  • +

    500+

    Connections +
  • +
  • +

    485

    Posts +
  • +
  • +

    35

    Following +
  • +
+
+
+ Follow +
+
+
+
+
+
+
+
+
+
+ Card image +
+
+
+

Christine Wood

+
    +
  • +

    1.6K

    Likes +
  • +
  • +

    264

    Followers +
  • +
  • +

    85

    Following +
  • +
+
+
+ Follow +
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/content/advance-cards/social/social.component.spec.ts b/src/app/content/advance-cards/social/social.component.spec.ts new file mode 100644 index 0000000..72dd5e5 --- /dev/null +++ b/src/app/content/advance-cards/social/social.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SocialComponent } from './social.component'; + +describe('SocialComponent', () => { + let component: SocialComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [SocialComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SocialComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/advance-cards/social/social.component.ts b/src/app/content/advance-cards/social/social.component.ts new file mode 100644 index 0000000..12ed2fa --- /dev/null +++ b/src/app/content/advance-cards/social/social.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-social', + templateUrl: './social.component.html', + styleUrls: ['./social.component.css'] +}) +export class SocialComponent implements OnInit { + public breadcrumb: any; + + constructor() {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Advance Social Cards', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Advance Cards', + isLink: true, + link: '#' + }, + { + name: 'Social', + isLink: false, + link: '#' + } + ] + }; + } +} diff --git a/src/app/content/advance-cards/statistics/statistics.component.css b/src/app/content/advance-cards/statistics/statistics.component.css new file mode 100644 index 0000000..38b0b47 --- /dev/null +++ b/src/app/content/advance-cards/statistics/statistics.component.css @@ -0,0 +1,140 @@ +:host ::ng-deep .Likes .ct-series-a .ct-point { + stroke: #28d094; +} +:host ::ng-deep .Likes .ct-line { + fill: none; + stroke-width: 2px; +} +:host ::ng-deep .Likes .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .Likes .ct-series-a .ct-line { + stroke: #28d094; +} +:host ::ng-deep .Likes .ct-series-a .ct-area { + fill: #28d094; +} +:host ::ng-deep .Comments .ct-series-a .ct-point { + stroke: #FF9149; +} +:host ::ng-deep .Comments .ct-line { + fill: none; + stroke-width: 2px; +} +:host ::ng-deep .Comments .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .Comments .ct-series-a .ct-line { + stroke: #FF9149; +} +:host ::ng-deep .Comments .ct-series-a .ct-area { + fill: #FF9149; +} +:host ::ng-deep .Views .ct-series-a .ct-point { + stroke: #FF4961; +} +:host ::ng-deep .Views .ct-line { + fill: none; + stroke-width: 2px; +} +:host ::ng-deep .Views .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .Views .ct-series-a .ct-line { + stroke: #FF4961; +} +:host ::ng-deep .Views .ct-series-a .ct-area { + fill: #FF4961; +} +:host ::ng-deep .sp-line-total-cost .ct-series-a .ct-point{ + stroke: #ff9149; +} +:host ::ng-deep .sp-line-total-cost .ct-series-a .ct-line{ + stroke: #ff9149; + +} +:host ::ng-deep .sp-line-total-cost .ct-series-a .ct-area{ + fill: #ff9149; + fill-opacity: 1; +} +:host ::ng-deep .sp-line-total-cost .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .sp-line-total-cost svg { + margin-left: 13px; +} +:host ::ng-deep .sp-line-total-sales .ct-series-a .ct-point{ + stroke: #28d094; +} +:host ::ng-deep .sp-line-total-sales .ct-series-a .ct-line{ + stroke: #28d094; + +} +:host ::ng-deep .sp-line-total-sales .ct-series-a .ct-area{ + fill: #28d094; + fill-opacity: 1; +} +:host ::ng-deep .sp-line-total-sales .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .sp-line-total-sales svg { + margin-left: 13px; +} +:host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-point{ + stroke: #ff4961; +} +:host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-line{ + stroke: #ff4961; + +} +:host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-area{ + fill: #ff4961; + fill-opacity: 1; +} +:host ::ng-deep .sp-line-total-revenue .ct-point{ + stroke-width: 0px; +} +:host ::ng-deep .sp-line-total-revenue svg { + margin-left: 13px; +} +:host ::ng-deep .ct-bar { + fill: none; + stroke-width: 2px; +} +:host ::ng-deep .sp-bar-total-cost .ct-series-a .ct-bar{ + stroke: #ff9148; +} +:host ::ng-deep .sp-bar-total-sales .ct-series-a .ct-bar{ + stroke: #28d094; +} +:host ::ng-deep .sp-bar-total-revenue .ct-series-a .ct-bar{ + stroke: #ff4961; +} +:host ::ng-deep .sp-bar-total-cost { + margin-bottom: -90px; +} +:host ::ng-deep .sp-bar-total-sales{ + margin-bottom: -90px; +} +:host ::ng-deep .sp-bar-total-revenue{ + margin-bottom: -90px; +} +:host ::ng-deep .feedbacks .ct-series-a .ct-slice-donut { + stroke: #28d094; + stroke-width: 10px !important; +} +:host ::ng-deep .Subscribers .ct-series-a .ct-slice-donut { + stroke: #ff9149; + stroke-width: 10px !important; +} +:host ::ng-deep .Users .ct-series-a .ct-slice-donut { + stroke: #ff4961; + stroke-width: 10px !important; +} +:host ::ng-deep .ct-series-b .ct-slice-donut { + stroke: #eeeeee; + stroke-width: 12px !important; +} +:host ::ng-deep .text-muted { + position: absolute; +} diff --git a/src/app/content/advance-cards/statistics/statistics.component.html b/src/app/content/advance-cards/statistics/statistics.component.html new file mode 100644 index 0000000..aee90e2 --- /dev/null +++ b/src/app/content/advance-cards/statistics/statistics.component.html @@ -0,0 +1,2274 @@ +
+
+
+ +
+
+ +
+
+
+

Minimal Statistics Cards

+

Statistics on minimal cards.

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

278

+ New Posts +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

156

+ New Comments +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

64.89 %

+ Bounce Rate +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

423

+ Total Visits +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

278

+ New Projects +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

156

+ New Clients +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

64.89 %

+ Conversion Rate +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

423

+ Support Tickets +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

278

+ New Posts +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

156

+ New Comments +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

64.89 %

+ Bounce Rate +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

423

+ Total Visits +
+
+ +
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+

Minimal Statistics With Background Color

+

Statistics on minimal cards with background color.

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

278

+ New Posts +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

156

+ New Comments +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

64.89 %

+ Bounce Rate +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

423

+ Total Visits +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

278

+ New Projects +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

156

+ New Clients +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

64.89 %

+ Conversion Rate +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

423

+ Support Tickets +
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+

Crypto Wallet Statistics With Background Color

+

Statistics on minimal cards with background color.

+
+
+ +
+
+
+
+
+
+
+

Ripple

+
200 XRP
+
+
+

$150

+
$1.50
+
+
+
+
+
+
+
+
+
+
+
+
+

Bitcoin

+
3.5 BTC
+
+
+

$950

+
$9980
+
+
+
+
+
+
+
+
+
+
+
+
+

Ethereum

+
10 ETH
+
+
+

$90

+
$944
+
+
+
+
+
+
+
+
+
+
+
+
+

Litecoin

+
24 LTC
+
+
+

$90

+
$180
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +

200 XRP

+
+
+

$1.50

+

Ripple

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

3.5 BTC

+
+
+

$9,980

+

Bitcoin

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

10 ETH

+
+
+

$944

+

Ethereum

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

24 LTC

+
+
+

$180

+

Litecoin

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

Ripple

+
Balance
+

200 XRP

+
+
+
+
+
+
+
+
+

Bitcoin

+
Balance
+

3.5 BTC

+
+
+
+
+
+
+
+
+

Ethereum

+
Balance
+

10 ETH

+
+
+
+
+
+
+
+
+

Litecoin

+
Balance
+
24 LTC
+
+
+
+
+
+
+ + +
+
+
+

Compny Sales Statistics With Background Color

+

Statistics on minimal cards with background color.

+
+
+
+
+
+
+
+
+
+

+

45%

+
+
+

Sales

+ 90%
+ Grate +
+
+
+
+
+
+
+
+
+
+
+
+

+

10%

+
+
+

Product

+ 39%
+ Average +
+
+
+
+
+
+
+
+
+
+
+
+

+

20%

+
+
+

Profit

+ 60%
+ Good +
+
+
+
+
+
+
+
+
+
+
+
+

+

82%

+
+
+

Referral

+ 980
+ Grate +
+
+
+
+
+
+
+
+ + +
+
+
+

Minimal Statistics With Gradient Background Color

+

Statistics on minimal cards with gradient background color.

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

278

+ New Posts +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

156

+ New Comments +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

64.89 %

+ Bounce Rate +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

423

+ Total Visits +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

278

+ New Projects +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

156

+ New Clients +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

64.89 %

+ Conversion Rate +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

423

+ Support Tickets +
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+

Icon Section

+

Statistics on minimal cards with attractive icon section.

+
+
+
+
+
+
+
+
+ +
+
+
Products
+
28
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Users
+
1,22,356
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Orders
+
4,65,879
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Total Profit
+
5.6 M
+
+
+
+
+
+
+
+
+
+
+
+
+
Products
+
28
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Users
+
1,22,356
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Orders
+
4,65,879
+
+
+ +
+
+
+
+
+
+
+
+
+
+
Total Profit
+
5.6 M
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Products
+
28
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Users
+
1,22,356
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Orders
+
4,65,879
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Total Profit
+
5.6 M
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+

Icon Section With Background Color

+

Statistics on minimal cards with attractive icon section and background color.

+
+
+
+
+
+
+
+
+ +
+
+
Products
+
28
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Users
+
1,22,356
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Orders
+
4,65,879
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Total Profit
+
5.6 M
+
+
+
+
+
+
+
+
+
+
+
+
+
Products
+
28
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Users
+
1,22,356
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Orders
+
4,65,879
+
+
+ +
+
+
+
+
+
+
+
+
+
+
Total Profit
+
5.6 M
+
+
+ +
+
+
+
+
+
+
+ + +
+
+
+

Icon Section With Gradient Background Color

+

Statistics on minimal cards with attractive icon section and gradient background color.

+
+
+
+
+
+
+
+
+ +
+
+
Products
+
28
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Users
+
1,22,356
+
+
+
+
+
+
+
+
+
+
+ +
+
+
New Orders
+
4,65,879
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Total Profit
+
5.6 M
+
+
+
+
+
+
+
+
+
+
+
+
+
Products
+
28
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Users
+
1,22,356
+
+
+ +
+
+
+
+
+
+
+
+
+
+
New Orders
+
4,65,879
+
+
+ +
+
+
+
+
+
+
+
+
+
+
Total Profit
+
5.6 M
+
+
+ +
+
+
+
+
+
+
+ + +
+
+
+

Statistics With Subtitle

+

Statistics on minimal cards with Title & Sub Title.

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

Total Posts

+ Monthly blog posts +
+
+

18,000

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

Total Comments

+ Monthly blog comments +
+
+

84,695

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

$76,456.00

+
+
+

Total Sales

+ Monthly Sales Amount +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+

$36,000.00

+
+
+

Total Cost

+ Monthly Cost +
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+

Statistics With Icon Section & Subtitle

+

Statistics on minimal cards with icon section and Title, Sub Title.

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

Total Posts

+ Monthly blog posts +
+
+

18,000

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

Total Comments

+ Monthly blog comments +
+
+

84,695

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

$76,456.00

+
+
+

Total Sales

+ Monthly sales amount +
+
+ +
+
+
+
+
+
+
+
+
+
+

$76,456.00

+
+
+

Total Cost

+ Monthly Cost +
+
+ +
+
+
+
+
+
+
+ + +
+
+
+

Statistics With Icon Section, Subtitle & Bg Color

+

Statistics on minimal cards with icon section, title, sub title and background color.

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

Total Posts

+ Monthly blog posts +
+
+

18,000

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

Total Comments

+ Monthly blog comments +
+
+

84,695

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

$76,456.00

+
+
+

Total Sales

+ Monthly sales amount +
+
+ +
+
+
+
+
+
+
+
+
+
+

$76,456.00

+
+
+

Total Cost

+ Monthly Cost +
+
+ +
+
+
+
+
+
+
+ + +
+
+
+

Statistics With Icon Section, Subtitle & Bg Gradient Color

+

Statistics on minimal cards with icon section, title, sub title and background Gradient color.

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

Total Posts

+ Monthly blog posts +
+
+

18,000

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

Total Comments

+ Monthly blog comments +
+
+

84,695

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

$76,456.00

+
+
+

Total Sales

+ Monthly sales amount +
+
+ +
+
+
+
+
+
+
+
+
+
+

$76,456.00

+
+
+

Total Cost

+ Monthly Cost +
+
+ +
+
+
+
+
+
+
+ + +
+
+
+

Grouped Card Statistics

+

Statistics with grouped cards, knobs and icons.

+
+
+
+
+
+
+
+
+
+
+ New Feedbacks +

2,487

+
+
+ + + + +
    +
  • +

    95%

    + Positive +
  • +
  • +

    5%

    + Negative +
  • +
+
+
+
+
+
+
+ New Subscribers +

1,496

+
+
+ + + +
    +
  • +

    1465

    + Average Monthly Subscribers +
  • +
+
+
+
+
+
+
+ Total Users +

7,684

+
+
+ + + +
    +
  • +

    24%

    + Male +
  • +
  • +

    76%

    + Female +
  • +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

34,879

+ Total Likes +
+
+ + +
    +
  • +

    4789

    + Per Post +
  • +
  • +

    389

    + Today +
  • +
+
+
+
+
+
+
+

14,962

+ Total Comments +
+
+
+ + +
+
    +
  • +

    147

    + Per Post +
  • +
  • +

    54

    + Today +
  • +
+
+
+
+
+
+
+

76,894

+ Total Views +
+
+
+ + +
+
    +
  • +

    6897

    + Per Post +
  • +
  • +

    498

    + Today +
  • +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + Products +
+
+ 579 +
+
+
+
+
+
+
+
+
+ + New Clients +
+
+ 423 +
+
+
+
+
+
+
+
+
+ + Conversion Rate +
+
+ 61% +
+
+
+
+
+
+
+
+
+ + Sales +
+
+ $687 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 589 +
+
+ New + Products +
+
+
+
+ 765 +
+
+ New + Clients +
+
+
+
+ 693 +
+
+ New + Orders +
+
+
+
+ 946 +
+
+ New + Visitors +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 589 +
+
+ New + Products +
+
+
+
+ 765 +
+
+ New + Clients +
+
+
+
+ 693 +
+
+ New + Orders +
+
+
+
+ 946 +
+
+ New + Visitors +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

1579

+ Products +
+
+
+
+

1423

+ New Clients +
+
+
+
+

61%

+ Conversion Rate +
+
+
+
+

$687

+ Sales +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

1579

+ Products +
+
+
+
+

1423

+ New Clients +
+
+
+
+

61%

+ Conversion Rate +
+
+
+
+

$687

+ Sales +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

1579

+ Products +
+
+
+
+

1423

+ New Clients +
+
+
+
+

61%

+ Conversion Rate +
+
+
+
+

$687

+ Sales +
+
+
+
+
+
+
+
+ + +
+
+
+

Sparkline Statisctics

+

Statistics with sparkline charts.

+
+
+
+
+
+
+
+
+
+

$15,678

+ Total Cost +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

$45,668

+ Total Sales +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

$32,454

+ Total Revenue +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+

$15,678

+ Total Cost +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+

$45,668

+ Total Sales +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+

$32,454

+ Total Revenue +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/content/advance-cards/statistics/statistics.component.spec.ts b/src/app/content/advance-cards/statistics/statistics.component.spec.ts new file mode 100644 index 0000000..ecfd7e8 --- /dev/null +++ b/src/app/content/advance-cards/statistics/statistics.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { StatisticsComponent } from './statistics.component'; + +describe('StatisticsComponent', () => { + let component: StatisticsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ StatisticsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StatisticsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/advance-cards/statistics/statistics.component.ts b/src/app/content/advance-cards/statistics/statistics.component.ts new file mode 100644 index 0000000..40c7533 --- /dev/null +++ b/src/app/content/advance-cards/statistics/statistics.component.ts @@ -0,0 +1,224 @@ +import { Component, OnInit } from '@angular/core'; +import * as Chartist from 'chartist'; +import { ChartEvent, ChartType } from 'ng-chartist'; +import { ChartApiService } from '../../../_services/chart.api'; + +export interface Chart { + type: ChartType; + data: Chartist.IChartistData; + options?: any; + responsiveOptions?: any; + events?: ChartEvent; +} +@Component({ + selector: 'app-statistics', + templateUrl: './statistics.component.html', + styleUrls: ['./statistics.component.css'] +}) +export class StatisticsComponent implements OnInit { + Data: any; + public breadcrumb: any; + feedbacksdonutChart: any; + subscribersdonutChart: any; + usersdonutChart: any; + lineArea: any; + commentslineArea: any; + viewslineArea: any; + sparklineArea: any; + barChart1: any; + barChart: any; + + constructor(private chartApiservice: ChartApiService) {} + + getlineArea() { + const ChartData = this.Data; + this.feedbacksdonutChart = { + type: 'Pie', + data: ChartData['feedbacksdonutChart'], + options: { + showLabel: false, + chartPadding: 0, + fullwidth: true, + height: '200px', + donut: true, + startAngle: 0 + } + }; + this.subscribersdonutChart = { + type: 'Pie', + data: ChartData['subscribersdonutChart'], + options: { + chartPadding: 0, + fullwidth: true, + height: '200px', + donut: true, + showLabel: false, + startAngle: 0 + } + }; + this.usersdonutChart = { + type: 'Pie', + data: ChartData['usersdonutChart'], + options: { + showLabel: false, + chartPadding: 0, + fullwidth: true, + height: '200px', + donut: true, + startAngle: 0 + } + }; + + this.lineArea = { + type: 'Line', + data: ChartData['lineArea'], + options: { + // low: 650, + fullwidth: true, + height: '80px', + showArea: true, + axisX: { + showGrid: false, + showLabel: false + }, + axisY: { + showGrid: false, + showLabel: false + } + } + }; + this.commentslineArea = { + type: 'Line', + data: ChartData['commentslineArea'], + options: { + // low: 650, + fullwidth: true, + height: '80px', + showArea: true, + axisX: { + showGrid: false, + showLabel: false + }, + axisY: { + showGrid: false, + showLabel: false + } + } + }; + this.viewslineArea = { + type: 'Line', + data: ChartData['viewslineArea'], + options: { + // low: 650, + fullwidth: true, + height: '80px', + showArea: true, + axisX: { + showGrid: false, + showLabel: false + }, + axisY: { + showGrid: false, + showLabel: false + } + } + }; + this.sparklineArea = { + type: 'Line', + data: ChartData['sparklineArea'], + options: { + chartPadding: 0, + showArea: true, + showLine: false, + showPoint: false, + lineSmooth: Chartist.Interpolation.none(), + axisX: { + showGrid: false, + offset: -1 + }, + axisY: { + showGrid: false, + offset: -1 + } + } + }; + this.barChart = { + type: 'Bar', + data: ChartData['Bar'], + options: { + fullwidth: true, + axisX: { + showGrid: false, + showLabel: false, + offset: 100 + }, + + axisY: { + showGrid: false, + showLabel: false + } + } + }; + this.barChart1 = { + type: 'Bar', + data: ChartData['Bar1'], + options: { + fullwidth: true, + axisX: { + showGrid: false, + showLabel: false, + offset: 100 + }, + + axisY: { + showGrid: false, + showLabel: false + } + } + }; + this.lineArea = { + type: 'Line', + data: ChartData['lineArea'], + options: { + // low: 650, + fullwidth: true, + height: '75px', + showArea: true, + axisX: { + showGrid: false, + showLabel: false + }, + axisY: { + showGrid: false, + showLabel: false + } + } + }; +} + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Advance Statistics Cards', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Advance Cards', + isLink: true, + link: '#' + }, + { + name: 'Statistics Cards', + isLink: false, + link: '#' + } + ] + }; + this.chartApiservice.getStatisticsData().subscribe(Response => { + this.Data = Response; + this.getlineArea(); + }); + } +} diff --git a/src/app/content/applications/calender/addevent/DateTimePickerComponent.ts b/src/app/content/applications/calender/addevent/DateTimePickerComponent.ts new file mode 100644 index 0000000..82422cb --- /dev/null +++ b/src/app/content/applications/calender/addevent/DateTimePickerComponent.ts @@ -0,0 +1,88 @@ +import { ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core'; +import { + getSeconds, + getMinutes, + getHours, + getDate, + getMonth, + getYear, + setSeconds, + setMinutes, + setHours, + setDate, + setMonth, + setYear +} from 'date-fns'; +import { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap'; +import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; + +export const DATE_TIME_PICKER_CONTROL_VALUE_ACCESSOR: any = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => DateTimePickerComponent), + multi: true +}; + +@Component({ + selector: 'app-mwl-demo-utils-date-time-picker', + templateUrl: 'dateTimeComponent.component.html', + styleUrls: ['dateTimePickerComponent.component.css'], + providers: [DATE_TIME_PICKER_CONTROL_VALUE_ACCESSOR] +}) +export class DateTimePickerComponent implements ControlValueAccessor { + @Input() placeholder: string; + + date: Date; + + dateStruct: NgbDateStruct; + + timeStruct: NgbTimeStruct; + + datePicker: any; + + private onChangeCallback: (date: Date) => void = () => { }; + + constructor(private cdr: ChangeDetectorRef) { } + + writeValue(date: Date): void { + this.date = date; + this.dateStruct = { + day: getDate(date), + month: getMonth(date) + 1, + year: getYear(date) + }; + this.timeStruct = { + second: getSeconds(date), + minute: getMinutes(date), + hour: getHours(date) + }; + this.cdr.detectChanges(); + } + + registerOnChange(fn: any): void { + this.onChangeCallback = fn; + } + + registerOnTouched(fn: any): void { } + + updateDate(): void { + const newDate: Date = setYear( + setMonth( + setDate(this.date, this.dateStruct.day), + this.dateStruct.month - 1 + ), + this.dateStruct.year + ); + this.onChangeCallback(newDate); + } + + updateTime(): void { + const newDate: Date = setHours( + setMinutes( + setSeconds(this.date, this.timeStruct.second), + this.timeStruct.minute + ), + this.timeStruct.hour + ); + this.onChangeCallback(newDate); + } +} diff --git a/src/app/content/applications/calender/addevent/addevent.component.css b/src/app/content/applications/calender/addevent/addevent.component.css new file mode 100644 index 0000000..0a24835 --- /dev/null +++ b/src/app/content/applications/calender/addevent/addevent.component.css @@ -0,0 +1,57 @@ +:host ::ng-deep .card-block .h4 { + font-size: 1.32rem; + font-family: bold; +} + +:host ::ng-deep .content-sub-header { + margin-top: 0; + margin-bottom: 3rem; +} + +:host ::ng-deep .mb-3, +.my-3 { + margin-bottom: 2rem !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .ngb-datepicker-month-view { + display: block; + background-color: red !important; +} + +@media screen and (max-width: 767px) { + .bottom_space { + padding-bottom: 1rem !important; + text-align: unset !important; + padding-left: 0px !important; + } +} + +@media screen and (max-width: 767px) { + .pull-right { + float: left !important; + } +} + +.close { + outline: none; +} + +::ng-deep ngb-modal-backdrop { + z-index: 1050 !important; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} \ No newline at end of file diff --git a/src/app/content/applications/calender/addevent/addevent.component.html b/src/app/content/applications/calender/addevent/addevent.component.html new file mode 100644 index 0000000..2da7252 --- /dev/null +++ b/src/app/content/applications/calender/addevent/addevent.component.html @@ -0,0 +1,144 @@ +
+
+
+ +
+
+
+
+
+ + + Add Event + + +

This is the most advanced example having various features. This + example lists all the events on the calendar with Add new event functionality.

+ + + + + +
+
+
+ +
+
+
+ Previous +
+
+ Today +
+
+ Next +
+
+
+
+

{{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}

+
+
+
+
+ Month +
+
+ Week +
+
+ Day +
+
+
+ +
+
+
+ +
+
+
+ + + + + + +
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/content/applications/calender/addevent/addevent.component.spec.ts b/src/app/content/applications/calender/addevent/addevent.component.spec.ts new file mode 100644 index 0000000..a97461a --- /dev/null +++ b/src/app/content/applications/calender/addevent/addevent.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { AddeventComponent } from './addevent.component'; + +describe('AddeventComponent', () => { + let component: AddeventComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ AddeventComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddeventComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/calender/addevent/addevent.component.ts b/src/app/content/applications/calender/addevent/addevent.component.ts new file mode 100644 index 0000000..3bddfa6 --- /dev/null +++ b/src/app/content/applications/calender/addevent/addevent.component.ts @@ -0,0 +1,233 @@ +import { ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { ViewChild, TemplateRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { startOfDay, endOfDay, subDays, addDays, endOfMonth, startOfMonth, isSameDay, isSameMonth, addHours } from 'date-fns'; +import { CalendarEventTimesChangedEvent, CalendarView, CalendarEvent, CalendarEventAction } from 'angular-calendar'; +import { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; + +const colors: any = { + red: { + primary: '#ad2121', + secondary: '#FAE3E3' + }, + blue: { + primary: '#1e90ff', + secondary: '#D1E8FF' + }, + yellow: { + primary: '#e3bc08', + secondary: '#FDF1BA' + } +}; +@Component({ + selector: 'app-adddeleteevent', + templateUrl: './addevent.component.html', + styleUrls: ['./addevent.component.css'] +}) +export class AddeventComponent implements OnInit { + + @BlockUI('default') blockUIDefault: NgBlockUI; + date: Date; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + @ViewChild('modalContent') modalContent: TemplateRef; + view: CalendarView = CalendarView.Month; + CalendarView = CalendarView; + newEvent: CalendarEvent; + viewDate: Date = new Date(); + activeDayIsOpen = true; + modalData: {action: string; + event: CalendarEvent; + }; + actions: CalendarEventAction[] = [ + { + label: '', + onClick: ({ event }: { event: CalendarEvent }): void => { + this.handleEvent('Edited', event); + } + }, + { + label: '', + onClick: ({ event }: { event: CalendarEvent }): void => { + this.events = this.events.filter(iEvent => iEvent !== event); + this.handleEvent('Deleted', event); + } + } + ]; + + refresh: Subject = new Subject(); + + events: CalendarEvent[] = [ + { + start: subDays(startOfDay(new Date()), 0), + end: addDays(new Date(), 1), + title: 'Business Lunch', + color: colors.red, + actions: this.actions, + allDay: true, + resizable: { + beforeStart: true, + afterEnd: true + }, + draggable: true + }, + + { + start: subDays(endOfMonth(new Date()), 2), + end: addDays(endOfMonth(new Date()), 1), + title: 'A long event that spans 2 months', + color: colors.blue, + allDay: true + }, + + { + start: subDays(startOfMonth(new Date()), 1), + end: addDays(startOfMonth(new Date()), 0), + title: 'Meeting', + color: colors.yellow, + actions: this.actions, + resizable: { + beforeStart: true, + afterEnd: true + }, + draggable: true + } + ]; + + + dateStruct: NgbDateStruct; + + timeStruct: NgbTimeStruct; + public breadcrumb: any; + + datePicker: any; + private onChangeCallback: (date: Date) => void = () => { }; + + /** + * + * @param NgbModal modal + */ + constructor(private modal: NgbModal) { } + + /** + * onInit + */ + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Calendar AddEvent', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Apps', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Calendars', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'AddEvent', + 'isLink': false, + 'link': '#' + } + ] + }; + } + + /** + * selacted date + * + * @param date Clicked date in datepicker + * @param events Events of selected date + */ + dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }): void { + if (isSameMonth(date, this.viewDate)) { + this.viewDate = date; + if ( + (isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) || + events.length === 0 + ) { + this.activeDayIsOpen = false; + } else { + this.activeDayIsOpen = true; + } + } + } + + /** + * + * @param event Event of the time change + * @param newStart Event start date + * @param newEnd Event end date + */ + eventTimesChanged({ + event, + newStart, + newEnd + }: CalendarEventTimesChangedEvent): void { + event.start = newStart; + event.end = newEnd; + this.handleEvent('Dropped or resized', event); + this.refresh.next({}); + } + + /** + * + * @param action Event action + * @param event calendar event + */ + handleEvent(action: string, event: CalendarEvent): void { + this.modalData = { event, action }; + this.modal.open(this.modalContent, { size: 'lg' }); + } + + /** + * Add new event in modal + */ + addEvent(): void { + this.newEvent = { + title: 'New event', + start: startOfDay(new Date()), + end: endOfDay(new Date()), + color: colors.red, + draggable: true, + resizable: { + beforeStart: true, + afterEnd: true + }, + actions: this.actions, + }; + this.events.push(this.newEvent); + + // this.refresh.next(); + this.handleEvent('Add new event', this.newEvent); + this.refresh.next({}); + } + + /** + * Reload card + */ + reloadDefault () { + this.blockUIDefault.start('Loading..'); + + setTimeout(() => { + this.blockUIDefault.stop(); + }, 2500); + } + +} + + + diff --git a/src/app/content/applications/calender/addevent/dateTimeComponent.component.html b/src/app/content/applications/calender/addevent/dateTimeComponent.component.html new file mode 100644 index 0000000..8e7ac68 --- /dev/null +++ b/src/app/content/applications/calender/addevent/dateTimeComponent.component.html @@ -0,0 +1,25 @@ +
+
+
+ +
+
+ +
+
+
+
+
+ + diff --git a/src/app/content/applications/calender/addevent/dateTimePickerComponent.component.css b/src/app/content/applications/calender/addevent/dateTimePickerComponent.component.css new file mode 100644 index 0000000..85bbfbc --- /dev/null +++ b/src/app/content/applications/calender/addevent/dateTimePickerComponent.component.css @@ -0,0 +1,143 @@ +.form-group { + width: 100%; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: white !important; +} + +div.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep.visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} diff --git a/src/app/content/applications/calender/basic/basic.component.css b/src/app/content/applications/calender/basic/basic.component.css new file mode 100644 index 0000000..5ee5847 --- /dev/null +++ b/src/app/content/applications/calender/basic/basic.component.css @@ -0,0 +1,55 @@ +:host ::ng-deep .h3 { + margin: 0 0 10px; + } + + :host ::ng-deep .pre { + background-color: #f5f5f5; + padding: 15px; + } + :host ::ng-deep.card-header .heading-elements, .card-header .heading-elements-toggle { + background-color: inherit; + position: absolute; + top: 60px; + right: 77px; +} +:host ::ng-deep .cal-month-view .cal-open-day-events { + padding: 0px !important; + color: white; + background-color: #555; + -webkit-box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); + box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); +} +:host ::ng-deep .card-header .heading-elements { + background-color: inherit; + position: absolute; + top: 19px; + right: 19px; +} + +.fc-toolbar .fc-left { + float: left; +} + +.fc-toolbar .fc-right { + float: right; +} + +.fc-toolbar.fc-header-toolbar { + margin-bottom: 3em; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +@media screen and (max-width: 767px) { + .bottom_space { + padding-bottom: 1rem !important; + text-align: unset !important; + padding-left: 0px !important; + } +} + +::ng-deep ngb-modal-backdrop { + z-index: 1050 !important; +} diff --git a/src/app/content/applications/calender/basic/basic.component.html b/src/app/content/applications/calender/basic/basic.component.html new file mode 100644 index 0000000..669055f --- /dev/null +++ b/src/app/content/applications/calender/basic/basic.component.html @@ -0,0 +1,183 @@ +
+
+
+ +
+
+
+
+
+ + + Basic Views + + +

This is the most basic example having navigation buttons as well as month, week and day views. In + this example you have the option to change your view to a basicWeek or basicDay view. In the Basic + Week or Basic Day View events are listed all together.

+
+ + + + + + +
+
+

{{ BviewDate | calendarDate:(Bview + 'ViewTitle'):'en' }}

+
+
+
+
+ Previous +
+
+ Today +
+
+ Next +
+
+
+ + +
+
+
+ + + + + + +
+


+
+
+
+
+
+
+
+
+
+
+ + + Basic Views + + +

This is the most basic example having navigation buttons as well as month, week and day views. In + this example you have the option to change your view to a basicWeek or basicDay view. In the Basic + Week or Basic Day View events are listed all together.

+
+ + + + + + +
+
+
+
+ Previous +
+
+ Today +
+
+ Next +
+
+
+
+

{{ BviewDate | calendarDate:(Bview + 'ViewTitle'):'en' }}

+
+
+
+
+ Month +
+
+ Week +
+
+ Day +
+
+
+
+
+
+ + + + + + +
+


+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/content/applications/calender/basic/basic.component.spec.ts b/src/app/content/applications/calender/basic/basic.component.spec.ts new file mode 100644 index 0000000..0a1cf01 --- /dev/null +++ b/src/app/content/applications/calender/basic/basic.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BasicComponent } from './basic.component'; + +describe('BasicComponent', () => { + let component: BasicComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BasicComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/calender/basic/basic.component.ts b/src/app/content/applications/calender/basic/basic.component.ts new file mode 100644 index 0000000..2f2a363 --- /dev/null +++ b/src/app/content/applications/calender/basic/basic.component.ts @@ -0,0 +1,89 @@ +import { Component, OnInit } from '@angular/core'; +import { ViewChild, TemplateRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { CalendarView } from 'angular-calendar'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-basic', + templateUrl: './basic.component.html', + styleUrls: ['./basic.component.css'] +}) +export class BasicComponent implements OnInit { + + @BlockUI('default') blockUIDefault: NgBlockUI; + @BlockUI('basicViews') blockUIBasicViews: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + @ViewChild('modalContent', { static: true }) modalContent: TemplateRef; + + view: CalendarView = CalendarView.Month; + Bview: CalendarView = CalendarView.Month; + CalendarView = CalendarView; + + viewDate: Date = new Date(); + BviewDate: Date = new Date(); + modalData: {action: string}; + refresh: Subject = new Subject(); + + activeDayIsOpen: boolean; + + /** + * onInit + */ + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Calendar Basic', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Apps', + isLink: true, + link: '#' + }, + { + name: 'Calendars', + isLink: true, + link: '#' + }, + { + name: 'Basic', + isLink: false, + link: '#' + } + ] + }; + } + + /** + * realod card + */ + reloadDefault() { + this.blockUIDefault.start('Loading..'); + + setTimeout(() => { + this.blockUIDefault.stop(); + }, 2500); + } + + /** + * Realod card + */ + reloadBasicViews() { + this.blockUIBasicViews.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicViews.stop(); + }, 2500); + } +} diff --git a/src/app/content/applications/calender/calender.module.spec.ts b/src/app/content/applications/calender/calender.module.spec.ts new file mode 100644 index 0000000..8025824 --- /dev/null +++ b/src/app/content/applications/calender/calender.module.spec.ts @@ -0,0 +1,13 @@ +import { CalenderModule } from './calender.module'; + +describe('CalenderModule', () => { + let calenderModule: CalenderModule; + + beforeEach(() => { + calenderModule = new CalenderModule(); + }); + + it('should create an instance', () => { + expect(calenderModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/calender/calender.module.ts b/src/app/content/applications/calender/calender.module.ts new file mode 100644 index 0000000..b2fcc1b --- /dev/null +++ b/src/app/content/applications/calender/calender.module.ts @@ -0,0 +1,61 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { CalendarModule, DateAdapter } from 'angular-calendar'; +import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; +import { RouterModule } from '@angular/router'; +import { FlatpickrModule } from 'angularx-flatpickr'; +import { BasicComponent } from './basic/basic.component'; +import { EventsComponent } from './events/events.component'; +import { AddeventComponent } from './addevent/addevent.component'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { DateTimePickerComponent } from './addevent/DateTimePickerComponent'; +import { + NgbModalModule, + NgbDatepickerModule, + NgbTimepickerModule +} from '@ng-bootstrap/ng-bootstrap'; +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + FormsModule, + FlatpickrModule.forRoot(), + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + NgbModalModule, + NgbDatepickerModule, + NgbTimepickerModule, + CalendarModule.forRoot({ + provide: DateAdapter, + useFactory: adapterFactory + }), + RouterModule.forChild([ + { + path: 'basic', + component: BasicComponent + }, + { + path: 'events', + component: EventsComponent + }, + { + path: 'addevent', + component: AddeventComponent + } + ]) + ], + + declarations: [ + BasicComponent, + EventsComponent, + AddeventComponent, + DateTimePickerComponent + ] +}) +export class CalenderModule {} diff --git a/src/app/content/applications/calender/events/events.component.css b/src/app/content/applications/calender/events/events.component.css new file mode 100644 index 0000000..7ee7026 --- /dev/null +++ b/src/app/content/applications/calender/events/events.component.css @@ -0,0 +1,27 @@ +:host ::ng-deep .cal-month-view .cal-open-day-events { + padding: 0px !important; + color: white; + background-color: #555; + -webkit-box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); + box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, 0.5); +} + +:host ::ng-deep .title { + width: 140px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +@media screen and (max-width: 767px) { + .bottom_space { + padding-bottom: 1rem !important; + text-align: unset !important; + padding-left: 0px !important; + } +} + +::ng-deep ngb-modal-backdrop { + z-index: 1050 !important; +} diff --git a/src/app/content/applications/calender/events/events.component.html b/src/app/content/applications/calender/events/events.component.html new file mode 100644 index 0000000..92f7fca --- /dev/null +++ b/src/app/content/applications/calender/events/events.component.html @@ -0,0 +1,181 @@ +
+
+
+ +
+
+
+
+
+ + + Events + + +

This is the most basic example having navigation button to navigate next and previous months and + today button. This example lists all the events on the calendar with Add new event functionality.

+
+ + + + + + +
+
+
+
+ Previous +
+
+ Today +
+
+ Next +
+
+
+
+

{{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}

+
+
+
+
+ Month +
+
+ Week +
+
+ Day +
+
+
+
+
+
+ + + + + + +
+ +


+ +

+ Edit events + +
+

+
+ + + + + + + + + + + + + + + + + + + + + +
TitlePrimary colorSecondary colorStarts atEnds atRemove
+ + + + + + + + + + + + + + +
+
+


+ + + + + +
+
+
+
+
+
+
+
diff --git a/src/app/content/applications/calender/events/events.component.spec.ts b/src/app/content/applications/calender/events/events.component.spec.ts new file mode 100644 index 0000000..96aabbf --- /dev/null +++ b/src/app/content/applications/calender/events/events.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { EventsComponent } from './events.component'; + +describe('EventsComponent', () => { + let component: EventsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ EventsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/calender/events/events.component.ts b/src/app/content/applications/calender/events/events.component.ts new file mode 100644 index 0000000..8fd0c76 --- /dev/null +++ b/src/app/content/applications/calender/events/events.component.ts @@ -0,0 +1,214 @@ +import { Component, OnInit } from '@angular/core'; +import { ViewChild, TemplateRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { + startOfDay, + endOfDay, + subDays, + addDays, + endOfMonth, + isSameDay, + isSameMonth, + addHours +} from 'date-fns'; +import { + CalendarEventTimesChangedEvent, + CalendarView, + CalendarEvent, + CalendarEventAction +} from 'angular-calendar'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +const colors: any = { + red: { + primary: '#ad2121', + secondary: '#FAE3E3' + }, + blue: { + primary: '#1e90ff', + secondary: '#D1E8FF' + }, + yellow: { + primary: '#e3bc08', + secondary: '#FDF1BA' + } +}; +@Component({ + selector: 'app-events', + templateUrl: './events.component.html', + styleUrls: ['./events.component.css'] +}) +export class EventsComponent implements OnInit { + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + @BlockUI('events') blockUIEvents: NgBlockUI; + + @ViewChild('modalContent', { static: true }) modalContent: TemplateRef; + + view: CalendarView = CalendarView.Month; + + CalendarView = CalendarView; + + viewDate: Date = new Date(); + activeDayIsOpen = true; + modalData: { + action: string; + event: CalendarEvent; + }; + + actions: CalendarEventAction[] = [ + { + label: '', + onClick: ({ event }: { event: CalendarEvent }): void => { + this.handleEvent('Edited', event); + } + }, + { + label: '', + onClick: ({ event }: { event: CalendarEvent }): void => { + this.events = this.events.filter(iEvent => iEvent !== event); + this.handleEvent('Deleted', event); + } + } + ]; + refresh: Subject = new Subject(); + + events: CalendarEvent[] = [ + { + start: subDays(startOfDay(new Date()), 1), + end: addDays(new Date(), 1), + title: 'A 3 day event', + color: colors.red, + actions: this.actions, + allDay: true, + resizable: { + beforeStart: true, + afterEnd: true + }, + draggable: true + }, + { + start: startOfDay(new Date()), + title: 'An event with no end date', + color: colors.yellow, + actions: this.actions + }, + { + start: subDays(endOfMonth(new Date()), 3), + end: addDays(endOfMonth(new Date()), 3), + title: 'A long event that spans 2 months', + color: colors.blue, + allDay: true + }, + { + start: addHours(startOfDay(new Date()), 2), + end: new Date(), + title: 'A draggable and resizable event', + color: colors.yellow, + actions: this.actions, + resizable: { + beforeStart: true, + afterEnd: true + }, + draggable: true + } + ]; + + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Full Calendar Events', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Apps', + isLink: true, + link: '#' + }, + { + name: 'Calendars', + isLink: true, + link: '#' + }, + { + name: 'Events', + isLink: false, + link: '#' + } + ] + }; + } + constructor(private modal: NgbModal) {} + + dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }): void { + if (isSameMonth(date, this.viewDate)) { + this.viewDate = date; + if ( + (isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) || + events.length === 0 + ) { + this.activeDayIsOpen = false; + } else { + this.activeDayIsOpen = true; + } + } + } + + eventTimesChanged({ + event, + newStart, + newEnd + }: CalendarEventTimesChangedEvent): void { + event.start = newStart; + event.end = newEnd; + this.handleEvent('Dropped or resized', event); + this.refresh.next({}); + } + + handleEvent(action: string, event: CalendarEvent): void { + this.modalData = { event, action }; + this.modal.open(this.modalContent, { size: 'lg' }); + } + + addEvent(): void { + this.events.push({ + title: 'New event', + start: startOfDay(new Date()), + end: endOfDay(new Date()), + color: colors.red, + draggable: true, + resizable: { + beforeStart: true, + afterEnd: true + } + }); + this.refresh.next({}); + } + deleteEvent(eventToDelete: CalendarEvent) { + this.events = this.events.filter(event => event !== eventToDelete); + } + setView(view: CalendarView) { + this.view = view; + } + + closeOpenMonthViewDay() { + this.activeDayIsOpen = false; + } + + reloadEvents() { + this.blockUIEvents.start('Loading..'); + + setTimeout(() => { + this.blockUIEvents.stop(); + }, 2500); + } +} diff --git a/src/app/content/applications/chat/chats.component.css b/src/app/content/applications/chat/chats.component.css new file mode 100644 index 0000000..16cd325 --- /dev/null +++ b/src/app/content/applications/chat/chats.component.css @@ -0,0 +1,56 @@ +:host ::ng-deep .content-right { + width: calc(100% - 300px) !important; +} + :host ::ng-deep .mx-75 { + margin-left: .75rem!important; + margin-right: .75rem!important; + } + :host ::ng-deep .py-75 { + padding-bottom: .75rem!important; + padding-top: .75rem!important; + } + :host ::ng-deep .px-1 { + padding-left: 1rem!important; + padding-right: 1rem!important; + } + :host ::ng-deep .mr-50, .mx-50 { + margin-right: .5rem!important; + margin-left: .5rem!important; + } + :host ::ng-deep .mb-50, .my-50 { + margin-bottom: .5rem!important; + } + :host ::ng-deep .dropdown-menu + { + transform: translate3d(-131px, 18px, 0px) !important; + } + :host ::ng-deep .chat-sidebar .chat-sidebar-list-wrapper { + overflow-y: scroll; + } + :host ::ng-deep .sidebar-fixed { + overflow: hidden !important; + width: 300px; + } + + :host ::ng-deep .app-content { + overflow-y: hidden !important; + } + :host ::ng-deep .pb-25, .py-25 { + padding-bottom: .25rem!important; + } + :host ::ng-deep .ml-25, .mx-25 { + margin-left: .25rem!important; + } + + :host ::ng-deep .ps--active-y > .ps__rail-y { + display: none; + } + @media(max-width:767px) { + :host ::ng-deep .content-right { + width: calc(100% - 0px) !important; + } + } + :host ::ng-deep .d-inline-block { + display: inline !important; + } + \ No newline at end of file diff --git a/src/app/content/applications/chat/chats.component.html b/src/app/content/applications/chat/chats.component.html new file mode 100644 index 0000000..0db588d --- /dev/null +++ b/src/app/content/applications/chat/chats.component.html @@ -0,0 +1,254 @@ +
+ +
+ +
+
+
+
+
+
+ +
+
+ +

Select a contact to start a chat!

+ +
+
+
+
+
+
+
+
+ + avatar + + +
+
{{headerName}}
+
+
+ + + + + + + + + + + + + + +
+
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+

{{messages.message}}

+ {{messages.date| date: 'HH:mm a'}} +
+
+
+
+
+
+
+ +
+ +
+
+
+
+ + + +
+ + chat avatar + +
{{headerName}}
+ Devloper +
+
+
+
ABOUT
+

It is a long established fact that a reader will be distracted by the readable content.

+
PERSONAL INFORMATION
+
    +
  • email@gmail.com
  • +
  • +1(789) 950-7654
  • +
+
+
+ +
+
+
+ +
+ + + diff --git a/src/app/content/applications/chat/chats.component.spec.ts b/src/app/content/applications/chat/chats.component.spec.ts new file mode 100644 index 0000000..80c9c90 --- /dev/null +++ b/src/app/content/applications/chat/chats.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ChatsComponent } from './chats.component'; + +describe('ChatComponent', () => { + let component: ChatsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ChatsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChatsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/chat/chats.component.ts b/src/app/content/applications/chat/chats.component.ts new file mode 100644 index 0000000..eea8e9b --- /dev/null +++ b/src/app/content/applications/chat/chats.component.ts @@ -0,0 +1,543 @@ +import { Component, OnInit, AfterViewInit, ViewChild, Renderer2, ViewChildren, QueryList, ElementRef } from '@angular/core'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { UserService } from '../../../../../src/app/_api/user/user.service'; +import { ChatService } from '../../../../../src/app/_api/chat/chat.service'; +import { Chats } from './chats'; +import { AppConstants } from '../../../_helpers/app.constants'; +import * as _ from 'lodash'; +@Component({ + selector: 'app-chat', + templateUrl: './chats.component.html', + styleUrls: ['./chats.component.css'] +}) + +export class ChatsComponent implements OnInit, AfterViewInit { + showicon: boolean; + name: any; + isicon: boolean; + isactive: boolean; + isSelected: boolean; + chatArray: any; + status = true; + newMessage = ''; + contactId: string; + messageInfo: any; + userInfo: any; + public displayName: boolean; + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + + @ViewChild('chatPS') public chatPS?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) + directiveRef?: PerfectScrollbarDirective; + @ViewChildren('messages') messages: QueryList; + @ViewChild('content', { static: true }) content: ElementRef; + + contactList = []; + contactChats = []; + headerName: string; + headerImage: any; + showChatInProgress = false; + createInProgress = false; + contactMaster = this.contactList; + chatListMaster = []; + temp = []; + loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + currentUserUid = this.loggedInUser.uid; + + currentUser = ''; // UID of user 1 + clickedUser = ''; // UID of user 2 + chatList = []; + displayChat = []; + chatId = ''; + senderImage = ''; + currentUserImage = ''; + loadContacts = false; + prevMsg = ''; + + + /** + * Constructor + * + * @param ApplicationApiService chatApiService; + * @param Renderer2 renderer + */ + constructor( + private renderer: Renderer2, + private userService: UserService, + private chatService: ChatService) { + } + + /** + * Scroll chat to bottom + */ + ngAfterViewInit() { + this.messages.forEach(this.scrollToBottom); + this.messages.changes.subscribe(this.scrollToBottom); + } + + getLoggedInUserChats () { + if (this.contactChats) { + const chatsWithHistory = this.contactChats.filter((item: Chats) => { + return item.chatHistory.length > 0; + }); + const loggedInUserChats = chatsWithHistory.filter(chatHistory => { + return chatHistory.name.indexOf(this.loggedInUser.uid) !== -1; + }); + return loggedInUserChats; + } + return []; + } + + /** + * OnInit + */ + ngOnInit() { + this.userService.getUsers().subscribe(users => { + let contactList = users.map(item => { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + }); + contactList = contactList.filter(element => { + return this.loggedInUser.uid !== element['uid']; + }); + this.contactMaster = contactList; + this.chatService.getChats().subscribe(chats => { + this.chatList = []; + this.contactList = []; + const chatRooms = chats.map(item => { + return { + ...item.payload.doc.data() as Chats, + id: item.payload.doc['id'] + }; + }); + this.contactChats = chatRooms; + const loggedInUserChats = this.getLoggedInUserChats(); + + const contactListMap = []; + const chatListMap = []; + + this.contactMaster.forEach(element => { + const userChat = this.isChatExistsWithUser(loggedInUserChats, element.uid); + if (userChat && !chatListMap[element.uid]) { + element['chatRoomId'] = userChat['id']; + if (userChat['chatHistory'] && userChat['chatHistory'].length > 0) { + const unreadMessages = userChat['chatHistory'].filter( history => { + return history.uid !== this.loggedInUser.uid && history.status === 'send'; + }); + if (unreadMessages.length > 0 && this.clickedUser !== element.uid) { + element['unreadMessageCount'] = unreadMessages.length; + } else { + element['unreadMessageCount'] = 0; + } + element['chatHistory'] = userChat['chatHistory']; + } + chatListMap[element.uid] = true; + this.chatList.push(element); + this.chatListMaster.push(element); + } else if (!contactListMap[element.uid]) { + contactListMap[element.uid] = true; + this.contactList.push(element); + } + }); + this.chatList = _.orderBy(this.chatList, [user => user.name.toLowerCase()], ['asc']); + this.contactList = _.orderBy(this.contactList, [user => user.name && user.name.toLowerCase()], ['asc']); + this.currentUserImage = this.loggedInUser.photoURL; + this.senderImage = this.contactList[0].image; + this.createInProgress = false; + }); + }); + + } + + isChatExistsWithUser (userChats, userId) { + for (let index = 0; index < userChats.length; index++) { + if (userChats[index].name.indexOf(userId) !== -1) { + return userChats[index]; + } + } + return false; + } + + /** + * Chat scroll to bottom + */ + scrollToBottom = () => { + try { + this.content.nativeElement.scrollTop = this.content.nativeElement.scrollHeight; + this.chatPS.directiveRef.scrollToBottom(0, 500); + } catch (err) { } + } + + /** + * Filter Chat + * + * @param event search event + */ + searchContact (event) { + const value = event.target.value.toLowerCase(); + // filter our data + let temp = this.contactMaster.filter(function (d) { + return d.name && d.name.toLowerCase().indexOf(value) !== -1 || !value; + }); + const loggedInUserChats = this.getLoggedInUserChats(); + const _self = this; + temp = temp.filter(function (user) { + return !_self.isChatExistsWithUser(loggedInUserChats, user.uid); + }); + // update the rows + this.contactList = []; + const contactListMap = []; + temp.forEach(element => { + if (!contactListMap[element.uid]) { + contactListMap[element.uid] = true; + this.contactList.push(element); + } + }); + + // filter our data + const tempChat = this.chatListMaster.filter(function (d) { + return d.name && d.name.toLowerCase().indexOf(value) !== -1 || !value; + }); + // update the rows + this.chatList = []; + const chatListMap = []; + tempChat.forEach(element => { + if (!chatListMap[element.uid]) { + chatListMap[element.uid] = true; + this.chatList.push(element); + } + }); + } + + /** + * Send message + */ + sendMessage() { + if (this.newMessage !== null && this.newMessage !== '') { + this.messageInfo = { + message: this.newMessage, + date: Date.now(), + uid: this.loggedInUser.uid, + status: 'send' + }; + if (this.chatId !== '') { + this.chatService.sendMessage(this.chatId, this.messageInfo); + } else { + this.currentUser = this.loggedInUser.uid; + const roomName = (this.currentUser < this.clickedUser ? this.currentUser + '_' + + this.clickedUser : this.clickedUser + '_' + this.currentUser); + this.userInfo = { + uid: this.loggedInUser.uid, + name: roomName, + image: this.loggedInUser.photoURL, + time: Date.now(), + showMessage: '', + badge: '', + showicon: true, + isicon: false, + isactive: 'online', + isSelected: false, + chatHistory: [] + }; + // Add message to box before sending + this.displayChat.push(this.messageInfo); + this.createInProgress = true; + this.chatService.createChatRoom(this.userInfo).then(chatRoom => { + this.chatId = chatRoom.id; + this.loadChatRoom(chatRoom.id); + this.chatService.sendMessage(this.chatId, this.messageInfo); + this.createInProgress = false; + }); + } + this.newMessage = null; + } + } + + /** + * Message send on Enter + * + * @param value New message + */ + onEnter(value: string) { + this.newMessage = value; + this.sendMessage(); + } + + /** + * Display chat when click on contact + * + * @param friendId Friend id + */ + showChat(data) { + if (this.showChatInProgress || this.createInProgress) { + return; + } + this.showChatInProgress = true; + this.currentUser = this.loggedInUser.uid; + this.currentUserImage = this.loggedInUser.photoURL; + this.clickedUser = data.uid; + this.contactId = data.id; + this.senderImage = data.image; + this.showHeaderData(); + const roomName = (this.currentUser < this.clickedUser ? this.currentUser + '_' + + this.clickedUser : this.clickedUser + '_' + this.currentUser); + + this.userInfo = { + uid: this.loggedInUser.uid, + name: roomName, + image: this.loggedInUser.photoURL, + time: Date.now(), + showMessage: '', + badge: '', + showicon: true, + isicon: false, + isactive: 'online', + isSelected: false, + chatHistory: [] + }; + + if (this.contactChats.length === 0) { + this.createAndLoadChatRoom(); + } else if (this.contactChats.length !== 0) { + let chatExists = false; + for (let i = 0; i < this.contactChats.length; i++) { + const room = this.contactChats[i].name; + if (room === roomName) { + chatExists = true; + this.chatId = this.contactChats[i].id; + break; + } + } + if (!chatExists) { + this.createAndLoadChatRoom(); + } else { + // subscribe + this.loadChatRoom(this.chatId); + this.showChatInProgress = false; + this.userInfo.isSelected = true; + } + } + } + + createAndLoadChatRoom() { + this.createInProgress = true; + this.chatService.createChatRoom(this.userInfo).then(chatRoom => { + this.chatId = chatRoom.id; + this.loadChatRoom(chatRoom.id); + }); + } + + setUserImage(chatHistory) { + for (let i = 0; i < chatHistory.length; i++) { + if (chatHistory.length > 0) { + if (i > 0) { + this.prevMsg = chatHistory[i - 1]; + } + if (i > 0 && chatHistory[i].uid === this.prevMsg['uid']) { + continue; + } + if (chatHistory[i].uid === this.loggedInUser.uid) { + chatHistory[i]['userImage'] = this.currentUserImage; + } else { + chatHistory[i]['userImage'] = this.senderImage; + } + } + } + } + + loadMyChatRoom(selectedUser) { + this.chatId = selectedUser.chatRoomId; + this.loadChatRoom(selectedUser.chatRoomId); + this.clickedUser = selectedUser.uid; + this.contactId = selectedUser.id; + this.senderImage = selectedUser.image; + this.headerName = selectedUser.name; + this.headerImage = selectedUser.image; + this.setHistoryAsRead(selectedUser, selectedUser.chatRoomId, selectedUser.chatHistory); + } + + setHistoryAsRead (selectedUser, chatRoomId, history) { + let unreadMsgExists = false; + history.forEach(element => { + if (element.uid !== this.loggedInUser.uid && element.status !== 'read') { + element.status = 'read'; + unreadMsgExists = true; + } + }); + if (unreadMsgExists) { + this.chatService.updateChatStatus(chatRoomId, history).then(result => { + delete selectedUser.unreadMessageCount; + }); + } + } + + loadChatRoom(chatRoomId) { + this.chatService.showChat(chatRoomId).subscribe(res => { + if (chatRoomId === this.chatId) { + this.setUserImage(res.chatHistory); + this.displayChat = res['chatHistory']; + this.chatId = res['chatId']; + } + this.showChatInProgress = false; + this.scrollToBottom(); + }); + } + + showDefaultChat() { + this.currentUser = this.loggedInUser.uid; + const roomName = (this.currentUser < this.clickedUser ? this.currentUser + '_' + + this.clickedUser : this.clickedUser + '_' + this.currentUser); + for (let j = 0; j < this.contactChats.length; j++) { + if (this.contactChats[j].name === roomName) { + if (this.contactChats[j].chatHistory && this.contactChats[j].chatHistory.length > 0) { + this.displayChat = this.contactChats[j].chatHistory; + this.setUserImage(this.contactChats[j].chatHistory); + } + this.chatId = this.contactChats[j].id; + } + } + } + + showLastMessage() { + for (let i = 0; i < this.contactList.length; i++) { + if (this.contactList[i]) { + for (let j = 0; j < this.contactChats.length; j++) { + const room = this.contactChats[j].name; + const index = room.indexOf(this.contactList[i].uid); + const currentUser = this.loggedInUser.uid; + const userUid = this.contactList[i].uid; + const roomName = (currentUser < userUid ? currentUser + '_' + + userUid : userUid + '_' + currentUser); + if (index >= 0) { + if (this.contactChats[j].chatHistory.length > 0 && roomName === room) { + this.contactList[i]['lastmsg'] = this.contactChats[j].chatHistory[this.contactChats[j].chatHistory.length - 1].message; + this.contactList[i]['isActive'] = this.contactChats[j].isactive; + this.contactList[i]['icon'] = this.contactChats[j].isicon; + this.contactList[i]['showicon'] = this.contactChats[j].showicon; + this.contactList[i]['lastmsgTime'] = this.contactChats[j].chatHistory[this.contactChats[j].chatHistory.length - 1].date; + } + } + } + } + } + } + + + /** + * Overlay add/remove fuction in responsive + * + * @param event Overlay click event + */ + + contentOverlay(event) { + const toggleIcon = document.getElementById('chat-overlay1'); + const toggle = document.getElementById('chat-area d-none'); + if (event.currentTarget.className === 'chatSidebar ng-star-inserted') { + this.renderer.addClass(toggleIcon, 'd-none'); + this.renderer.removeClass(toggle, 'd-none'); + } + } + /** + * Show add/remove class at open profile + * + * @param event Overlay click event + */ + showProfile(event) { + const toggleIcon = document.getElementById('user-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-sidebar-profile-toggle') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.addClass(toggle, 'show'); + } else if (event.currentTarget.className === 'chat-profile-close') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } +} + /** + * Show add/remove function in responsive + * + * @param event Overlay click event + */ + Sidebar(event) { + const toggleChat = document.getElementById('sidebar-card'); + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-sidebar-close' || 'chat-overlay') { + this.renderer.removeClass(toggle, 'show'); + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggleChat, 'show'); + } + } + /** + * Show add/remove function in responsive + * + * @param event Overlay click event + */ + showSidebar(event) { + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + const toggleIcon = document.getElementById('sidebar-card'); + const toggle = document.getElementById('overlayChat'); + const toggleChat = document.getElementById('sidebar-left'); + if (event.currentTarget.className === 'ficon feather ft-message-square chat-sidebar-toggle chat-start-icon font-large-3 p-3 mb-1' || + 'ficon feather ft-align-justify font-large-1 cursor-pointer') { + this.renderer.addClass(toggle, 'show'); + this.renderer.addClass(toggleIcon, 'show'); + } + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.renderer.removeClass(toggleChat, 'sidebar-fixed'); + } + } + } + // FixChat() { + // const toggleIcon = document.getElementById('sidebar-left'); + // if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + // this.renderer.removeClass(toggleIcon, 'sidebar-fixed'); + // } + // } + chatFavorite(event) { + const chatIcon = document.getElementById('chat-icon'); + if (event.currentTarget.className === 'chat-icon-favorite') { + this.renderer.addClass(chatIcon, 'warning'); + } else if (event.currentTarget.className === 'chat-icon-favorite warning') { + this.renderer.removeClass(chatIcon, 'warning'); + } + } + + showHeaderData() { + this.contactList.forEach(element => { + if (this.clickedUser === element['uid']) { + this.headerName = element.name; + this.headerImage = element.image; + } + }); + } + /** + * Show add/remove function + * + * @param event Overlay click event + */ + ShowChatProfile(event) { + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'avatar chat-profile-toggle m-0 mr-1') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.addClass(toggle, 'show'); + } + } + /** + * Show add/remove function + * + * @param event Overlay click event + */ + ChatProfile(event) { + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-profile-close') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } + } + +} diff --git a/src/app/content/applications/chat/chats.module.spec.ts b/src/app/content/applications/chat/chats.module.spec.ts new file mode 100644 index 0000000..f26eceb --- /dev/null +++ b/src/app/content/applications/chat/chats.module.spec.ts @@ -0,0 +1,13 @@ +import { ChatsModule } from './chats.module'; + +describe('ChatModule', () => { + let chatsModule: ChatsModule; + + beforeEach(() => { + chatsModule = new ChatsModule(); + }); + + it('should create an instance', () => { + expect(chatsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/chat/chats.module.ts b/src/app/content/applications/chat/chats.module.ts new file mode 100644 index 0000000..acb8328 --- /dev/null +++ b/src/app/content/applications/chat/chats.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ChatsComponent } from './chats.component'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { ChatService } from 'src/app/_api/chat/chat.service'; +import { StaticChatComponent } from './static-chat/static-chat.component'; +import { ApplicationApiService } from 'src/app/_services/application-api.service'; +import { ToastrModule } from 'ngx-toastr'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +@NgModule({ + imports: [ + CommonModule, + FormsModule, + NgbModule, + ToastrModule.forRoot(), + PerfectScrollbarModule, + RouterModule.forChild([ + { + path: '', + component: ChatsComponent + }, + { + path: 'static-chat', + component: StaticChatComponent + } + ]) + ], + declarations: [ChatsComponent, StaticChatComponent], + providers: [ChatService, ApplicationApiService] +}) +export class ChatsModule { } diff --git a/src/app/content/applications/chat/chats.ts b/src/app/content/applications/chat/chats.ts new file mode 100644 index 0000000..c8209f2 --- /dev/null +++ b/src/app/content/applications/chat/chats.ts @@ -0,0 +1,20 @@ +export class Chats { + uid: string; + senderUid: string; + name: string; + image: string; + time: Date; + showMessage: String; + badge: String; + showicon: boolean; + isicon: boolean; + isactive: boolean; + isSelected: boolean; + chatHistory: Array; +} + +export class ChatHistory { + date: Date; + message: string; + uid: string; +} diff --git a/src/app/content/applications/chat/static-chat/Untitled-2.txt b/src/app/content/applications/chat/static-chat/Untitled-2.txt new file mode 100644 index 0000000..060d1b4 --- /dev/null +++ b/src/app/content/applications/chat/static-chat/Untitled-2.txt @@ -0,0 +1,86 @@ +
+ +
+
+
+
+
+
+
+
+ avatar + +
+
Elizabeth Elliott
+
+
+ + + + + + + Pin to top + Delete chat + Block + + +
+
+
+
+
+
+
+
+
+
+
+ +
Chat History
+
+
+
+ + + +
+
+
+

{{messages.message}}

+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/src/app/content/applications/chat/static-chat/static-chat.component.css b/src/app/content/applications/chat/static-chat/static-chat.component.css new file mode 100644 index 0000000..953ff16 --- /dev/null +++ b/src/app/content/applications/chat/static-chat/static-chat.component.css @@ -0,0 +1,66 @@ + + :host ::ng-deep .content-right { + width: calc(100% - 300px) !important; +} + :host ::ng-deep .mx-75 { + margin-left: .75rem!important; + margin-right: .75rem!important; +} +:host ::ng-deep .py-75 { + padding-bottom: .75rem!important; + padding-top: .75rem!important; +} +:host ::ng-deep .px-1 { + padding-left: 1rem!important; + padding-right: 1rem!important; +} +:host ::ng-deep .mr-50, .mx-50 { + margin-right: .5rem!important; + margin-left: .5rem!important; +} +:host ::ng-deep .mb-50, .my-50 { + margin-bottom: .5rem!important; +} +:host ::ng-deep .dropdown-menu +{ + transform: translate3d(-131px, 18px, 0px) !important; +} +:host ::ng-deep .chat-sidebar .chat-sidebar-list-wrapper { + overflow-y: scroll; +} +:host ::ng-deep .sidebar-fixed { + overflow: hidden !important; + width: 300px; +} + +:host ::ng-deep .app-content { + overflow-y: hidden !important; +} +:host ::ng-deep .pb-25, .py-25 { + padding-bottom: .25rem!important; +} +:host ::ng-deep .ml-25, .mx-25 { + margin-left: .25rem!important; +} +@media(max-width:767px) { + :host ::ng-deep .chat-footer + { + position: relative !important; + bottom: 17px !important; + } +} +@media(max-width:767px) { + :host ::ng-deep .chat-wrapper + { + background-color: unset !important; + } +} + +@media(max-width:767px) { + :host ::ng-deep .content-right { + width: calc(100% - 0px) !important; + } +} +:host ::ng-deep .d-inline-block { + display: inline !important; +} diff --git a/src/app/content/applications/chat/static-chat/static-chat.component.html b/src/app/content/applications/chat/static-chat/static-chat.component.html new file mode 100644 index 0000000..70d5dda --- /dev/null +++ b/src/app/content/applications/chat/static-chat/static-chat.component.html @@ -0,0 +1,239 @@ +
+ +
+ +
+
+
+
+
+
+ +
+
+ +

Select a contact to start a chat!

+ +
+
+
+
+
+
+
+
+ + avatar + + +
+
{{chats.senderName}}
+
+
+ + + + + + + + +
+
+
+ +
+
+
+
+
+
+ + + +
+
+
+

{{messages.message}}

+ {{messages.time}} +
+
+
+ +
+
+
+ +
+ +
+
+
+
+ + + +
+ + chat avatar + +
{{chats.senderName}}
+ Devloper +
+
+
+
ABOUT
+

It is a long established fact that a reader will be distracted by the readable content.

+
PERSONAL INFORMATION
+
    +
  • email@gmail.com
  • +
  • +1(789) 950-7654
  • +
+
+
+ +
+
+
+ +
+ + + \ No newline at end of file diff --git a/src/app/content/applications/chat/static-chat/static-chat.component.spec.ts b/src/app/content/applications/chat/static-chat/static-chat.component.spec.ts new file mode 100644 index 0000000..6768f7d --- /dev/null +++ b/src/app/content/applications/chat/static-chat/static-chat.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { StaticChatComponent } from './static-chat.component'; + +describe('StaticChatComponent', () => { + let component: StaticChatComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ StaticChatComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StaticChatComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/chat/static-chat/static-chat.component.ts b/src/app/content/applications/chat/static-chat/static-chat.component.ts new file mode 100644 index 0000000..f988529 --- /dev/null +++ b/src/app/content/applications/chat/static-chat/static-chat.component.ts @@ -0,0 +1,431 @@ +import { + Component, OnInit, AfterViewInit, ViewChild, Renderer2, + ViewChildren, QueryList, ElementRef +} from '@angular/core'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { ApplicationApiService } from '../../../../../../src/app/_services/application-api.service'; +import { ToastrService } from 'ngx-toastr'; +import { AppConstants } from '../../../../_helpers/app.constants'; +/** + * ChatHistory class + */ +class ChatHistory { + constructor( + public message: string[], + public sender: number, + public senderImage: string, + public senderName: string, + public time: string + ) { } +} +class ChatHeader { + constructor( + public senderImage: string, + public senderName: string + ) { } +} +class ContactHeader { + constructor( + public senderImage: string, + public senderName: string + ) { } +} + + +/** + * Chats class + */ +class Chats { + constructor( + public friendId: number, + public name: string, + public image: string, + public showMessage: string, + public _ChatHistory: Array, + public chatHeader: Array, + public isSelected: false + ) { } +} +/** + * Contact class + */ +class Contact { + constructor( + public friendId: number, + public name: string, + public image: string, + public showMessage: string, + public isSelected: false, + public contactHeader: Array, + ) {} + } +@Component({ + selector: 'app-static-chat', + templateUrl: './static-chat.component.html', + styleUrls: ['./static-chat.component.css'] +}) +export class StaticChatComponent implements OnInit, AfterViewInit { + showicon: boolean; + isicon: boolean; + isactive: boolean; + isSelected: boolean; + chatArray: any; + headerArray: any; + status = true; + public contactChat = []; + public headerChat = []; + public Contact = []; + newMessage = ''; + newMessageArray = []; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false }; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + @ViewChildren('messages') messages: QueryList; + @ViewChild('content', { static: true }) content: ElementRef; + + chatsList: any[] = []; + contactList: any[] = []; + temp = []; + temp2 = this.chatsList; + temp3 = this.contactList; + ContactHeader: any[] = []; + + /** + * Constructor + * + * @param ApplicationApiService chatApiService; + * @param Renderer2 renderer + */ + constructor( + private chatApiService: ApplicationApiService, + private renderer: Renderer2, + private toastr: ToastrService) { + this.headerArray = this.chatApiService.getChatContactData().subscribe(Response => { + this.headerArray = Response; + }); + } + + /** + * Scroll chat to bottom + */ + ngAfterViewInit() { + this.messages.forEach(this.scrollToBottom); + this.messages.changes.subscribe(this.scrollToBottom); + } + + /** + * OnInit + */ + ngOnInit() { + this.toastr.clear(); + this.toastr.warning('', 'Please login through a personal account to experience the Live chat. We have it disabled for demo account.', + { timeOut: 5000, disableTimeOut: true, closeButton: true }); + this.chatArray = this.chatApiService.getChatsData().subscribe(Response => { + this.chatArray = Response; + this.contactChat = this.chatArray[2].ChatHistory; + this.chatsList.push( + new Chats( + 2, + 'Kristopher Candy', + '../../../assets/images/portrait/small/avatar-s-7.png', + + ' Thank you', + + this.chatArray[1].ChatHistory, + this.chatArray[1].chatHeader, + false + ) + ); + this.chatsList.push( + new Chats( + 3, + 'Sarah Woods', + '../../../assets/images/portrait/small/avatar-s-8.png', + + ' Hello krish!', + + this.chatArray[2].ChatHistory, + this.chatArray[2].chatHeader, + false + ) + ); + this.contactList.push( + new Contact( + 1, + 'Kristopher Candy', + '../../../assets/images/portrait/small/avatar-s-9.png', + 'lemon drops', + false, + this.headerArray[0].contactHeader, + ) + ); + this.contactList.push( + new Contact( + 2, + 'Jenny Perich', + '../../../assets/images/portrait/small/avatar-s-10.png', + 'candy canes', + false, + this.headerArray[1].contactHeader, + ) + ); + this.contactList.push( + new Contact( + 3, + 'Rock Montgomery', + '../../../assets/images/portrait/small/avatar-s-11.png', + 'powder gum', + false, + this.headerArray[2].contactHeader, + ) + ); + this.contactList.push( + new Contact( + 4, + 'Heather Howell', + '../../../assets/images/portrait/small/avatar-s-12.png', + 'cheesecake toffee', + false, + this.headerArray[3].contactHeader, + ) + ); + }); + } + + /** + * Chat scroll to bottom + */ + scrollToBottom = () => { + try { + this.content.nativeElement.scrollTop = this.content.nativeElement.scrollHeight; + } catch (err) { } + } + + /** + * Filter Chat + * + * @param event search event + */ + updateFilter(event) { + const value = event.target.value.toLowerCase(); + this.chatsList = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.chatsList]; + // filter our data + const temp = this.chatsList.filter(function (d) { + return d.name.toLowerCase().indexOf(value) !== -1 || !value; + }); + // update the rows + this.chatsList = temp; + // Whenever the filter changes, always go back to the first page + } + updateFilter1(event) { + const value = event.target.value.toLowerCase(); + this.contactList = [...this.temp3]; // and here you have to initialize it with your data + this.temp = [...this.contactList]; + // filter our data + const temp = this.contactList.filter(function (d) { + return d.name.toLowerCase().indexOf(value) !== -1 || !value; + }); + // update the rows + this.contactList = temp; + // Whenever the filter changes, always go back to the first page + } + /** + * Send message + */ + sendMessage() { + if (this.newMessage !== null && this.newMessage !== '') { + this.contactChat.push({ + message: [this.newMessage], + sender: 0, + senderImage: '', + time: '3:35AM', + }); + this.newMessage = null; + } + } + + /** + * Message send on Enter + * + * @param value New message + */ + onEnter(value: string) { + this.newMessage = value; + if (this.newMessage !== null && this.newMessage !== '') { + this.contactChat.push({ + message: [this.newMessage], + sender: 0, + senderImage: '', + time: '3:35AM' + }); + this.newMessage = null; + } + } + + /** + * Display chat when click on contact + * + * @param friendId Friend id + */ + showChat(friendId, number) { + this.contactChat = []; + if (number === 1) { + for (let i = 0; i < this.chatsList.length; i++) { + if (friendId !== this.chatsList[i].friendId) { + this.chatsList[i].isSelected = false; + } + if (friendId === this.chatsList[i].friendId) { + this.chatsList[i].isSelected = true; + } + } + for (let i = 0; i < this.contactList.length; i++) { + this.contactList[i].isSelected = false; + } + + for (const friend of this.chatsList) { + if (friend.friendId === friendId) { + this.contactChat = this.chatArray[friendId - 1].ChatHistory; + this.headerChat = this.chatArray[friendId - 1].chatHeader; + break; + } + } + + } else if (number === 2) { + for (let i = 0; i < this.contactList.length; i++) { + if (friendId !== this.contactList[i].friendId) { + this.contactList[i].isSelected = false; + } + if (friendId === this.contactList[i].friendId) { + this.contactList[i].isSelected = true; + } + } + for (let i = 0; i < this.chatsList.length; i++) { + this.chatsList[i].isSelected = false; + } + this.contactChat = []; + this.headerChat = this.headerArray[friendId - 1].contactHeader; + } + } + + + + + /** + * Overlay add/remove fuction in responsive + * + * @param event Overlay click event + */ + contentOverlay(event) { + const toggleIcon = document.getElementById('chat-overlay1'); + const toggle = document.getElementById('chat-area d-none'); + if (event.currentTarget.className === 'chatSidebar ng-star-inserted') { + this.renderer.addClass(toggleIcon, 'd-none'); + this.renderer.removeClass(toggle, 'd-none'); + } + } + /** + * Warning add/remove class + * + * @param event click event + */ + chatFavorite(event) { + const chatIcon = document.getElementById('chat-icon'); + if (event.currentTarget.className === 'chat-icon-favorite') { + this.renderer.addClass(chatIcon, 'warning'); + } else if (event.currentTarget.className === 'chat-icon-favorite warning') { + this.renderer.removeClass(chatIcon, 'warning'); + } + } + showContact(friendId) { + this.contactChat = []; + for (let i = 0; i < this.contactList.length; i++) { + if (friendId !== this.contactList[i].friendId) { + this.contactList[i].isSelected = false; + } + if (friendId === this.contactList[i].friendId) { + this.contactList[i].isSelected = true; + } + } + } + /** + * Show add/remove class at open profile + * + * @param event Overlay click event + */ + showProfile(event) { + const toggleIcon = document.getElementById('user-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-sidebar-profile-toggle') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.addClass(toggle, 'show'); + } else if (event.currentTarget.className === 'chat-profile-close') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } + } + /** + * Show add/remove function in responsive + * + * @param event Overlay click event + */ + showSidebar(event) { + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + const toggleIcon = document.getElementById('sidebar-card'); + const toggle = document.getElementById('overlayChat'); + const toggleChat = document.getElementById('sidebar-left'); + if (event.currentTarget.className === 'ficon feather ft-message-square chat-sidebar-toggle chat-start-icon font-large-3 p-3 mb-1' || + 'ficon feather ft-align-justify font-large-1 cursor-pointer') { + this.renderer.addClass(toggle, 'show'); + this.renderer.addClass(toggleIcon, 'show'); + } + if (window.innerWidth < AppConstants.MOBILE_RESPONSIVE_WIDTH) { + this.renderer.removeClass(toggleChat, 'sidebar-fixed'); + } + } + } + /** + * Show add/remove function in responsive + * + * @param event Overlay click event + */ + Sidebar(event) { + const toggleChat = document.getElementById('sidebar-card'); + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-sidebar-close' || 'chat-overlay show') { + this.renderer.removeClass(toggle, 'show'); + this.renderer.removeClass(toggleChat, 'show'); + this.renderer.removeClass(toggleIcon, 'show'); + } + } + /** + * Show add/remove function + * + * @param event Overlay click event + */ + ShowChatProfile(event) { + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'avatar chat-profile-toggle m-0 mr-1') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.addClass(toggle, 'show'); + } + } + /** + * Show add/remove function + * + * @param event Overlay click event + */ + ChatProfile(event) { + const toggleIcon = document.getElementById('chat-profile'); + const toggle = document.getElementById('overlayChat'); + if (event.currentTarget.className === 'chat-profile-close') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } + } +} diff --git a/src/app/content/applications/chat/static-chat/static.txt b/src/app/content/applications/chat/static-chat/static.txt new file mode 100644 index 0000000..4eec985 --- /dev/null +++ b/src/app/content/applications/chat/static-chat/static.txt @@ -0,0 +1,89 @@ +
+ +
+
+
+
+
+
+ +
Chat History
+
+
+
+ + + +
+
+
+

{{messages.message}}

+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+ diff --git a/src/app/content/applications/contacts/contacts.component.css b/src/app/content/applications/contacts/contacts.component.css new file mode 100644 index 0000000..6f8e13d --- /dev/null +++ b/src/app/content/applications/contacts/contacts.component.css @@ -0,0 +1,374 @@ +.custom-file { + width: 440px; + margin-left: 15px; +} + +.dropdown { + position: relative !important; + margin-left: 0px !important; +} + +.dropdown-toggle::after { + content: none !important; +} + +.favoriteChange:hover { + background: url("../../../../assets/images/raty/star-on.png"); +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; + overflow: inherit; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-weight: bold; + line-height: 24px; + font-size: medium; + color: #6b6f82; +} + +:host ::ng-deep .cotnblck img { + vertical-align: middle +} + +@media only screen and (max-width: 767px) { + :horizontal.app-contacts .sidebar-left.show { + margin-left: 0rem !important; + } +} + +:host ::ng-deep .heading-elements .gap_contact { + margin-right: 0.2rem; +} + +:host ::ng-deep .image-name-space { + margin-right: 8px; +} + +:host ::ng-deep .datatable-row-center, +:host ::ng-deep .datatable-header-inner, +:host ::ng-deep .datatable-row-wrapper, +:host ::ng-deep .datatable-body-row.datatable-row-even, +:host ::ng-deep .datatable-scroll, +:host ::ng-deep .datatable-body-row.datatable-row-odd, +:host ::ng-deep .datatable-footer, +:host ::ng-deep .datatable-footer-inner { + width: 100% !important; +} + +:host ::ng-deep .datatable-body-cell-label, +:host ::ng-deep .datatable-header-cell { + padding: 0.6rem; +} + +:host ::ng-deep .datatable-body-row { + padding: 0 !important +} + +:host ::ng-deep .mrless { + margin-right: 0.4rem !important +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit; +} + +:host ::ng-deep .ngx-datatable.bootstrap { + font-size: 14px; +} + +:host ::ng-deep .datatable-header-cell { + font-size: 13px +} + +@media(max-width:767px) { + + :host ::ng-deep .page-count, + :host ::ng-deep .datatable-pager { + flex: 1 1 100% !important + } +} + +:host ::ng-deep .my-custom-cell { + padding: 0.1rem 1.4rem !important; +} + +:host ::ng-deep .ngx-datatable .datatable-body-cell, +.ngx-datatable .datatable-header-cell { + + line-height: 3.625; +} + +:host ::ng-deep .avatar i { + position: absolute; + right: -2px; + bottom: 5px; + width: 10px; + height: 10px; + border: 2px solid white; + border-radius: 100%; +} + +:host ::ng-deep .icon { + right: 0px; + left: 26px; + bottom: -1px !important; + width: 10px; + height: 10px; + border: 0px !important; + border: 2px solid white !important; + +} + +@media only screen and (max-width: 767px) { + .custom-file { + margin-left: 15px !important; + margin-right: 15px !important; + width: 282px !important; + } +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-body .datatable-body-row.datatable-row-even { + background-color: rgba(0, 0, 0, 0); +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-body .datatable-body-row { + border-top: none !important; + border-bottom: 1px solid #e3ebf3; +} + +.avatar { + margin-right: 15px; +} + +.dropdown-toggle::after { + font-family: 'LineAwesome'; + font-size: .8rem; + position: relative; + top: 0; + right: 0; + margin: 0 .3em 0 0; + padding: 0 2px 0 6px; + content: '\f110' !important; + vertical-align: 0; + border: none !important; +} + +.pr-1, +.px-1 { + padding-right: 0rem !important; +} + +:host ::ng-deep .ngx-datatable .datatable-body .datatable-body-row>div { + color: #6b6f82 !important; +} + +:host ::ng-deep .close:not(:disabled):not(.disabled):hover, +.close:not(:disabled):not(.disabled):focus { + outline: none !important; +} + +.datatable-header-cell-template-wrap { + padding-top: 1rem !important; +} + +._center { + padding-top: 1rem !important; +} + +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} + +:host ::ng-deep .empty-row { + padding-left: 1rem !important; +} + +:host ::ng-deep .dropdown .dropdown-menu .space, +:host ::ng-deep .dropup .dropdown-menu .space { + padding: 10px 20px !important; + height: 38px; + line-height: 1.625; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-body .datatable-body-row .datatable-body-cell { + padding: 0rem; + overflow-y: visible !important; + overflow-x: visible !important; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager { + padding: 0px 25px; +} + +:host ::ng-deep .contacts-table{ + padding-top: 30px; + padding-bottom: 35px; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + text-align: left !important; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-body .datatable-body-row.active { + background-color: #FFF !important; +} +:host ::ng-deep .content-right { + width: calc(100% - -30px) !important; +} + +::ng-deep ngb-modal-backdrop { + z-index: 1050 !important; +} \ No newline at end of file diff --git a/src/app/content/applications/contacts/contacts.component.html b/src/app/content/applications/contacts/contacts.component.html new file mode 100644 index 0000000..8bbb3a6 --- /dev/null +++ b/src/app/content/applications/contacts/contacts.component.html @@ -0,0 +1,309 @@ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+

All Contacts

+
+ + + +
+ + + +
+
+ +
+
+
+
+
+ +
+
+ + + Search : + +
+
+ + + + + + + + + + +
+ + +
+
+
+ + + + {{row.name}} + + + + + {{row.email}} + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ + + +
+
diff --git a/src/app/content/applications/contacts/contacts.component.spec.ts b/src/app/content/applications/contacts/contacts.component.spec.ts new file mode 100644 index 0000000..905e614 --- /dev/null +++ b/src/app/content/applications/contacts/contacts.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ContactsComponent } from './contacts.component'; + +describe('ContactsComponent', () => { + let component: ContactsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ContactsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContactsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/contacts/contacts.component.ts b/src/app/content/applications/contacts/contacts.component.ts new file mode 100644 index 0000000..9ffd7c2 --- /dev/null +++ b/src/app/content/applications/contacts/contacts.component.ts @@ -0,0 +1,350 @@ +import { Component, OnInit, ViewChild, EventEmitter, Output, Renderer2 } from '@angular/core'; +import { NgForm } from '@angular/forms'; +import { DatatableComponent } from '@swimlane/ngx-datatable'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; + +class Contact { + constructor( + public id: number, + public name: string, + public email: string, + public phone: string, + public image: any, + public isFavorite: boolean, + public isActive: string + ) { } +} + +@Component({ + selector: 'app-contacts', + templateUrl: './contacts.component.html', + styleUrls: ['./contacts.component.css'] +}) +export class ContactsComponent implements OnInit { + columns: any = []; + contactName: any; + contactEmail: any; + contactPhone: any; + contactImage: any; + contactFavorite: boolean; + contactactive: string; + rows: any[] = []; + name = 'Angular'; + public imagePath; + imgURL: any; + selectedContact: any; + contactFlag: boolean; + addContact: any; + placement = 'bottom-right'; + imagepathdefault: any; + addModal = null; + editModal = null; + value: any; + loadingIndicator: true; + selected = []; + temp = []; + temp2 = this.rows; + + public config: PerfectScrollbarConfigInterface = { }; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective) directiveRef?: PerfectScrollbarDirective; + + @Output() closeModalEvent = new EventEmitter(); + @ViewChild(DatatableComponent, { static: true }) table: DatatableComponent; + + /** + * Constructor + * + * @param NgbModal modal; + * @param Renderer2 _renderer + */ + constructor( + private modal: NgbModal, + private _renderer: Renderer2 + ) { } + + /** + * OnInit + */ + ngOnInit() { + this.rows.push(new Contact(1, 'Scott Marsh', 'scott@gmail.com', '(954)-654-5641', + '../../../assets/images/portrait/small/avatar-s-5.png', false, 'online')); + this.rows.push(new Contact(2, 'Russell Bry', 'russell@gmail.com', '(235)-654-5642', + '../../../assets/images/portrait/small/avatar-s-3.png', false, 'busy')); + this.rows.push(new Contact(3, 'james john', 'john@gmail.com', '(125)-654-5643', + '../../../assets/images/portrait/small/avatar-s-1.png', true, 'away')); + this.rows.push(new Contact(4, 'Cynth Tuck', 'tuck@gmail.com', '(974)-654-5644', + '../../../assets/images/portrait/small/avatar-s-4.png', false, 'busy')); + this.rows.push(new Contact(5, 'Margi Govan', 'govan@gmail.com', '(954)-654-5645', + '../../../assets/images/portrait/small/avatar-s-6.png', true, 'online')); + this.rows.push(new Contact(6, 'Eugene Wood', 'wood@gmail.com', '(987)-654-5646', + '../../../assets/images/portrait/small/avatar-s-9.png', false, 'busy')); + this.rows.push(new Contact(7, 'Eric Marshall', 'eric@gmail.com', '(545)-654-5647', + '../../../assets/images/portrait/small/avatar-s-7.png', false, 'online')); + } + + /** + * Add new contact + * + * @param addTableDataModalContent Id of the add contact modal; + */ + addTableDataModal(addTableDataModalContent) { + this.addModal = this.modal.open(addTableDataModalContent, { + windowClass: 'animated fadeInDown' + }); + this.contactFlag = true; + } + + /** + * Edit selected contact row. + * + * @param editTableDataModalContent Id of the edit contact model. + * @param row The row which needs to be edited. + */ + editTableDataModal(editTableDataModalContent, row) { + this.selectedContact = Object.assign({}, row); + this.editModal = this.modal.open(editTableDataModalContent, { + windowClass: 'animated fadeInDown' + }); + this.contactFlag = false; + } + + /** + * Selected contact + * + * @param selected Selected contact; + */ + onSelectContact({ selected }) { + this.selected.splice(0, this.selected.length); + this.selected.push(...selected); + } + + /** + * Search contact from contact table + * + * @param event Convert value uppercase to lowercase; + */ + updateFilter(event) { + const val = event.target.value.toLowerCase(); + this.rows = [...this.temp2]; + this.temp = [...this.rows]; + const temp = this.rows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + this.rows = temp; + this.table.offset = 0; + } + + /** + * Choose contact image + * + * @param event Select contact image; + */ + preview(event) { + const reader = new FileReader(); + reader.onload = (e: any) => { + this.contactImage = e.target.result; + }; + reader.readAsDataURL(event.target.files[0]); + } + + /** + * Delete contact row + * @param row Selected row for delete contact + */ + deleteRow(row) { + let index = 0; + const temp = [...this.rows]; + for (const tempRow of temp) { + if (tempRow.id === row.id) { + temp.splice(index, 1); + break; + } + index++; + } + this.rows = temp; + } + + /** + * Update contact details + * + * @param editForm Edit form for values check + * @param id Id match to the selected row Id + */ + onUpdate(editForm: NgForm, id) { + for (const row of this.rows) { + if (row.id === id && editForm.valid === true) { + row.name = this.selectedContact['name']; + row.email = this.selectedContact['email']; + row.phone = this.selectedContact['phone']; + this.editModal.close(editForm.resetForm); + break; + } + } + } + + /** + * Contact changed to favorite or non-favorite + * + * @param row Row of the favorite contact + */ + favoriteChange(row) { + if (row.isFavorite) { + row.isFavorite = row.isFavorite ? false : true; + } else { + row.isFavorite = true; + } + } + + /** + * Delete selected contact + */ + deleteCheckedRow() { + let index = 0; + const removedIndex = []; + const temp = [...this.rows]; + for (const row of temp) { + for (const selectedRow of this.selected) { + if (row.id === selectedRow.id) { + removedIndex.push(index); + } + } + index++; + } + for (let i = removedIndex.length - 1; i >= 0; i--) { + temp.splice(removedIndex[i], 1); + } + this.rows = temp; + this.selected = []; + } + + /** + * favorite set when add contact + * + * @param event favorite set on click event + */ + addFavoriteImage(event) { + if (event.target.checked === true) { + this.contactFavorite = true; + } else { + this.contactFavorite = false; + } + } + + /** + * New contact add to the table + * + * @param addForm Add contact form + */ + addNewContact(addForm: NgForm) { + if (this.contactImage == null) { + this.contactImage = '../../../assets/images/portrait/small/default.png'; + } else { + this.contactImage = this.contactImage; + } + + if (this.contactactive === undefined) { + this.contactactive = 'away'; + } else { + this.contactactive = this.contactactive; + } + + /** + * Add contact if valid addform value + */ + if (addForm.valid === true) { + this.rows.push( + new Contact( + this.rows.length + 1, + this.contactName, + this.contactEmail, + this.contactPhone, + this.contactImage, + this.contactFavorite, + this.contactactive + ) + ); + this.rows = [...this.rows]; + addForm.reset(); + this.addModal.close(addForm.resetForm); + } + } + + /** + * Set the phone number format + */ + onFormat() { + if (this.contactFlag === true) { + this.value = this.contactPhone; + } else if (this.contactFlag === false) { + this.value = this.selectedContact['phone']; + } + + let country, city, number; + + switch (this.value.length) { + case 6: + country = 1; + city = this.value.slice(0, 3); + number = this.value.slice(3); + break; + + case 7: + country = this.value[0]; + city = this.value.slice(1, 4); + number = this.value.slice(4); + break; + + case 8: + country = this.value.slice(0, 3); + city = this.value.slice(3, 5); + number = this.value.slice(5); + break; + + default: + return this.value; + } + if (country === 1) { + country = ''; + } + + number = number.slice(0, 3) + '-' + number.slice(3); + + const no = '(' + city + ')' + '-' + number; + if (this.contactFlag === true) { + this.contactPhone = no; + } else if (this.contactFlag === false) { + this.selectedContact['phone'] = no; + } + } + + /** + * Sidebar open/close in responsive + * + * @param event Sidebar open/close + */ + sidebar(event) { + const toggleIcon = document.getElementById('sidebar-left'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'sidebar-toggle d-block d-lg-none') { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + } + } + + /** + * Overlay add/remove fuction in responsive + * + * @param event Overlay click event + */ + contentOverlay(event) { + const toggleIcon = document.getElementById('sidebar-left'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'content-overlay show') { + this._renderer.removeClass(toggleIcon, 'show'); + this._renderer.removeClass(toggle, 'show'); + } + } +} diff --git a/src/app/content/applications/contacts/contacts.module.spec.ts b/src/app/content/applications/contacts/contacts.module.spec.ts new file mode 100644 index 0000000..d2c2450 --- /dev/null +++ b/src/app/content/applications/contacts/contacts.module.spec.ts @@ -0,0 +1,13 @@ +import { ContactsModule } from './contacts.module'; + +describe('ContactsModule', () => { + let contactsModule: ContactsModule; + + beforeEach(() => { + contactsModule = new ContactsModule(); + }); + + it('should create an instance', () => { + expect(contactsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/contacts/contacts.module.ts b/src/app/content/applications/contacts/contacts.module.ts new file mode 100644 index 0000000..052937f --- /dev/null +++ b/src/app/content/applications/contacts/contacts.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ContactsComponent } from './contacts.component'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + imports: [ + CommonModule, + NgxDatatableModule, + BreadcrumbModule, + FormsModule, + NgbModule, + PerfectScrollbarModule, + RouterModule.forChild([ + { + path: '', + component: ContactsComponent + } + ]) + ], + declarations: [ContactsComponent], + exports: [RouterModule] +}) +export class ContactsModule { } diff --git a/src/app/content/applications/email/email.component.css b/src/app/content/applications/email/email.component.css new file mode 100644 index 0000000..76ee778 --- /dev/null +++ b/src/app/content/applications/email/email.component.css @@ -0,0 +1,169 @@ +:host ::ng-deep .mr-50, .mx-50 { + margin-right: .5rem!important; +} +:host ::ng-deep .mr-25, .mx-25 { + margin-right: .25rem!important; +} +:host ::ng-deep .pr-50, .px-50 { + padding-right: .5rem!important; +} +:host ::ng-deep .content-right .email-app-list-wrapper .email-app-list .email-user-list .users-list-wrapper li { + border-top: 1px solid #E4E5EC !important; +} +:host ::ng-deep .app-content .content-right { + width: calc(100% - 300px) !important; + background-color: #fff; +} +@media (max-width: 768px){ + .app-content .content-right { + width: calc(100% - 0px) !important; + background-color: #fff; + } +} +:host ::ng-deep .ps__thumb-y { + background-color: #aaa; + border-radius: 6px; + position: absolute; +} +:host ::ng-deep .content-right .email-app-details .email-scroll-area { + overflow-x: hidden !important; +} +:host ::ng-deep .d-block { + text-align: left; +} +:host ::ng-deep .d-flex { + display: flex!important; +} +:host ::ng-deep .btn-link { + font-weight: 400; + color:#6b6f82 !important; + text-decoration: none; +} +:host ::ng-deep .email-detail-head .collapse-header .card-header { + background-color: transparent !important; +} + +:host ::ng-deep .py-1 { + background-color: #f4f5fa; +} +:host ::ng-deep .ps { + overflow: hidden!important; +} +:host ::ng-deep .content.app-content { + overflow-y: hidden !important; +} + +:host ::ng-deep .tagDropdown { + transform: translate3d(-118px, -16px, 0px) !important; + top: 8px; + } + @media (max-width: 768px){ + .tagDropdown { + transform: translate3d(-98px, -64px, 0px) !important; + top: 8px; + } +} +:host ::ng-deep .listDropdown { + transform: translate3d(-123px, 30px, 0px) !important; + } + @media (max-width: 768px){ + .listDropdown { + transform: translate3d(-88px, -65px, 0px) !important; + top: 8px; + } +} +:host ::ng-deep .taglistDropdown { + transform: translate3d(-123px, -8px, 0px) !important; + } + @media (max-width: 768px){ + .taglistDropdown { + transform: translate3d(-124px, -65px, 0px) !important; + top: 8px; + } +} + :host ::ng-deep .dropdown .dropdown-menu .dropdown-item { + padding: 10px 17px !important; + } +:host ::ng-deep .bg-1{ + background-color: #666ee8; + +} +:host ::ng-deep .badge { + display: inline-block; + padding: .35em .4em; + font-size: 80%; + text-align: center; + vertical-align: baseline; + border-radius: .25rem; + transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} +:host ::ng-deep .badge-pill { + padding-right: .6em; + padding-left: .6em; + border-radius: 10rem; +} +:host ::ng-deep .show>.inboxDropdown { + transform: translate3d(-118px, 30px, 0px) !important; + } + @media (max-width: 768px){ + .show>.inboxDropdown { + transform: translate3d(-106px, -65px, 0px) !important; + } + } + :host ::ng-deep .app-content .sidebar .email-app-sidebar { + width: 300px !important; + } +:host ::ng-deep .emailtoolbar { + float: right; + margin-bottom: 12px; + display: initial; + } + :host ::ng-deep .app-content .quill-wrapper .snow-container .send-btn { + height: 38px; + } + + :host ::ng-deep .ql-editor { + overflow-y: initial !important; + padding: 0px 0px !important; + } + + :host ::ng-deep .gradient-mint { + background-image: linear-gradient(45deg,#28d094,#28d094)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-primary{ + background-image: linear-gradient(45deg,#666ee8,#666ee8)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-warning { + background-image: linear-gradient(45deg,#ff9149,#ff9149)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-danger { + background-image: linear-gradient(45deg,#ff4961,#ff4961)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-info { + background-image: linear-gradient(45deg,#1e9ff2,#1e9ff2)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .list-group .list-group-messages :hover { + color: #0c84d1 !important; +} +:host ::ng-deep .mr-75, .mx-75 { + margin-right: .75rem!important; +} +.list-inline-item:not(:last-child) { + margin-right: 0.7rem !important; +} + +@media (max-width: 768px){ + .list-inline-item:not(:last-child) { + margin-right: 0.25rem !important; + } +} diff --git a/src/app/content/applications/email/email.component.html b/src/app/content/applications/email/email.component.html new file mode 100644 index 0000000..926af0d --- /dev/null +++ b/src/app/content/applications/email/email.component.html @@ -0,0 +1,527 @@ +
+ +
+
+
+
+
+
+ +
+ + +
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/applications/email/email.component.spec.ts b/src/app/content/applications/email/email.component.spec.ts new file mode 100644 index 0000000..79393fb --- /dev/null +++ b/src/app/content/applications/email/email.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { EmailComponent } from './email.component'; + +describe('EmailComponent', () => { + let component: EmailComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ EmailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EmailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/email/email.component.ts b/src/app/content/applications/email/email.component.ts new file mode 100644 index 0000000..3c3e816 --- /dev/null +++ b/src/app/content/applications/email/email.component.ts @@ -0,0 +1,562 @@ +import { Component, OnInit, ViewChild, Renderer2 } from '@angular/core'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { ApplicationApiService } from '../../../_services/application-api.service'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; +import { QuillInitializeServiceService } from '../../../_services/quill-initialize-service.service'; + +class Email { + constructor( + public emailId: number, + public mediaClass: string, + public starClass: string, + public starIcon: string, + public image: any, + public time: string, + public title: string, + public message: string, + public showicon: boolean, + public bullet: string, + + ) { } +} + +class EmailHistory { + constructor( + public emailId: number, + public username: string, + public email: string, + public image: any, + public date: any, + public title: string, + public message: string, + public descrition: string, + public descrition_detail: string, + public sender: string, + public sender_name: string, + public iconClass: string, + public image_icon1: string, + public file_name1: string, + public image_icon2: string, + public file_name2: string + ) { } +} +class EmailMenu { + constructor( + public Id: string, + public name: string, + public icon: string, + public budge: string, + public budgeClass: string, + public budgeIcon: boolean, + public isSelected: false + ) { } +} +class EmailLable { + constructor( + public Id: string, + public name: string, + public isSelected: boolean, + public bulletClass: string, + ) { } +} +@Component({ + selector: 'app-email', + templateUrl: './email.component.html', + styleUrls: ['./email.component.css'], +}) +export class EmailComponent implements OnInit { + public config: PerfectScrollbarConfigInterface = { wheelPropagation: true }; + @ViewChild(PerfectScrollbarComponent) + componentRef?: PerfectScrollbarComponent; + directiveRef?: PerfectScrollbarDirective; + @ViewChild(PerfectScrollbarDirective, { static: true }) + + isHidden = false; + isShown = true; + emailList: any[] = []; + emailDisplayList: any[] = []; + emailMenuList: any[] = []; + email: EmailHistory[]; + emailLable: EmailLable[]; + emailArray: any; + temp = []; + temp2 = this.emailList; + isSelected: boolean; + isCollapsed = false; + selectAll = false; + selected: []; + blured = false; + focused = false; + hide = false; + htmlText = 'Type Something'; + form: FormGroup; + atValues = [ + { id: 1, value: 'Fredrik Sundqvist', link: 'https://google.com' }, + { id: 2, value: 'Patrik Sjölin' } + ]; + hashValues = [ + { id: 3, value: 'Fredrik Sundqvist 2' }, + { id: 4, value: 'Patrik Sjölin 2' } + ]; + quillConfig = { + toolbar: { + container: [ + ['bold', 'italic', 'underline', 'strike'], + ] + }, + autoLink: true, + keyboard: { + bindings: { + enter: { + key: 13, + handler: (range, context) => { + console.log('enter'); + return true; + } + } + } + } + }; + emailquillConfig = { + toolbar: { + container: [ + ['bold', 'italic', 'underline', 'strike'], + ] + }, + autoLink: true + }; + + /** + * Constructor + * + * @param ApplicationApiService emailApiService + * @param Renderer2 renderer + */ + constructor( + private emailApiService: ApplicationApiService, + private renderer: Renderer2, + private QuillInitializeServiceServicec: QuillInitializeServiceService, + fb: FormBuilder + ) { + this.form = fb.group({ + editor: [''] + }); + } + + /** + * OnInit + */ + ngOnInit() { + this.emailApiService.getEmailData().subscribe(Response => { + this.emailArray = Response; + this.emailDisplayList = Response.EmailHistory; + this.emailMenuList = Response.EmailMenu; + this.emailLable = Response.EmailLable; + this.email = this.emailArray.EmailHistory[1]; + this.emailList.push( + new Email( + 1, + 'media mail-read', + 'favorite warning', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-1.png', + '4.14 AM', + 'Open source project public release 👍', + 'Hey John, bah kivu decrete epanorthotic unnotched Argyroneta nonius veratrine preimaginary ', + false, + 'gradient-mint', + ) + ); + this.emailList.push( + new Email( + 2, + 'media mail-read', + 'favorite', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-2.png', + '2.15 AM', + 'Ecommerce website Paypal integration 😃', + ' We will start the new application development soon once this will be completed. ', + false, + 'gradient-danger', + ) + ); + this.emailList.push( + new Email( + 3, + 'media', + 'favorite warning', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-3.png', + '11.18AM', + 'How To Set Intentions That Energize You', + ' I will provide you more details after this Saturday. Hope that will be fine for you.. ', + true, + 'gradient-mint', + ) + ); + this.emailList.push( + new Email( + 4, + 'media', + 'favorite', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-4.png', + 'Yesterday', + 'Harness The Power Of Words In Your Life', + 'When the equation, first to ability the forwards, the a but travelling, outlines sentinels bad expand to goodness....', + true, + 'gradient-warning', + ) + ); + this.emailList.push( + new Email( + 5, + 'media mail-read', + 'favorite', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-5.png', + '24 Feb', + 'Helen Keller A Teller And A Seller', + 'Thanks for your feedback ! Here`s a new layout for a new Modern Admin theme.', + true, + 'gradient-warning', + ) + ); + this.emailList.push( + new Email( + 6, + 'media mail-read', + 'favorite warning', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-6.png', + '15 March', + 'Use Your Reset Button To Change Your Vibration 🎉', + 'Hey John, bah kivu decrete epanorthotic unnotched Argyroneta nonius veratrine preimaginary', + false, + 'gradient-info', + ) + ); + this.emailList.push( + new Email( + 7, + 'media', + 'favorite', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-7.png', + '12-07-2019', + 'Will connect you', + 'Hi Kelly!', + false, + 'gradient-mint', + ) + ); + this.emailList.push( + new Email( + 8, + 'media mail-read', + 'favorite', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-8.png', + '03-29-2019', + 'Harness The Power Of Words In Your Life', + 'Hope your like it, or feel free to comment, feedback or rebound !', + false, + 'gradient-danger' + ) + ); + this.emailList.push( + new Email( + 9, + 'media ', + 'favorite warning', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-9.png', + '19 Jun', + 'Hypnosis 12 Steps To Acquire Mind Power', + 'Monstrous with geared from far and these, morals, phase rome; Class. Called get amidst of geared from next...', + false, + 'gradient-info' + ) + ); + this.emailList.push( + new Email( + 10, + 'media ', + 'favorite warning', + 'ficon feather ft-star', + '../../../assets/images/portrait/small/avatar-s-10.png', + '21 Mar', + ' Know Yourself Your Inner Power ', + ' Hope your like it, or feel free to comment, feedback or rebound.', + false, + 'gradient-warning' + ) + ); + + }); + this.form + .controls + .editor + .valueChanges.pipe( + debounceTime(400), + distinctUntilChanged() + ) + .subscribe((data) => { + }); + + } + + /** + * Search email + * + * @param event Convert value uppercase to lowercase; + */ + updateFilter(event) { + const value = event.target.value.toLowerCase(); + this.emailList = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.emailList]; + // filter our data + const temp = this.emailList.filter(function (d) { + return d.name.toLowerCase().indexOf(value) !== -1 || !value; + }); + // update the rows + this.emailList = temp; + // Whenever the filter changes, always go back to the first page + } + /** + * Overlay add/remove fuction in responsive + * + * @param event Overlay click event + */ + contentOverlay(event) { + const toggleIcon = document.getElementById('email-app-menu'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'content-overlay show') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } + } + + /** + * Add overlay when open sidebar + * + * @param event Content overlay + */ + contentRightSidebar(event) { + const toggle = document.getElementById('content-right'); + if (event.currentTarget.className === 'media _media border-0 ng-star-inserted active') { + this.renderer.addClass(toggle, 'show'); + } + } + + /** + * Remove overlay when close sidebar + * + * @param event Content overlay + */ + contentRight(event) { + const toggle = document.getElementById('content-right'); + if (event.currentTarget.className === 'btn btn-primary go-back') { + this.renderer.removeClass(toggle, 'show'); + } + } + /** + * Open Media-body + * + * @param event Mail Read + */ + showEmail(event) { + const toggleIcon = document.getElementById('app-details'); + if (event.currentTarget.className === 'media-body') { + this.renderer.addClass(toggleIcon, 'show'); + } else if (event.currentTarget.className === 'ficon feather ft-chevron-left font-medium-4 align-middle') { + this.renderer.removeClass(toggleIcon, 'show'); + } + } + /** + * + * @'param' event + * @'param' emailId + */ + showMassage(event, emailId) { + for (let i = 1; i <= this.emailDisplayList.length; i++) { + if (emailId === i) { + const toggleIcon = document.getElementById('headingCollapse5' + emailId); + const toggle = document.getElementById('collapse5' + emailId); + const toggleHeader = document.getElementById('emailThread' + emailId); + if (event.currentTarget.className === 'card collapse-header ng-star-inserted') { + this.renderer.addClass(toggle, 'show'); + this.renderer.addClass(toggleHeader, 'open'); + this.renderer.removeClass(toggleIcon, 'collapsed'); + this.emailDisplayList[i - 1].isCollapsed = true; + } else if (event.currentTarget.className === 'card collapse-header ng-star-inserted open') { + this.renderer.removeClass(toggle, 'show'); + this.renderer.removeClass(toggleHeader, 'open'); + this.renderer.addClass(toggleIcon, 'collapsed'); + this.emailDisplayList[i - 1].isCollapsed = false; + } + } + } + } + /** + * Add overlay when open sidebar + * + * @param event Content overlay + */ + showComposeSidebar(event) { + const toggleIcon = document.getElementById('compose-sidebar'); + const toggleSidebar = document.getElementById('sidebar-left'); + const toggleOverlay = document.getElementById('app-content-overlay'); + if (event.currentTarget.className === 'btn btn-danger btn-glow btn-block my-2 compose-btn') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.removeClass(toggleSidebar, 'show'); + this.renderer.addClass(toggleOverlay, 'show'); + } else if (event.currentTarget.className === 'btn btn-danger btn-glow btn-block my-2 compose-btn show') { + this.renderer.removeClass(toggleIcon, 'show'); + } + } + /** + * Remove overlay when open sidebar + * + * @param event Content overlay + */ + showCompose(event) { + const toggleIcon = document.getElementById('compose-sidebar'); + const toggleOverlay = document.getElementById('app-content-overlay'); + if (event.currentTarget.className === 'close close-icon' || 'app-content-overlay') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggleOverlay, 'show'); + } + } + /** + * Add overlay when open sidebar + * + * @param event Content overlay + */ + showSidebar(event) { + const toggleIcon = document.getElementById('sidebar-left'); + const toggle = document.getElementById('app-content-overlay'); + if (event.currentTarget.className === 'sidebar-toggle d-block d-lg-none') { + this.renderer.addClass(toggleIcon, 'show'); + this.renderer.addClass(toggle, 'show'); + } else if (event.currentTarget.className === 'sidebar-close-icon' || 'app-content-overlay') { + this.renderer.removeClass(toggleIcon, 'show'); + this.renderer.removeClass(toggle, 'show'); + } + } + /** + * Filter Email + * + * @param term search term + */ + search(term) { + const searchTerm = term.currentTarget.value; + if (searchTerm !== '') { + this.emailList = this.emailList.filter(result => { + if (result && searchTerm) { + if (result.title.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1 || + result.message.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1) { + return true; + } + return false; + } + }); + } else { + this.emailList = this.temp2; + } + } + + selectAllEmails() { + for (let i = 0; i < this.emailList.length; i++) { + if (this.selectAll) { + this.emailList[i].isSelected = false; + } else { + this.emailList[i].isSelected = true; + } + } + } + + deleteCheckedRow() { + let index = 0; + const removedIndex = []; + const temp = [...this.emailList]; + for (const row of temp) { + if (row.isSelected === true) { + removedIndex.push(index); + } + index++; + } + for (let i = removedIndex.length - 1; i >= 0; i--) { + temp.splice(removedIndex[i], 1); + } + this.emailList = temp; + this.selectAll = false; + } + showEmailMenu(Id, emailMenu) { + for (let j = 0; j < emailMenu.length; j++) { + for (let i = 0; i < this.emailMenuList.length; i++) { + for (let k = 0; k < this.emailLable.length; k++) { + if (emailMenu[j].name === this.emailMenuList[i].name) { + if (Id !== this.emailMenuList[i].Id) { + this.emailMenuList[i].isSelected = false; + } + if (Id === this.emailMenuList[i].Id) { + this.emailMenuList[i].isSelected = true; + this.emailLable[k].isSelected = false; + } + } else if (emailMenu[j].name === this.emailLable[k].name) { + if (Id !== this.emailLable[k].Id) { + this.emailLable[k].isSelected = false; + } + if (Id === this.emailLable[k].Id) { + this.emailLable[k].isSelected = true; + this.emailMenuList[i].isSelected = false; + } + } + } + } + } + + for (const friend of this.emailMenuList) { + if (friend.Id === Id) { + break; + } + } + } + focus() { + this.focused = true; + this.blured = false; + } + + blur() { + this.focused = false; + this.blured = true; + } + + setControl() { + this.form.setControl('editor', new FormControl('test - new Control')); + } + /** + * Filter Email + * + * @ param event warning Class + * @ param emailId + */ + emailFavorite(event, emailId) { + for (let i = 1; i <= this.emailDisplayList.length; i++) { + if (emailId === i) { + const emailIcon = document.getElementById('email-icon' + emailId); + const emailstarIcon = document.getElementById('emailstar-icon' + emailId); + if (event.currentTarget.className === 'favorite') { + this.renderer.addClass(emailIcon, 'warning'); + this.renderer.addClass(emailstarIcon, 'warning'); + } else if (event.currentTarget.className === 'favorite warning') { + this.renderer.removeClass(emailIcon, 'warning'); + this.renderer.removeClass(emailstarIcon, 'warning'); + } + } + } + } +} diff --git a/src/app/content/applications/email/email.module.spec.ts b/src/app/content/applications/email/email.module.spec.ts new file mode 100644 index 0000000..60b9096 --- /dev/null +++ b/src/app/content/applications/email/email.module.spec.ts @@ -0,0 +1,13 @@ +import { EmailModule } from './email.module'; + +describe('EmailModule', () => { + let emailModule: EmailModule; + + beforeEach(() => { + emailModule = new EmailModule(); + }); + + it('should create an instance', () => { + expect(emailModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/email/email.module.ts b/src/app/content/applications/email/email.module.ts new file mode 100644 index 0000000..0deb520 --- /dev/null +++ b/src/app/content/applications/email/email.module.ts @@ -0,0 +1,34 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { EmailComponent } from './email.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { QuillModule } from 'ngx-quill'; +import { CustomFormsModule } from 'ngx-custom-validators'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { ArchwizardModule } from 'angular-archwizard'; +import { BlockUIModule } from 'ng-block-ui'; + + +@NgModule({ + imports: [ + CommonModule, + NgbModule, + FormsModule, + QuillModule.forRoot(), + CustomFormsModule, + PerfectScrollbarModule, + ArchwizardModule, + BreadcrumbModule, + RouterModule.forChild([ + { + path: '', + component: EmailComponent + } + ]) + ], + declarations: [EmailComponent] +}) +export class EmailModule { } diff --git a/src/app/content/applications/kanban/kanban.module.ts b/src/app/content/applications/kanban/kanban.module.ts new file mode 100644 index 0000000..a1728f3 --- /dev/null +++ b/src/app/content/applications/kanban/kanban.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { KanbanComponent } from './kanban/kanban.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NgSelectModule } from '@ng-select/ng-select'; +import { QuillModule } from 'ngx-quill'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { DndListModule } from 'ngx-drag-and-drop-lists'; + +@NgModule({ + declarations: [KanbanComponent], + imports: [ + CommonModule, + NgbModule, + FormsModule, + NgSelectModule, + QuillModule.forRoot(), + DndListModule, + ReactiveFormsModule, + PerfectScrollbarModule, + RouterModule.forChild([ + { + path: '', + component: KanbanComponent + } + ]) + ] +}) +export class KanbanModule { } diff --git a/src/app/content/applications/kanban/kanban/kanban.component.css b/src/app/content/applications/kanban/kanban/kanban.component.css new file mode 100644 index 0000000..d506e58 --- /dev/null +++ b/src/app/content/applications/kanban/kanban/kanban.component.css @@ -0,0 +1,496 @@ +.mr-25, .mx-25 { + margin-right: .25rem!important; +} +.mr-50, .mx-50 { + margin-right: .5rem!important; +} +.dropdown .dropdown-menu +{ + transform: translate3d(-130px, 24px, 0px) !important; +} +:host ::ng-deep .ng-select .ng-select-container { +color: #fff; +background-color: #666ee8 !important; +} +:host ::ng-deep .ng-arrow { +top: -2px; +border-color: transparent transparent #fff !important; +} +:host ::ng-deep .ng-arrow-wrapper { +top: -2px; +border-color: transparent transparent #fff !important; +border-width: 0 5px 5px !important; + +} +:host ::ng-deep .ng-select .ng-select-container { + height: calc(1.25em + 1.5rem + 2px)!important; + padding: .75rem 1rem; + font-size: 1rem; + line-height: 1.25; +} +:host ::ng-deep .ng-select { +position: relative; +display: block; +box-sizing: border-box; +} +:host ::ng-deep .ml-25, .mx-25 { +margin-left: .25rem!important; +} +:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option { +box-sizing: border-box; +cursor: pointer; +display: block; +white-space: nowrap; +overflow: hidden; +text-overflow: ellipsis; +white-space: nowrap; +min-height: 1.2em; +padding: 0px 5px 1px; +} +:host ::ng-deep .text { +/* display: block; +width: 100%; */ +height: calc(1.25em + 1.5rem + 2px); +padding: .75rem 1rem; +font-size: 1rem; +line-height: 1.25; +/* color: #4e5154; */ +background-color: #fff; +background-clip: padding-box; +border: 1px solid #babfc7; +border-radius: .25rem; +/* transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; */ +} +:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .bg-primary { +background-color: #666ee8!important; +} +ng-reflect-ng-item-label{ +background-color: #ff4961!important; +} +:host ::ng-deep .bg-danger { +background-color: #ff4961!important; +} +:host ::ng-deep .justify-scontent-between { +justify-content: space-between!important; +} +/* datepicker css */ +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { +color: unset !important; +background-color: unset !important; +border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { +background-color: #e2e6ea !important; +border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { +color: unset !important; +background-color: unset !important; +border-color: unset !important; +} + +:host ::ng-deep .bg-primary { +background-color: #007bff !important; +} + +:host ::ng-deep .text-white { +color: #fff !important; + +} + +:host ::ng-deep .custom-day { +text-align: center; +padding: .185rem .25rem; +display: inline-block; +height: 2rem; +width: 2rem; +} + +:host ::ng-deep .custom-day:active { +color: #6d7183 !important; +background-color: #fff !important; +border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { +background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { +display: block !important; +} + +.ngb-dp-weekday { +color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { +line-height: 2rem; +text-align: center; +font-style: italic; +} + +.ngb-datepicker-month-view { +pointer-events: auto; +} + +.small { +font-size: 80%; +font-weight: 400; +} + +.ngb-dp-day { +cursor: pointer !important; +} + +.ngb-dp-month { +pointer-events: none; +} + +.btn-light:hover { +color: #212529 !important; +background-color: #e2e6ea !important; +border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { +pointer-events: auto; +} + +.ngb-dp-header { +border-bottom: 0; +border-radius: .25rem .25rem 0 0; +padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { +width: 2rem; +height: 2rem; +} + +.custom-day { +text-align: center; +padding: 0.185rem 0.25rem; +display: inline-block; +height: 2rem; +width: 2rem; +} + +.custom-day.focused { +background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { +background-color: rgb(2, 117, 216); +color: white; +} + +.custom-day.faded { +background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { +background: rgba(255, 249, 249, 0.5) !important; +} + +.custom-day { +text-align: center; +padding: 0.185rem 0.25rem; +border-radius: 0.25rem; +display: inline-block; +width: 2rem; +} +.custom-day:hover, .custom-day.focused { +background-color: #e6e6e6; +} +.weekend { +background-color: #f0ad4e; +border-radius: 1rem; +color: white; +} +.hidden { +display: none; +} +:host ::ng-deep .ft-calendar{ +font-family: feather!important; +speak: none; +font-style: normal; +font-weight: 400; +font-size: large; +font-variant: normal; +text-transform: none; +line-height: 1; +-webkit-font-smoothing: antialiased; +-moz-osx-font-smoothing: grayscale; +} +:host ::ng-deep .input-group-text { +display: flex; +align-items: center; +padding: unset !important; +margin-bottom: unset !important; +font-size: unset !important; +font-weight: unset !important; +line-height: unset !important; +color:unset !important; +text-align: unset !important; +white-space: unset !important; +background-color: unset !important; +border: unset !important; +border-radius: unset !important; +} +.ml-75, .mx-75 { +margin-left: .75rem!important; +} +.mx-50 { +margin-left: .5rem!important; +} +.sidebar { + width : 270px !important; +} +.align-middle { + margin-left: 3px; +} +.mr-50, .mx-50 { +margin-right: .5rem!important; +} +:host ::ng-deep .ft-plus{ +margin-right: 3px !important; +} +control:disabled, .form-control[readonly] { +background-color: #ffffff; +margin-left: -12px; +} +/* Kanban Board Application css */ +/*------------------------------*/ +.kanban-container { + width : 100% !important; +} +.kanban-container .kanban-board { + border-radius : 0.25rem; + padding : 1rem 0rem; + margin : 0 1.8rem 1rem 0 !important; + width : 18.67rem !important; + background-color : #E7EDF3; +} +.kanban-container .kanban-board .kanban-board-header { + /* kanban-header */ + font-size : 1.2rem; + font-family : 'Quicksand', Georgia, 'Times New Roman', Times, serif; + color : #6B6F82; + padding : 0 0.93rem; + display : -webkit-box; + display : -webkit-flex; + display : -ms-flexbox; + display : flex; + -webkit-box-pack : justify; + -webkit-justify-content : space-between; + -ms-flex-pack : justify; + justify-content : space-between; +} +.kanban-container .kanban-board .kanban-board-header .dropdown { + float : right; +} +.kanban-container .kanban-board .kanban-board-header .dropdown .dropdown-toggle:after { + display : none; +} +.kanban-container .kanban-board .kanban-board-header .kanban-title-board { + /* kanban title */ + font-weight : normal; + cursor : text; + padding : 0 0.5rem; + width : 200px; +} +.kanban-container .kanban-board .kanban-board-header .kanban-title-board:hover, .kanban-container .kanban-board .kanban-board-header .kanban-title-board:focus { + background-color : #6B6F82; + color : #FFFFFF; + border-radius : 0.25rem; + outline : none; + text-overflow : clip; +} +.kanban-container .kanban-board .kanban-board-header .kanban-title-button { + /* kanban title button */ + position : absolute; + bottom : 0; + padding : 0.467rem 0rem; + display : block; + color : #6B6F82; + font-weight : 700; + font-size : 0.8rem; +} +.kanban-container .kanban-board .kanban-drag { + padding : 13px; + min-height : auto; +} +.kanban-container .kanban-board .kanban-item { + /* kanban item */ + padding : 0.53rem 0.8rem; + border-radius : 0.25rem; + margin-bottom : 1rem; + box-shadow : -4px 4px 6px 0 rgba(55, 70, 95, 0.12); + position : relative; + overflow-wrap: break-word; +} +.kanban-container .kanban-board .kanban-item:before { + content : ''; + width : 3px; + height : 100%; + position : absolute; + left : 0; + top : 0; + border-radius : 0.5rem; +} +.kanban-container .kanban-board .kanban-item:hover { + cursor : default; +} +.kanban-container .kanban-board .kanban-item:last-child { + margin-bottom : 0.5rem; +} +.kanban-container .kanban-board .kanban-item .kanban-image img { + border-radius : 0.25rem; +} + +.kanban-overlay { + /* kanban overlay */ + top : 0; + left : 0; + right : 0; + bottom : 0; + position : absolute; + z-index : 999; + visibility : hidden; + opacity : 0; +} +.kanban-overlay.show { + visibility : visible; + -webkit-transition : all 0.3s ease; + transition : all 0.3s ease; + opacity : 1; + background-color : rgba(0, 0, 0, 0.2); +} + +.badge-circle { + display : -webkit-box; + display : -webkit-flex; + display : -ms-flexbox; + display : flex; + -webkit-box-align : center; + -webkit-align-items : center; + -ms-flex-align : center; + align-items : center; + -webkit-box-pack : center; + -webkit-justify-content : center; + -ms-flex-pack : center; + justify-content : center; + background-color : #E6EAEE; + color : #475F7B; + border-radius : 50%; + height : 30px; + width : 30px; +} + +.avatar img { + border : 2px solid #FFFFFF; +} + +.kanban-sidebar { + /* kanban sidebar */ + box-shadow : -8px 0 18px 0 rgba(25, 42, 70, 0.13); + height : 100vh; + width : 23.8rem; + background-color : #FFFFFF; + position : fixed; + -webkit-transform : translateX(110%); + -ms-transform : translateX(110%); + transform : translateX(110%); + -webkit-transition : all 0.3s ease; + transition : all 0.3s ease; + z-index : 1050; + right : 2rem; + left : auto; + bottom : 0; + top : -1px; + opacity : 0; + overflow : hidden; +} +.kanban-sidebar .card-header .close-icon { + color : #6B6F82; + opacity : 1 !important; +} +.kanban-sidebar .card-header .close-icon:focus { + outline : none; +} +.kanban-sidebar.show { + opacity : 1; + -webkit-transform : translateX(9%) translateY(1px); + -ms-transform : translateX(9%) translateY(1px); + transform : translateX(9%) translateY(1px); +} +.kanban-sidebar .edit-kanban-item { + height : 100vh; +} +.kanban-sidebar .edit-kanban-item .card-content { + height : calc(100% - 9rem); +} +.kanban-sidebar .edit-kanban-item .card-content .form-group > label { + color : #BAC0C7; + margin-bottom : 0.67rem; +} +.kanban-sidebar .edit-kanban-item .card-content .form-group select { + border-radius : 0.25rem; + display : block; +} +.kanban-sidebar .edit-kanban-item .card-content .custom-file .custom-file-label:after { + background-color : transparent; +} +.kanban-sidebar .edit-kanban-item .card-footer .btn i { + top : 0; +} +.kanban-sidebar .edit-kanban-item .picker { + position : relative; +} +.kanban-sidebar .quill-wrapper .snow-container .ql-snow, .kanban-sidebar .quill-wrapper .snow-container .ql-toolbar { + border : none; +} +.kanban-sidebar .quill-wrapper .snow-container .ql-toolbar .btn { + width : auto; + line-height : 0.9; + padding : 0.467rem 1.2rem; +} +.kanban-sidebar .quill-wrapper .snow-container .ql-toolbar .btn:hover { + color : #FFFFFF; +} +.kanban-sidebar .quill-wrapper .snow-container .ql-tooltip { + left : 0 !important; +} +.kanban-sidebar .quill-wrapper .snow-container .ql-tooltip input[type=text] { + width : 100px; +} +.kanban-sidebar .quill-wrapper .ql-editor.ql-blank::before { + left : 0.3rem; +} +.kanban-sidebar .quill-wrapper .ql-editor { + min-height : 7.93rem; + padding : 0; +} + +.kanban-title-button { + background-color : transparent; + box-shadow : none; +} + +@media (max-width: 420px) { + .kanban-sidebar { + width : 19rem; + right : 1.6rem; + } + .kanban-sidebar .quill-wrapper .snow-container .ql-tooltip input[type=text] { + width : 70px; + } +} \ No newline at end of file diff --git a/src/app/content/applications/kanban/kanban/kanban.component.html b/src/app/content/applications/kanban/kanban/kanban.component.html new file mode 100644 index 0000000..9b780fa --- /dev/null +++ b/src/app/content/applications/kanban/kanban/kanban.component.html @@ -0,0 +1,204 @@ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+

UI Design

+ +
+ +
+
+
+
+ + +
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+
+ +
+
+ avtar img holder +
+
+ +
+
+
+
+
+
+ +
+ + +
+
+ +
+ +
+
+ + +
+
+
+ + + + + + + + +
+
+ +
+
+
+
+ +
+ +
+
+ +
+
+
+
+ +
+ + +
+ +
+
+
+ +
+
+
+ {{kanban.name}} +
kanban-image
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+ +
+ + +
+
+
+ \ No newline at end of file diff --git a/src/app/content/applications/kanban/kanban/kanban.component.spec.ts b/src/app/content/applications/kanban/kanban/kanban.component.spec.ts new file mode 100644 index 0000000..58cd031 --- /dev/null +++ b/src/app/content/applications/kanban/kanban/kanban.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { KanbanComponent } from './kanban.component'; + +describe('KanbanComponent', () => { + let component: KanbanComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ KanbanComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(KanbanComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/kanban/kanban/kanban.component.ts b/src/app/content/applications/kanban/kanban/kanban.component.ts new file mode 100644 index 0000000..da6f85b --- /dev/null +++ b/src/app/content/applications/kanban/kanban/kanban.component.ts @@ -0,0 +1,365 @@ +import { Component, Renderer2, OnInit, AfterViewInit } from "@angular/core"; +import { PerfectScrollbarConfigInterface } from "ngx-perfect-scrollbar"; +import { FormGroup, FormControl, FormBuilder } from "@angular/forms"; +import { QuillInitializeServiceService } from "../../../../_services/quill-initialize-service.service"; +import "quill-mention"; +declare var require: any; +const data = require("../../../../../assets/data/application/kanban.json"); + +@Component({ + selector: "app-kanban", + templateUrl: "./kanban.component.html", + styleUrls: ["./kanban.component.css"], +}) +export class KanbanComponent implements OnInit, AfterViewInit { + public config: PerfectScrollbarConfigInterface = { wheelPropagation: true }; + selectKanbanClass: any; + kanbanList: any[] = []; + kanbanValue: any; + selectKanbanArray: any[] = []; + kanban: FormGroup; + showImage: boolean; + showNewItem: boolean; + selectedLabel: any; + addTitle: string; + header: string; + blured = false; + focused = false; + atValues = [ + { id: 1, value: "Fredrik Sundqvist", link: "https://google.com" }, + { id: 2, value: "Patrik Sjölin" }, + ]; + hashValues = [ + { id: 3, value: "Fredrik Sundqvist 2" }, + { id: 4, value: "Patrik Sjölin 2" }, + ]; + list = [ + { id: 1, name: 'item1', children: [] }, + { id: 2, name: 'item2', children: [] }, + { id: 3, name: 'item3', children: [] }, + ]; + + kanbanquillConfig = { + toolbar: ".kanbantoolbar", + autoLink: true, + + keyboard: { + bindings: { + enter: { + key: 13, + handler: (range, context) => { + console.log("enter"); + return true; + }, + }, + }, + }, + }; + + constructor( + private _renderer: Renderer2, + private formBuilder: FormBuilder, + private QuillInitializeServiceServicec: QuillInitializeServiceService + ) { } + + ngOnInit(): void { + this.showNewItem = false; + this.selectKanbanClass = "bg-primary"; + this.kanban = this.formBuilder.group({ + title: new FormControl(['']), + date: new FormControl(['']), + selectedLabel: new FormControl(['']), + description: new FormControl(['']) + }); + this.kanbanList = JSON.parse(localStorage.getItem("kanban")); + if (this.kanbanList == null || this.kanbanList.length == 0) { + this.kanbanList = data; + } else { } + localStorage.setItem("kanban", JSON.stringify(this.kanbanList)); + } + ngAfterViewInit(): void { + const items = localStorage.getItem("kanban"); + if (items) { + this.kanbanList = JSON.parse(items); + } + } + + draggable = { + // note that data is handled with JSON.stringify/JSON.parse + // only set simple data or POJO's as methods will be lost + data: "myDragData", + effectAllowed: "all", + disable: false, + handle: false + }; + + onDragStart(event: DragEvent) { + + console.log("drag started", JSON.stringify(event, null, 2)); + } + + onDragEnd(event: DragEvent) { + + console.log("drag ended", JSON.stringify(event, null, 2)); + } + + onDraggableCopied(event: DragEvent) { + + console.log("draggable copied", JSON.stringify(event, null, 2)); + } + + onDraggableLinked(event: DragEvent) { + + console.log("draggable linked", JSON.stringify(event, null, 2)); + } + + onDraggableMoved(event: DragEvent) { + + console.log("draggable moved", JSON.stringify(event, null, 2)); + } + + onDragCanceled(event: DragEvent) { + + console.log("drag cancelled", JSON.stringify(event, null, 2)); + } + + onDragover(event: DragEvent) { + + console.log("dragover", JSON.stringify(event, null, 2)); + } + + + showSidebar(event) { + const toggleIcon = document.getElementById("kanban_sidebar"); + const toggle = document.getElementById("content-overlay"); + if (event.currentTarget.className === "kanban-item") { + this._renderer.addClass(toggleIcon, "show"); + this._renderer.addClass(toggle, "show"); + } else if ( + event.currentTarget.className === "ficon feather ft-x" || + "kanban-overlay" + ) { + this._renderer.removeClass(toggleIcon, "show"); + this._renderer.removeClass(toggle, "show"); + } + } + editItem(value, kanban) { + const date1 = value.date; + const split = date1.split('/'); + let dateObj = { + "year": Number(split[2]), + "month": Number([split[0]]), + "day": Number(split[1]) + } + this.kanban.setValue({ + title: value.name, + date: dateObj, + selectedLabel: value.selectedLabel, + description: value.description, + }) + this.kanbanValue = value + this.selectKanbanArray = kanban + if (value.selectedLabel == 'Primary') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-sucess'); + this._renderer.removeClass(toggleIcon, 'bg-danger'); + this._renderer.removeClass(toggleIcon, 'bg-info'); + this._renderer.removeClass(toggleIcon, 'bg-warning'); + this._renderer.removeClass(toggleIcon, 'bg-secondary'); + this._renderer.addClass(toggleIcon, 'bg-primary'); + } else if (value.selectedLabel == 'Danger') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-primary'); + this._renderer.removeClass(toggleIcon, 'bg-sucess'); + this._renderer.removeClass(toggleIcon, 'bg-info'); + this._renderer.removeClass(toggleIcon, 'bg-warning'); + this._renderer.removeClass(toggleIcon, 'bg-secondary'); + this._renderer.addClass(toggleIcon, 'bg-danger'); + } + else if (value.selectedLabel == 'Success') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-primary'); + this._renderer.removeClass(toggleIcon, 'bg-danger'); + this._renderer.removeClass(toggleIcon, 'bg-info'); + this._renderer.removeClass(toggleIcon, 'bg-warning'); + this._renderer.removeClass(toggleIcon, 'bg-secondary'); + this._renderer.addClass(toggleIcon, 'bg-success'); + } + else if (value.selectedLabel == 'Info') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-primary'); + this._renderer.removeClass(toggleIcon, 'bg-danger'); + this._renderer.removeClass(toggleIcon, 'bg-success'); + this._renderer.removeClass(toggleIcon, 'bg-warning'); + this._renderer.removeClass(toggleIcon, 'bg-secondary'); + this._renderer.addClass(toggleIcon, 'bg-info'); + } + else if (value.selectedLabel == 'Warning') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-primary'); + this._renderer.removeClass(toggleIcon, 'bg-danger'); + this._renderer.removeClass(toggleIcon, 'bg-success'); + this._renderer.removeClass(toggleIcon, 'bg-info'); + this._renderer.removeClass(toggleIcon, 'bg-secondary'); + this._renderer.addClass(toggleIcon, 'bg-warning'); + } + else if (value.selectedLabel == 'Secondary') { + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, 'bg-primary'); + this._renderer.removeClass(toggleIcon, 'bg-danger'); + this._renderer.removeClass(toggleIcon, 'bg-success'); + this._renderer.removeClass(toggleIcon, 'bg-warning'); + this._renderer.removeClass(toggleIcon, 'bg-info'); + this._renderer.addClass(toggleIcon, 'bg-secondary'); + } + } + deleteKanban(event) { + this.kanbanValue; + for (let i = 0; i < this.kanbanList.length; i++) { + if (this.selectKanbanArray.length == this.kanbanList[i].tickets.length) { + for (var j = 0; j < this.selectKanbanArray.length; j++) + if (JSON.stringify(this.selectKanbanArray) === JSON.stringify(this.kanbanList[i].tickets)) { + for (var k = 0; k < this.kanbanList[i].tickets.length; k++) { + if (this.kanbanValue.name == this.kanbanList[i].tickets[k].name) { + this.kanbanList[i].tickets.splice(k, 1); + } + } + } + } + } + const toggleIcon = document.getElementById("kanban_sidebar"); + const toggle = document.getElementById("content-overlay"); + if ( + event.currentTarget.className === "btn btn-danger delete-kanban-item mr-1" + ) { + this._renderer.removeClass(toggleIcon, "show"); + this._renderer.removeClass(toggle, "show"); + } + } + addKanbanBoard() { + let defaultobject = { + name: "Default Title", + tickets: [], + type: "", + kanbanId: this.kanbanList.length + 1, + showNewItem: false + }; + this.kanbanList.push(defaultobject); + } + public kanbanArray: any; + submitItem(kanbanArray) { + let dateObj = new Date(); + var date = (dateObj.getMonth() + 1) + '/' + dateObj.getDate() + '/' + dateObj.getFullYear(); + let object = { + 'name': this.addTitle, + 'date': date, + 'selectedLabel': "Primary", + 'description': this.addTitle + } + for (let i = 0; i < this.kanbanList.length; i++) { + if (kanbanArray.kanbanId == this.kanbanList[i].kanbanId && kanbanArray.tickets.length == this.kanbanList[i].tickets.length && JSON.stringify(kanbanArray.tickets) === JSON.stringify(this.kanbanList[i].tickets)) { + this.kanbanList[i].tickets.push(object), + this.kanbanList[i].showNewItem = false; + } + } + this.addTitle = null; + } + + addKanbanItem(kanabanArray) { + this.addTitle = null; + for (let i = 0; i < this.kanbanList.length; i++) { + if (kanabanArray.kanbanId == this.kanbanList[i].kanbanId) { + this.kanbanList[i].showNewItem = true; + } + } + } + updateKanbanItem(event) { + let dateObj = this.kanban.value.date; + var date = dateObj.month + '/' + dateObj.day + '/' + dateObj.year + this.kanbanValue; + for (let i = 0; i < this.kanbanList.length; i++) { + if (this.selectKanbanArray.length == this.kanbanList[i].tickets.length) { + for ( + var j = 0; + j < this.selectKanbanArray.length; + j++ // assert each element equal + ) + JSON.stringify(this.selectKanbanArray) === JSON.stringify(this.kanbanList[i].kanabanArray); + for (var k = 0; k < this.kanbanList[i].tickets.length; k++) { + if (this.kanbanValue.name == this.kanbanList[i].tickets[k].name) { + + (this.kanbanList[i].tickets[k].name = this.kanban.value.title), + (this.kanbanList[i].tickets[k].date = date), + (this.kanbanList[i].tickets[k].selectedLabel = this.kanban.value.selectedLabel), + (this.kanbanList[i].tickets[k].description = this.kanban.value.description); + } + } + this.kanbanList[i].tickets; + } + } + const toggleIcon = document.getElementById("kanban_sidebar"); + const toggle = document.getElementById("content-overlay"); + if ( + event.currentTarget.className === + "btn btn-primary glow update-kanban-item" + ) { + this._renderer.removeClass(toggleIcon, "show"); + this._renderer.removeClass(toggle, "show"); + } + } + public removeItem(kanban: any, kanbanList): void { + for (let i = 0; i < this.kanbanList.length; i++) { + if (kanbanList.kanbanId == this.kanbanList[i].kanbanId) { + for (var k = 0; k < this.kanbanList[i].tickets.length; k++) { + if (kanban.name == this.kanbanList[i].tickets[k].name) { + kanbanList.tickets.splice(kanbanList.tickets.indexOf(kanban), 1); + this.kanbanList[i].tickets == kanbanList.tickets; + break; + } + } + } + } + } + + cancleKanban(kanbanList) { + kanbanList.showNewItem = false; + } + + deleteKanbanList(kanbanList) { + for (let i = 0; i < this.kanbanList.length; i++) { + if (JSON.stringify(kanbanList) === JSON.stringify(this.kanbanList[i])) { + this.kanbanList.splice(i, 1); + } + } + } + updateHeader(kanbanList) { + for (let i = 0; i < this.kanbanList.length; i++) { + if (JSON.stringify(kanbanList) === JSON.stringify(this.kanbanList[i])) { + this.kanbanList[i].name = this.header + } + } + } + focus() { + this.focused = true; + this.blured = false; + } + blur() { + this.focused = false; + this.blured = true; + } + validateProfile(content, kanbanList) { + this.header = content; + console.log(content); + setTimeout(() => { + this.updateHeader(kanbanList); + }, 2500); + } + getSelectedKanbanText(event: Event) { + let temp = event.target['options'][event.target['options'].selectedIndex].className; + const toggleIcon = document.getElementById('selectLable'); + this._renderer.removeClass(toggleIcon, this.selectKanbanClass); + this._renderer.addClass(toggleIcon, temp); + this.selectKanbanClass = temp; + temp = null; + } +} diff --git a/src/app/content/applications/quill/quillAutolinks.ts b/src/app/content/applications/quill/quillAutolinks.ts new file mode 100644 index 0000000..39d22c2 --- /dev/null +++ b/src/app/content/applications/quill/quillAutolinks.ts @@ -0,0 +1,106 @@ +import Delta from 'quill-delta'; +import Autolinker from 'autolinker'; + +const defaults = { + globalRegularExpression: /https?:\/\/[\S]+/g, + urlRegularExpression: /(https?:\/\/[\S]+)/ +} + +export default class QuillAutoLink { + autolinker = new Autolinker(); + quill; + options; + constructor (quill, options) { + this.quill = quill; + options = options || {}; + this.options = {...defaults, ...options}; + this.registerTypeListener(); + this.registerPasteListener(); + } + registerPasteListener () { + this.quill.clipboard.addMatcher(Node.TEXT_NODE, (node, delta) => { + if (typeof node.data !== 'string') { + return; + } + const matches = node.data.match(this.options.globalRegularExpression) + if (matches && matches.length > 0) { + const newDelta = new Delta(); + let str = node.data; + matches.forEach(match => { + const split = str.split(match); + const beforeLink = split.shift(); + newDelta.insert(beforeLink); + newDelta.insert(match, {link: match}); + str = split.join(match); + }) + newDelta.insert(str); + delta.ops = newDelta.ops; + } + return delta; + }) + } + registerTypeListener () { + this.quill.on('text-change', (delta) => { + let ops = delta.ops + // Only return true, if last operation includes whitespace inserts + // Equivalent to listening for enter, tab or space + if (!ops || ops.length < 1 || ops.length > 2) { + return + } + let lastOp = ops[ops.length - 1] + if (!lastOp.insert || typeof lastOp.insert !== 'string' || !lastOp.insert.match(/\s/)) { + return + } + this.checkTextForUrl() + }) + } + checkTextForUrl () { + let sel = this.quill.getSelection(); + if (!sel) { + return; + } + let [leaf] = this.quill.getLeaf(sel.index); + if (!leaf.text) { + return; + } + if(leaf.parent != undefined && leaf.parent.domNode != undefined && leaf.parent.domNode.tagName.toLowerCase() == "a"){ + return; + } + var temp = leaf.text.substring(0,leaf.text.length - 1); + var to_check_str = temp.substring(temp.lastIndexOf(' ')); + this.checkIfHasLink(sel.index, to_check_str); + } + textToUrl (index,text, url) { + const ops = new Delta() + .retain(index) + .delete(text.length) + .insert(text,{link: url}); + this.quill.updateContents(ops); + } + + + checkIfHasLink = (currentIndex: number, input: string) =>{ + var hasLink = false; + var linkedText = Autolinker.link( input, { + replaceFn : ( match ) => { + switch(match.getType()){ + // case 'url' : + // //console.log( "url: ", match.getUrl() ); + // var index = (currentIndex - match.matchedText.length) - 1; + // this.textToUrl(index,match.matchedText,match.getUrl()); + // return true; // let Autolinker perform its normal anchor tag replacement + + // case 'email' : + // var email = match.getEmail(); + // console.log( "email: ", email ); + // return true; + + // case 'phone' : + // console.log( "Phone Number: ", match.getNumber() ); + } + } + } ); + return hasLink; + } + +} \ No newline at end of file diff --git a/src/app/content/applications/todo-app/todo-app.module.ts b/src/app/content/applications/todo-app/todo-app.module.ts new file mode 100644 index 0000000..760c592 --- /dev/null +++ b/src/app/content/applications/todo-app/todo-app.module.ts @@ -0,0 +1,42 @@ +import { NgModule } from '@angular/core'; +import { CommonModule, DatePipe } from '@angular/common'; +import { TodoappComponent } from './todoapp.component'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { PerfectScrollbarModule, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { AngularFireModule } from '@angular/fire/compat'; +import { environment } from 'src/environments/environment.prod'; +import { AngularFirestoreModule } from '@angular/fire/compat/firestore'; +import { TodoService } from 'src/app/_api/todo/todo.service'; +import { ToastrModule } from 'ngx-toastr'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgSelectModule } from '@ng-select/ng-select'; +import { QuillModule } from 'ngx-quill'; +import { ImagePreloadDirective } from '../../../_directives/image.preload.directive'; + + +@NgModule({ + declarations: [TodoappComponent, ImagePreloadDirective], + providers: [TodoService], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + PerfectScrollbarModule, + FormsModule, + NgbModule, + NgSelectModule, + QuillModule.forRoot(), + ToastrModule.forRoot(), + AngularFireModule.initializeApp(environment.firebase), + AngularFirestoreModule.enablePersistence(), + RouterModule.forChild([ + { + path: '', + component: TodoappComponent + } + ]) + ], + exports: [ImagePreloadDirective] +}) +export class TodoAppModule { } diff --git a/src/app/content/applications/todo-app/todoapp.component.css b/src/app/content/applications/todo-app/todoapp.component.css new file mode 100644 index 0000000..7bedc29 --- /dev/null +++ b/src/app/content/applications/todo-app/todoapp.component.css @@ -0,0 +1,304 @@ +:host ::ng-deep .todo-app-menu { + width: 100% !important; + padding: .5rem 0; +} +:host ::ng-deep .ml-25 { + margin-left: .25rem!important; +} +:host ::ng-deep .todo-sidebar .todo-app-menu .sidebar-menu-list .filter-label { + font-family: Quicksand,Georgia,"Times New Roman",Times,serif; + letter-spacing: 1px; + color: #bac0c7; +} + :host ::ng-deep .border { + border: 1px solid #dde1e6 !important; +} +:host ::ng-deep .ql-container.ql-snow { + border: 0px solid #ccc; +} +:host ::ng-deep .ql-toolbar.ql-snow { + border: 0px solid #ccc; + +} +:host ::ng-deep .btn-primary { + height: fit-content; + margin-right: 7px; +} +:host ::ng-deep .new-taskDropdown::after { + content: "" !important; +} + +:host ::ng-deep .show > .dropdownnew-task { +left: -166px !important; +} +:host ::ng-deep .show > .dropdown-sort { + left: -48px !important; +} +@media (max-width: 991.98px){ + .app-content .content-right { + width: 100%!important; + } +} +:host ::ng-deep .py-75 { + padding-top: .75rem!important; +} +:host ::ng-deep .py-75 { + padding-bottom: .75rem!important; +} +:host ::ng-deep .ImageUpload { + width: 10%; + height: 10%; +} +:host ::ng-deep .add-todo{ + margin-left: 10px; +} +:host ::ng-deep .todo-new-task-sidebar .avatar i { + right : 18px; + bottom : 18px; +} +:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items { + width: fit-content !important; +} +:host ::ng-deep .ng-select { + width: 130px; +} + +@media (max-width: 349.98px) { + .sidebar .todo-sidebar { + width : 230px; + } +} +@media (max-width: 575.98px) { + .todo-new-task-sidebar { + width : 88%; + } +} +:host ::ng-deep .gradient-mint { + background-image: linear-gradient(45deg,#28d094,#28d094)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-primary{ + background-image: linear-gradient(45deg,#666ee8,#666ee8)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-warning { + background-image: linear-gradient(45deg,#ff9149,#ff9149)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-danger { + background-image: linear-gradient(45deg,#ff4961,#ff4961)!important; + width: 10px !important; + height: 10px !important; + } + :host ::ng-deep .gradient-info { + background-image: linear-gradient(45deg,#1e9ff2,#1e9ff2)!important; + width: 10px !important; + height: 10px !important; + } + /* date picker css */ +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + border-radius: 0.25rem; + display: inline-block; + width: 2rem; +} +.custom-day:hover, .custom-day.focused { + background-color: #e6e6e6; +} +.weekend { + background-color: #f0ad4e; + border-radius: 1rem; + color: white; +} +.hidden { + display: none; +} +:host ::ng-deep .ft-calendar{ + font-family: feather!important; + speak: none; + font-style: normal; + font-weight: 400; + font-size: large; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +:host ::ng-deep .input-group-text { + display: flex; + align-items: center; + padding: unset !important; + margin-bottom: unset !important; + font-size: unset !important; + font-weight: unset !important; + line-height: unset !important; + color:unset !important; + text-align: unset !important; + white-space: unset !important; + background-color: unset !important; + border: unset !important; + border-radius: unset !important; +} +.ml-75, .mx-75 { + margin-left: .75rem!important; + } +.mx-50 { + margin-left: .5rem!important; +} +.sidebar { + width : 270px !important; + } + .align-middle { + margin-left: 3px; +} +.mr-50, .mx-50 { + margin-right: .5rem!important; +} +:host ::ng-deep .ft-plus{ + margin-right: 3px !important; +} +control:disabled, .form-control[readonly] { + background-color: #ffffff; + margin-left: -12px; +} +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} \ No newline at end of file diff --git a/src/app/content/applications/todo-app/todoapp.component.html b/src/app/content/applications/todo-app/todoapp.component.html new file mode 100644 index 0000000..cc8910d --- /dev/null +++ b/src/app/content/applications/todo-app/todoapp.component.html @@ -0,0 +1,318 @@ +
+ +
+
+
+
+
+
+
+
+
+
+ +
+ +
    +
  • +
    +
    + +
    + + +
    +

    {{item.title}}

    +
    +
    +
    + {{item.badge}} +
    +
    + avatar +
    + + +
    +
    +
  • + +
+ +
+
No Items Found
+
+
+
+
+
+ +
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/applications/todo-app/todoapp.component.spec.ts b/src/app/content/applications/todo-app/todoapp.component.spec.ts new file mode 100644 index 0000000..b40bad7 --- /dev/null +++ b/src/app/content/applications/todo-app/todoapp.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TodoappComponent } from './todoapp.component'; + +describe('TodoappComponent', () => { + let component: TodoappComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TodoappComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TodoappComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/applications/todo-app/todoapp.component.ts b/src/app/content/applications/todo-app/todoapp.component.ts new file mode 100644 index 0000000..6f18514 --- /dev/null +++ b/src/app/content/applications/todo-app/todoapp.component.ts @@ -0,0 +1,765 @@ +import { Component, OnInit, Renderer2, ViewChild } from '@angular/core'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { NgbDateStruct, NgbTimeStruct, NgbDate } from '@ng-bootstrap/ng-bootstrap'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { TodoService } from '../../../_api/todo/todo.service'; +import { AngularFirestore } from '@angular/fire/compat/firestore'; +import { NgForm, FormGroup, FormControl, FormBuilder, Validators, FormArray } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { forkJoin } from 'rxjs'; +import { QuillEditorComponent } from 'ngx-quill'; +import { UserService } from '../../../_api/user/user.service'; +import { QuillInitializeServiceService } from '../../../_services/quill-initialize-service.service'; +import 'quill-mention'; +declare let require: any; + +class TodoFilter { + constructor( + public Id: string, + public lableName: string, + public isSelected: boolean + ) { } +} +class Comment { + public userid: string; + public comment: string; + public created_at_date: number; +} +@Component({ + selector: 'app-todoapp', + templateUrl: './todoapp.component.html', + styleUrls: ['./todoapp.component.css'] +}) +export class TodoappComponent implements OnInit { + + initialData = require('../../../../assets/data/application/todo.json'); + LableData = require('../../../../assets/data/application/todo_lable.json'); + private demoUserEmail = 'john@pixinvent.com'; + todo: FormGroup; + submitted = false; + commentList: Comment[] = []; + date: any; + todoDisplayList: any[] = []; + todoLableList: any[] = []; + todoFilterList: TodoFilter[] = []; + todoId: any; + todoType: 'secondary'; + assignedTo: any; + selectedUserId = ''; + selectedUserImage: any; + selectedAssignee: any; + assignDate: any; + todoComments: any[] = []; + todoCommentsField: string; + selectedTodoTypeText = ''; + selectedTodoTypeValue = ''; + isShown = true; + selectedItem: any; + completedTodo = false; + TodoId: any; + id: any; + temp: any; + todosAssigned: any; + loader = true; + blured = false; + focused = false; + hide = false; + hasFocus = false; + d2: any; + model: NgbDateStruct; + createdDate: any; + contact: any; + commentArray: any[] = []; + public isShowCropper = false; + loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + demoUserImage = '../../../assets/images/portrait/small/avatar-s-19.png'; + currentUserImage = this.loggedInUser.photoURL; + currentUserName = this.loggedInUser.name; + public config: PerfectScrollbarConfigInterface = {}; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + @ViewChild('editor', { static: true }) editor: QuillEditorComponent; + todos: any; + atValues = [ + { id: 1, value: 'Fredrik Sundqvist', link: 'https://google.com' }, + { id: 2, value: 'Patrik Sjölin' } + ]; + hashValues = [ + { id: 3, value: 'Fredrik Sundqvist 2' }, + { id: 4, value: 'Patrik Sjölin 2' } + ]; + newTodoquillConfig = { + toolbar: { + container: [ + ['bold', 'italic', 'underline', 'strike', 'image'], + ] + }, + autoLink: true, + mention: { + allowedChars: /^[A-Za-z\sÅÄÖåäö]*$/, + mentionDenotationChars: ['@', '#'], + source: (searchTerm, renderList, mentionChar) => { + let values; + + if (mentionChar === '@') { + values = this.atValues; + } else { + values = this.hashValues; + } + if (searchTerm.length === 0) { + renderList(values, searchTerm); + } else { + const matches = []; + for (let i = 0; i < values.length; i++) { + if (values[i].value.toLowerCase().indexOf(searchTerm.toLowerCase())) { + matches.push(values[i]); + renderList(matches, searchTerm); + } + } + } + }, + }, + keyboard: { + bindings: { + enter: { + key: 13, + handler: (range, context) => { + console.log('enter'); + return true; + } + } + } + } + }; + TodoquillConfig = { + toolbar: { + container: [ + ['bold', 'italic', 'underline', 'strike'], + ] + }, + autoLink: true, + // mention: { + // allowedChars: /^[A-Za-z\sÅÄÖåäö]*$/, + // mentionDenotationChars: ['@', '#'], + // source: (searchTerm: string, renderList: (arg0: any[], arg1: any) => void, mentionChar: string) => { + // let values; + + // if (mentionChar === '@') { + // values = this.atValues; + // } else { + // values = this.hashValues; + // } + // if (searchTerm.length === 0) { + // renderList(values, searchTerm); + // } else { + // const matches = []; + // for (let i = 0; i < values.length; i++) { + // if (values[i].value.toLowerCase().indexOf(searchTerm.toLowerCase())) { + // matches.push(values[i]); + // renderList(matches, searchTerm); + // } + // } + // } + // }, + // }, + keyboard: { + bindings: { + enter: { + key: 13, + handler: (range, context) => { + console.log('enter'); + return true; + } + } + } + } + }; + get TodoFormGroup() { + return this.todo.get('todoComments') as FormArray; + } + /** + * Constructor + * + * @param NgbModal modal + * @param FormBuilder formBuilder + * @param Renderer2 _renderer + * @param TodoService firebaseService + * @param AngularFirestore firestore + * @param ToastrService toastr + */ + constructor(private modal: NgbModal, + private formBuilder: FormBuilder, + private _renderer: Renderer2, + private firebaseService: TodoService, + private firestore: AngularFirestore, + private toastr: ToastrService, + private modalService: NgbModal, + private userService: UserService, + private QuillInitializeServiceServicec: QuillInitializeServiceService) { + } + + /** + * OnInit + */ + ngOnInit() { + this.loader = true; + this.resetForm(); + this.todos = []; + this.currentUserImage = this.loggedInUser.photoURL; + this.currentUserName = this.loggedInUser.displayName; + this.todoLableList = this.LableData.todoLableList; + this.todoFilterList = this.LableData.todoFilterList; + this.userService.getUsers().subscribe(users => { + let contactList = users.map(item => { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + }); + contactList = contactList.filter(element => { + return this.loggedInUser.uid !== element['uid'] || this.loggedInUser.uid === element['uid']; + }); + this.contact = contactList; + }); + if (this.loggedInUser.email === this.demoUserEmail) { + // To load default todo for demo account + this.getDemoAccTodos().then(todos => { + if (todos.length === 0) { + this.addDemoAccountTodos().then(result => { + if (result) { + this.loadTodos(); + } + }); + } else { + this.loadTodos(); + } + }); + } else { + this.loadTodos(); + } + + this.todo = this.formBuilder.group({ + title: new FormControl(['', Validators.required]), + type: new FormControl(''), + description: new FormControl(''), + createdDate: new FormControl(''), + assignedTo: new FormControl(''), + assignDate: new FormControl(['', Validators.nullValidator]), + todoComments: this.formBuilder.array([ + this.formBuilder.group({ + comment: '', + created_at_date: '', + userid: '' + })]), + }); + } + + // Load TODO of user + loadTodos() { + this.firebaseService.getTODOS(this.loggedInUser.uid).subscribe(todos => { + let todo = []; + todo = todos.map(item => { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + }); + this.firebaseService.getAssignedTODOS(this.loggedInUser.uid).subscribe(assignedTodos => { + let todoAssigned = []; + todoAssigned = assignedTodos.map(item => { + const toDoObj = item.payload.doc.data() as {}; + if (toDoObj && toDoObj['uid'] !== this.loggedInUser.uid) { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + } + }); + todoAssigned = todoAssigned.filter(item => { + return item && item['uid']; + }); + this.todos = todo.concat(todoAssigned); + this.temp = this.todos; + this.loader = false; + }); + }); + } + /** + * Get the add todo Form value + */ + get add() { + return this.todo.controls; + } + + /** + * Get the update todo Form value + */ + get update() { + return this.todo.controls; + } + + /** + * Reset form value + * + * @param form Form fields with previous value + */ + resetForm(form?: NgForm) { + if (form != null) { + form.resetForm(); + } + } + addDemoAccountTodos() { + const dataPromise = new Promise((resolve, reject) => { + const promises = []; + // Add default TODO for demo account + for (let i = 0; i < this.initialData.length; i++) { + const promise = this.firestore.collection('todo').add({ + title: this.initialData[i].title, + description: this.initialData[i].description, + badge: this.initialData[i].badge, + type: this.initialData[i].type, + completed: this.initialData[i].completed, + isDeleted: this.initialData[i].isDeleted, + createdDate: new Date(), + uid: this.loggedInUser.uid, + assignedTo: this.initialData[i].assignedTo, + assignDate: this.initialData[i].assignDate, + todoComments: this.initialData[i].todoComments + }); + promises.push(promise); + } + forkJoin(promises).subscribe(results => { + resolve(true); + }); + }); + return dataPromise; + } + /** + * Initial todo display + */ + getDemoAccTodos(): Promise { + const dataPromise = new Promise((resolve, reject) => { + this.firebaseService.getTODOS(this.loggedInUser.uid).subscribe(todos => { + resolve(todos); + }); + }); + return dataPromise; + } + + /** + * Add new todo + * + * Update todo + * + * @param value Form field values + * @param id todo id + */ + onSubmit(event) { + this.submitted = true; + let temp: any[] = []; + this.todo.controls.assignDate.clearValidators(); + this.todo.get('assignDate').clearValidators(); + this.todo.get('assignDate').updateValueAndValidity(); + + if (this.assignedTo) { + this.selectedAssignee = this.assignedTo; + } + if (this.todoCommentsField == null) { + temp = null; + } else if (this.todoCommentsField !== null) { + this.todoCommentsField = this.todoCommentsField.replace(/(

|<\/p>)/g, ''); + temp = [{ + comment: this.todoCommentsField, + created_at_date: Date.now(), + userid: this.currentUserImage + }]; + } + if (this.todo.invalid) { + return; + } else if (this.todo.valid) { + this.todo.setValue({ + uid: this.loggedInUser.uid, + title: this.todo.value.title, + description: this.todo.value.description, + type: this.selectedTodoTypeValue, + completed: false, + isDeleted: false, + createdDate: new Date(), + badge: this.selectedTodoTypeText, + assignedTo: this.todo.value.assignedTo, + assignDate: this.todo.value.assignDate, + todoComments: temp, + }); + this.firebaseService.createTodo(this.todo.value).subscribe(res => { + this.toastr.success('Added', 'Todo Created Successfully.', { timeOut: 500, closeButton: true }); + }, (err) => { + this.toastr.error('Error', 'Add Todo Error.', { timeOut: 500, closeButton: true }); + }); + const toggleIcon = document.getElementById('todo-new-task'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'mt-1 ng-dirty ng-valid ng-touched' || 'mt-1 ng-dirty ng-touched ng-valid') { + this._renderer.removeClass(toggleIcon, 'show'); + this._renderer.removeClass(toggle, 'show'); + } + } + } + /** + * Submit Comment + */ + submitComment(id, comments) { + if (comments != null) { + comments = comments.replace(/(

|<\/p>)/g, ''); + } + if (!comments) { + comments = null; + } + if (this.loggedInUser.email === this.demoUserEmail) { + this.currentUserImage = this.demoUserImage; + } + if (!this.todoComments || this.todoComments.length === 0) { + this.todoComments = []; + } + // TODO Add todo comment from parameters to todoComments first + if (comments != null) { + this.todoComments.push({ + comment: comments, + created_at_date: Date.now(), + userid: this.currentUserImage + }); + } + if (this.todoId !== null) { + this.todo.setValue({ + uid: this.todo.value.uid, + title: this.todo.value.title, + description: this.todo.value.description, + type: this.todo.value.type, + completed: false, + isDeleted: false, + createdDate: this.todo.value.createdDate, + badge: this.todo.value.badge, + assignedTo: this.todo.value.assignedTo, + assignDate: this.todo.value.assignDate, + todoComments: this.todoComments, + }); + + this.todoCommentsField = null; + comments = null; + this.firebaseService.updateTODO(id, this.todo.value) + .subscribe(res => { + this.toastr.success('Update', 'Todo Comment Updated Successfully.', { timeOut: 500, closeButton: true }); + }, (err) => { + this.toastr.error('Error', 'Todo Comment Updated Error', { timeOut: 500, closeButton: true }); + }); + console.log(this.todo); + } + } + + /** + * Update todo + * + * @param value Form field values + * @param id todo id + */ + onUpdate(id, value, event) { + this.submitted = true; + this.todo.controls.assignDate.clearValidators(); + this.todo.get('assignDate').clearValidators(); + this.todo.get('assignDate').updateValueAndValidity(); + if (this.todo.invalid) { + return; + } else if (this.todo.valid) { + this.todo.setValue({ + uid: this.loggedInUser.uid, + title: value.title, + description: value.description, + type: this.selectedTodoTypeValue, + completed: value.completed, + isDeleted: false, + createdDate: this.selectedItem.createdDate, + badge: this.selectedTodoTypeText, + assignedTo: value.assignedTo, + assignDate: value.assignDate, + todoComments: this.todoComments + }); + this.firebaseService.updateTODO(id, this.todo.value) + .subscribe(res => { + this.toastr.success('Update', 'Todo Updated Successfully.', { timeOut: 500, closeButton: true }); + }, (err) => { + this.toastr.error('Error', 'Todo Update Error!', { timeOut: 500, closeButton: true }); + }); + const toggleIcon = document.getElementById('todo-new-task'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'btn btn-danger update-todo ng-star-inserted' || 'btn btn-danger update-todo') { + this._renderer.removeClass(toggleIcon, 'show'); + this._renderer.removeClass(toggle, 'show'); + } + } + } + /** + * Delete todo + * + * @param id todo id + */ + onDelete(id: string) { + + this.firebaseService.deleteTodo(id) + .then(res => { + this.toastr.success('Deleted', 'Todo Deleted Successfully!', { timeOut: 500, closeButton: true }); + }, (err) => { + this.toastr.error('Error', 'Todo Delete Error!', { timeOut: 500, closeButton: true }); + } + ); + } + + /** + * filter task + */ + search(term) { + const searchTerm = term.currentTarget.value; + if (searchTerm !== '') { + this.todos = this.todos.filter(result => { + if (result && searchTerm) { + if (result.title.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1 || + result.description.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1) { + return true; + } + return false; + } + }); + } else { + this.todos = this.temp; + } + } + /** + * Open add todo modal + * + * @param content Add todo modal id + */ + open() { + this.selectedItem = null; + this.selectedTodoTypeValue = ''; + this.selectedTodoTypeText = ''; + this.todoComments = []; + this.todoCommentsField = null; + this.resetForm(); + this.selectedUserImage = ''; + this.todoId = null; + this.todo = this.formBuilder.group({ + uid: this.loggedInUser.uid, + title: '', + description: '', + type: '', + completed: false, + isDeleted: false, + createdDate: new Date(), + badge: '', + assignedTo: '', + assignDate: '', + todoComments: '', + }); + } + + /** + * Open edit todo modal + * + * @param editContent edit todo modal id + * @param item edit todo modal values + */ + editModal(value, event) { + this.selectedItem = value; + if (this.contact.length > 0) { + for (let index = 0; index < this.contact.length; index++) { + const element = this.contact[index]; + if (element.uid === this.selectedItem.uid) { + this.selectedItem['creator'] = element; + break; + } + } + } + + this.todoId = this.loggedInUser.uid; + this.TodoId = this.loggedInUser.uid; + this.todo = this.formBuilder.group({ + uid: this.loggedInUser.uid, + title: this.selectedItem.title, + description: this.selectedItem.description, + type: this.selectedItem.type, + completed: value.completed, + isDeleted: false, + badge: this.selectedItem.badge, + createdDate: value.createdDate, + assignDate: value.assignDate, + assignedTo: value.assignedTo, + todoComments: value.todoComments, + }); + this.todoCommentsField = value.todoComments; + if (value.assignedTo) { + this.selectedAssignee = value.assignedTo; + } + // this.firebaseService.getTODOS(this.loggedInUser.uid).subscribe(todos => { + // this.todos = todos.map(item => { + // return { + // ...item.payload.doc.data() as {}, + // id: item.payload.doc.id + // }; + // }); + // }); + for (let i = 0; i < this.todos.length; i++) { + if (value.id === this.todos[i].id) { + this.todoComments = this.todos[i].todoComments; + } + } + const toggleIcon = document.getElementById('todo-new-task'); + const toggle = document.getElementById('content-overlay'); + const userImage = document.getElementById('avatar-user'); + const contentImage = document.getElementById('avatar-content'); + if (event.currentTarget.className === 'todo-item ng-star-inserted') { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + } else if (this.todoId !== null) { + this._renderer.addClass(contentImage, 'd-none'); + this._renderer.removeClass(userImage, 'd-none'); + } + } + + /** + * Get text and value + * + * @param event Dropdown event + */ + getSelectedTODOTypeText(event: Event) { + this.selectedTodoTypeText = event.target['options'][event.target['options'].selectedIndex].text; + this.selectedTodoTypeValue = event.target['options'][event.target['options'].selectedIndex].value; + } + getSelectedTODOTypeImage(event) { + this.selectedUserId = event.id; + this.selectImage(); + } + selectImage() { + this.contact.forEach(element => { + if (this.selectedUserId === element.id) { + this.selectedUserImage = element.image; + } + }); + } + completeTODO(data) { + if (data.completed) { + data.completed = false; + } else { + data.completed = true; + } + this.todo = this.formBuilder.group({ + uid: this.loggedInUser.uid, + title: data.title, + description: data.description, + type: data.type, + completed: data.completed, + isDeleted: data.isDeleted, + createdDate: data.createdDate, + badge: data.badge, + assignDate: data.assignDate, + assignedTo: data.assignedTo, + // todoImage: data.todoImage, + todoComments: data.todoComments, + }); + + this.firebaseService.updateTODO(data.id, this.todo.value) + .subscribe(res => { + if (this.todo.value.completed === true) { + this.toastr.success('Success', 'Todo Completed.', { timeOut: 500, closeButton: true }); + } else { + this.toastr.success('Success', 'Todo Updated.', { timeOut: 500, closeButton: true }); + } + }, (err) => { + this.toastr.error('Error', 'Something went wrong!', { timeOut: 500, closeButton: true }); + }); + } + /** + * Overlay add/remove fuction in responsive + * + * @param event Overlay click event + */ + sidebartask(event) { + const toggleIcon = document.getElementById('todo-new-task'); + const toggle = document.getElementById('content-overlay'); + const toggleSidebarIcon = document.getElementById('sidebar-left'); + const userImage = document.getElementById('avatar-user'); + const contentImage = document.getElementById('avatar-content'); + if (event.currentTarget.className === 'btn btn-danger btn-glow add-task-btn btn-block my-1') { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + this._renderer.removeClass(toggleSidebarIcon, 'show'); + } else if (event.currentTarget.className.indexOf('todo-item') !== -1) { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + + } else if (event.currentTarget.className === 'close close-icon' || 'app-content-overlay show') { + this._renderer.removeClass(toggleIcon, 'show'); + this._renderer.removeClass(toggle, 'show'); + this._renderer.removeClass(toggleSidebarIcon, 'show'); + } + } + + sidebartaskedit(event) { + const toggleIcon = document.getElementById('todo-new-task'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'btn btn-danger btn-glow add-task-btn btn-block my-1') { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + } + } + showTodoMenu(Id, todo) { + for (let j = 0; j < todo.length; j++) { + for (let i = 0; i < this.todoLableList.length; i++) { + for (let k = 0; k < this.todoFilterList.length; k++) { + if (todo[j].lableName === this.todoLableList[i].lableName) { + if (Id !== this.todoLableList[i].Id) { + this.todoLableList[i].isSelected = false; + } + if (Id === this.todoLableList[i].Id) { + this.todoLableList[i].isSelected = true; + this.todoFilterList[k].isSelected = false; + } + } else if (todo[j].lableName === this.todoFilterList[k].lableName) { + if (Id !== this.todoFilterList[k].Id) { + this.todoFilterList[k].isSelected = false; + } + if (Id === this.todoFilterList[k].Id) { + this.todoFilterList[k].isSelected = true; + this.todoLableList[i].isSelected = false; + } + } + } + } + } + } + sidebar(event) { + const toggleIcon = document.getElementById('sidebar-left'); + const toggle = document.getElementById('content-overlay'); + if (event.currentTarget.className === 'sidebar-toggle d-block d-lg-none') { + this._renderer.addClass(toggleIcon, 'show'); + this._renderer.addClass(toggle, 'show'); + } else if (event.currentTarget.className === 'sidebar-close-icon') { + this._renderer.removeClass(toggleIcon, 'show'); + this._renderer.removeClass(toggle, 'show'); + } + } + + focus() { + this.focused = true; + this.blured = false; + } + + blur() { + this.focused = false; + this.blured = true; + } + todoFavorite(event, todoId) { + const todoIcon = document.getElementById('todo-icon' + todoId); + if (event.currentTarget.className === 'todo-item-favorite ml-75') { + this._renderer.addClass(todoIcon, 'warning'); + } else if (event.currentTarget.className === 'todo-item-favorite ml-75 warning') { + this._renderer.removeClass(todoIcon, 'warning'); + } + } +} diff --git a/src/app/content/cards/bootstrap/bootstrap.component.css b/src/app/content/cards/bootstrap/bootstrap.component.css new file mode 100644 index 0000000..f3a5233 --- /dev/null +++ b/src/app/content/cards/bootstrap/bootstrap.component.css @@ -0,0 +1,11 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .list-group-item { + border: 1px solid #E4E7ED !important; +} + +:host ::ng-deep .carousel-item-next:not(.carousel-item-left){ + transform: unset !important; +} \ No newline at end of file diff --git a/src/app/content/cards/bootstrap/bootstrap.component.html b/src/app/content/cards/bootstrap/bootstrap.component.html new file mode 100644 index 0000000..7a78575 --- /dev/null +++ b/src/app/content/cards/bootstrap/bootstrap.component.html @@ -0,0 +1,1082 @@ +

+
+
+ +
+
+ +
+
+
+

Basic Examples

+

Cards require a small amount of markup and classes to provide you with as much control as possible. + These classes + and markup are flexible though and can typically be remixed and extended with ease. For example, if your + card has + no flush content like images, feel free to put the .card-body class on the .card + element + to consolidate your markup.

+
+
+ +
+
+
+
+ Card image cap +
+

Card title

+

Icing powder caramels macaroon. Toffee sugar plum brownie pastry gummies jelly. +

+ Go somewhere +
+
+
+
+
+
+
+
+ Card image cap +

Card title

+

Sweet halvah dragée jelly-o halvah carrot cake oat cake. Donut jujubes jelly + chocolate cake + marzipan chocolate chocolate bar.

+ Go somewhere +
+
+
+
+
+
+
+
+

Card title

+
Support card subtitle
+
+ Card image cap +
+

Bear claw sesame snaps gummies chocolate.

+ Card link + Another link +
+
+
+
+
+
+
+
+

Card title

+
Support card subtitle
+ Card image cap +

Topping dessert marshmallow gummi bears chupa chups marzipan.

+ Card link + Another link +
+
+
+
+
+
+ + + +
+
+
+

Content Types

+

Cards support a wide variety of content, including images, text, list groups, links, and more. Mix and + match + multiple content types to create the card you need.

+
+
+ +
+
+
+
+ Card image cap +
+

Basic

+

Some quick example text to build on the card title and make up the bulk of the + card's + content.

+ Go somewhere +
+
+
+
+
+
+
+
+

List Group

+

Some quick example text to build on the card title and make up the bulk of the + card's + content.

+
+
    +
  • + 4 + Cras justo odio +
  • +
  • + 2 + Dapibus ac facilisis in +
  • +
  • + 1 + Morbi leo risus +
  • +
  • + 3 + Porta ac consectetur ac +
  • +
  • + 8 + Vestibulum at eros +
  • +
+ +
+
+
+
+
+
+
+

Carousel

+
Support card subtitle
+
+ +
+

Some quick example text to build on the card title and make up the bulk of the + card's + content.

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

Contact Form

+
Support card subtitle
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+
+
+
+
+
+
+
+ + + +
+
+
+

Sizing

+

Constrain the width of cards via custom CSS, our predefined grid classes, or with custom styles using + our grid + mixins.

+
+
+
+
+ + + Project Info + + +
+

With supporting text below as a natural lead-in to additional content.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+ + +
+
+
+
+
+ +
+ + + User Profile + + +
+

With supporting text below as a natural lead-in to additional content.

+
+
+
+

About User

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

Contact Info & Bio

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

Text alignment

+

You can quickly change the text alignment of any card—in its entirety or specific parts—with our text + align + classes.

+
+
+ +
+
+
+
+
+

Text Align Left

+

Gummi bears I love oat cake gingerbread donut cotton candy pie biscuit tart. + Chocolate cake + chocolate cake I love marzipan cookie macaroon. Tart I love I love carrot cake carrot cake chupa + chups caramels. + Carrot cake pastry cotton candy.

+

Dessert I love brownie biscuit topping I love chocolate cake gingerbread jelly + beans. + Chocolate cake cake cheesecake. Chocolate cake pastry macaroon.

+ Go somewhere +
+
+
+
+
+
+
+
+

Text Align Center

+

Gummi bears I love oat cake gingerbread donut cotton candy pie biscuit tart. + Chocolate cake + chocolate cake I love marzipan cookie macaroon. Tart I love I love carrot cake carrot cake chupa + chups caramels. + Carrot cake pastry cotton candy.

+

Dessert I love brownie biscuit topping I love chocolate cake gingerbread jelly + beans. + Chocolate cake cake cheesecake. Chocolate cake pastry macaroon.

+ Go somewhere +
+
+
+
+
+
+
+
+

Text Align Right

+

Gummi bears I love oat cake gingerbread donut cotton candy pie biscuit tart. + Chocolate cake + chocolate cake I love marzipan cookie macaroon. Tart I love I love carrot cake carrot cake chupa + chups caramels. + Carrot cake pastry cotton candy.

+

Dessert I love brownie biscuit topping I love chocolate cake gingerbread jelly + beans. + Chocolate cake cake cheesecake. Chocolate cake pastry macaroon.

+ Go somewhere +
+
+
+
+
+
+ + + + + + + +
+
+
+

Image caps, overlays & Inverted text

+

Similar to headers and footers, cards include top and bottom image caps.

+

Turn an image into a card background and overlay your card’s text. Depending on the image, you may or + may not + need .text-white

+
+
+
+
+
+
+ Card image cap +
+

Top Image Cap

+

Jelly-o sesame snaps cheesecake topping. Cupcake fruitcake macaroon donut pastry + gummies + tiramisu chocolate bar muffin. Dessert bonbon caramels brownie chocolate bar chocolate tart dragée. +

+

Cupcake fruitcake macaroon donut pastry gummies tiramisu chocolate bar muffin. +

+

Last updated 3 mins ago

+
+
+
+
+
+
+
+
+

Bottom Image Cap

+

Jelly-o sesame snaps cheesecake topping. Cupcake fruitcake macaroon donut pastry + gummies + tiramisu chocolate bar muffin. Dessert bonbon caramels brownie chocolate bar chocolate tart dragée. +

+

Cupcake fruitcake macaroon donut pastry gummies tiramisu chocolate bar muffin. +

+

Last updated 3 mins ago

+
+ Card image cap +
+
+
+
+
+
+
+
+ Card image +
+

Card Image Overlay

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+
+ Card image +
+

Card Image Overlay

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+
+ Card image +
+

Inverse Text

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+
+ Card image +
+

Inverse Text

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups.

+

Last updated 3 mins ago

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

Background variants

+

Cards include their own variant classes for quickly changing the background-color and + border-color + of a card. Darker colors require the use of .text-white. +

+

Cards include a class for quickly toggling the text color. By default, cards use dark text and assume a + light + background. Add .text-white for white text and specify the background-color and + border-color + to go with it.
You can also use .text-white with the contextual backgrounds variants. +

+
+
+
+
+
+
+
+ element 01 +

Brand Minute

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+
+
+ element 02 +

Ceramic Bottle

+

456 items

+
+
+
+
+
+
+
+
+ element 03 +

Brand Minute

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+
+ element 04 +
+

New Arriaval

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+
+
+ element 05 +

Storage Device

+

945 items

+
+
+
+
+
+
+
+
+ element 06 +

New Arriaval

+

Donut toffee candy brownie soufflé macaroon.

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

Outline variants

+

In need of a colored card, but not the hefty background colors they bring? Replace the default modifier + classes + with the .border-* ones to style just the border-color of a card.

+
+
+
+
+
+
+
+ element 01 +

Brand Minute

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+
+
+ element 02 +

Ceramic Bottle

+

456 items

+
+
+
+
+
+
+
+
+ element 03 +

Brand Minute

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+ +
+
+
+ element 04 +
+

New Arriaval

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+
+
+ element 05 +

Storage Device

+

945 items

+
+
+
+
+
+
+
+
+ element 06 +

New Arriaval

+

Donut toffee candy brownie soufflé macaroon.

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

Groups

+

Use card groups to render cards as a single, attached element with equal width and height columns. By + default, + card groups use display: table; and table-layout: fixed; to achieve their + uniform sizing. + However, enabling flexbox mode can switch that to use display: flex; and provide the same + effect.

+
+
+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

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

Decks

+

Need a set of equal width and height cards that aren’t attached to one another? Use card decks. By + default, card + decks require two wrapping elements: .card-deck-wrapper and a .card-deck. We + use table + styles for the sizing and the gutters on .card-deck. The .card-deck-wrapper is + used to + negative margin out the border-spacing on the .card-deck.

+
+
+
+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional + content.

+

Last updated 3 mins ago

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

Columns

+

Cards can be organized into Masonry-like columns with just CSS by wrapping them in + .card-columns. + Only applies to small devices and above. +

+ +

Heads up! This is not available in IE9 and below as they have no + support for + the column-* CSS properties.

+
+
+
+
+
+
+
+ Card image cap +
+

Card title

+

Some quick example text to build on the card title and make up the bulk of the + card's + content.

+ Go somewhere +
+
+
+
+
+
+ element 01 +

Brand Minute

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+
+ element 05 +

Storage Device

+

945 items

+
+
+
+
+
+
+ element 02 +

Ceramic Bottle

+

456 items

+
+
+
+
+
+
+

Bottom Image Cap

+

Jelly-o sesame snaps cheesecake topping. Cupcake fruitcake macaroon donut + pastry gummies + tiramisu chocolate bar muffin. Dessert bonbon caramels brownie chocolate bar chocolate tart + dragée.

+

Cupcake fruitcake macaroon donut pastry gummies tiramisu chocolate bar muffin. +

+

Last updated 3 mins ago

+
+ Card image cap +
+
+
+
+ Card image +
+

Inverse Text

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups + carrot cake + topping chupa chups.

+

Last updated 3 mins ago

+
+
+
+
+
+ Card image +
+

Inverse Text

+

Sugar plum tiramisu sweet. Cake jelly marshmallow cotton candy chupa chups + carrot cake + topping chupa chups.

+

Last updated 3 mins ago

+
+
+
+
+
+ element 04 +
+

New Arriaval

+

Donut toffee candy brownie soufflé macaroon.

+ +
+
+
+
+
+ Card image cap +
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/cards/bootstrap/bootstrap.component.spec.ts b/src/app/content/cards/bootstrap/bootstrap.component.spec.ts new file mode 100644 index 0000000..fb5b7ac --- /dev/null +++ b/src/app/content/cards/bootstrap/bootstrap.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BootstrapComponent } from './bootstrap.component'; + +describe('BootstrapComponent', () => { + let component: BootstrapComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BootstrapComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BootstrapComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/cards/bootstrap/bootstrap.component.ts b/src/app/content/cards/bootstrap/bootstrap.component.ts new file mode 100644 index 0000000..d5050b1 --- /dev/null +++ b/src/app/content/cards/bootstrap/bootstrap.component.ts @@ -0,0 +1,110 @@ +import { Component, OnInit } from '@angular/core'; +import { Validators, FormBuilder, FormGroup } from '@angular/forms'; +import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-bootstrap', + templateUrl: './bootstrap.component.html', + styleUrls: ['./bootstrap.component.css'] +}) +export class BootstrapComponent implements OnInit { + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + contactForm: FormGroup; + projectInfo: FormGroup; + userProfile: FormGroup; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = [ + 'less than 500$', + '500$ - 1000$', + '1000$ - 2000$', + 'more than 20000$' + ]; + + carouselOne = [ + '../../../assets/images/carousel/02.jpg', + '../../../assets/images/carousel/03.jpg', + '../../../assets/images/carousel/01.jpg' + ]; + + carouselTwo = [ + '../../../assets/images/carousel/08.jpg', + '../../../assets/images/carousel/03.jpg', + '../../../assets/images/carousel/01.jpg' + ]; + + constructor(private formBuilder: FormBuilder, config: NgbCarouselConfig) { + config.interval = 3000; + config.keyboard = false; + } + + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Bootstrap Cards', + links: [ + { + name: 'Home', + isLink: true, + link: '/dashboard/sales' + }, + { + name: 'Cards', + isLink: true, + link: '#' + } + ] + }; + + this.contactForm = this.formBuilder.group({ + name: ['', Validators.required], + email: ['', Validators.required], + message: ['', Validators.required] + }); + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + aboutProject: ['', Validators.required] + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + bio: ['', Validators.required] + }); + } + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } +} diff --git a/src/app/content/cards/cards.module.spec.ts b/src/app/content/cards/cards.module.spec.ts new file mode 100644 index 0000000..de50f54 --- /dev/null +++ b/src/app/content/cards/cards.module.spec.ts @@ -0,0 +1,13 @@ +import { CardsModule } from './cards.module'; + +describe('CardsModule', () => { + let cardsModule: CardsModule; + + beforeEach(() => { + cardsModule = new CardsModule(); + }); + + it('should create an instance', () => { + expect(cardsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/cards/cards.module.ts b/src/app/content/cards/cards.module.ts new file mode 100644 index 0000000..9b47018 --- /dev/null +++ b/src/app/content/cards/cards.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { CardModule } from '../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { ReactiveFormsModule } from '@angular/forms'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; +import { MatchHeightModule } from '../partials/general/match-height/match-height.module'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + NgbModule, + MatchHeightModule, + BreadcrumbModule, + ReactiveFormsModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([{ + path: 'bootstrap', + component: BootstrapComponent + }, + ]) + ], + declarations: [BootstrapComponent], + exports: [RouterModule] +}) +export class CardsModule { } diff --git a/src/app/content/charts-maps/chartjs/chartjs.module.spec.ts b/src/app/content/charts-maps/chartjs/chartjs.module.spec.ts new file mode 100644 index 0000000..1ae5f9f --- /dev/null +++ b/src/app/content/charts-maps/chartjs/chartjs.module.spec.ts @@ -0,0 +1,13 @@ +import { ChartjsModule } from './chartjs.module'; + +describe('ChartjsModule', () => { + let chartjsModule: ChartjsModule; + + beforeEach(() => { + chartjsModule = new ChartjsModule(); + }); + + it('should create an instance', () => { + expect(chartjsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/charts-maps/chartjs/chartjs.module.ts b/src/app/content/charts-maps/chartjs/chartjs.module.ts new file mode 100644 index 0000000..5ab5691 --- /dev/null +++ b/src/app/content/charts-maps/chartjs/chartjs.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { NgChartsModule } from 'ng2-charts'; +import { ChartsComponent } from './charts/charts.component'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; + +@NgModule({ + imports: [ + CommonModule, + BreadcrumbModule, + NgChartsModule, + CardModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'charts', + component: ChartsComponent + } + ]) + ], + declarations: [ChartsComponent] +}) +export class ChartjsModule { } diff --git a/src/app/content/charts-maps/chartjs/charts/chartjs.ts b/src/app/content/charts-maps/chartjs/charts/chartjs.ts new file mode 100644 index 0000000..ce2b463 --- /dev/null +++ b/src/app/content/charts-maps/chartjs/charts/chartjs.ts @@ -0,0 +1,636 @@ +///////////////////// start linechart /////////// +export const lineChartData: Array = [ + { + data: [56, 70, 55, 46, 67, 52, 70], label: 'Series C', + backgroundColor: 'rgb(138,233,204,0.5)', + borderColor: 'rgb(138,233,204,1)', + pointBackgroundColor: 'rgb(138,233,204,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(138,233,204,0.2)', + fill: true, + lineTension: 0.4, + }, + { + data: [28, 48, 35, 29, 46, 27, 60], label: 'Series B', + backgroundColor: 'rgb(68,186,239,0.7)', + borderColor: 'rgb(168,186,239,1)', + pointBackgroundColor: 'rgb(168,186,239,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(168,186,239,1)', + fill: true, + lineTension: 0.4, + }, + { + data: [0, 20, 11, 19, 10, 22, 9], label: 'Series A', + backgroundColor: 'rgb(1,57,204,2.11)', + borderColor: 'rgb(166,157,204,1)', + pointBackgroundColor: 'rgb(166,157,204,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(166,157,204,1)', + fill: true, + lineTension: 0.4, + } +]; +export const lineChartLabels: Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; +export const lineChartOptions: any = { + animation: { + duration: 1000, // general animation timebar + easing: 'easeOutBack' + }, + hover: { + animationDuration: 1000, // duration of animations when hovering an item + }, + responsiveAnimationDuration: 1000, // animation duration after a resize + responsive: true, + maintainAspectRatio: false, + scales: { + xAxes: [{ + display: true, + ticks: { + padding: 4 + }, + gridLines: { + color: '#f3f3f3', + drawTicks: false, + }, + title:'Month', + scaleLabel: { + display: true, + text: 'Month', + } + }], + yAxes: [{ + display: true, + gridLines: { + color: '#f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + display: true, + labelString: 'Value', + } + }] + }, +}; +export const lineChartColors: Array = [ + { + backgroundColor: 'rgb(138,233,204,0.5)', + borderColor: 'rgb(138,233,204,1)', + pointBackgroundColor: 'rgb(138,233,204,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(138,233,204,0.2)' + }, + { + backgroundColor: 'rgb(68,186,239,0.8)', + borderColor: 'rgb(168,186,239,1)', + pointBackgroundColor: 'rgb(168,186,239,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(168,186,239,1)' + }, + { + backgroundColor: 'rgb(1,57,204,2.5)', + borderColor: 'rgb(166,157,204,1)', + pointBackgroundColor: 'rgb(166,157,204,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(166,157,204,1)' + } + +]; +export const lineChartLegend = true; +export const lineChartType = 'line'; + +///////////////////// Start AreaChart/////////// + +export const areaChartData: Array = [ + { + data: [0, 150, 140, 105, 190, 230, 270], label: 'Series A', + backgroundColor: 'rgb(237,238,240,0.4)', + borderColor: 'transparent', + pointBackgroundColor: '#FFF', + pointBorderColor: 'rgb(237,238,240,0.4)', + pointHoverBackgroundColor: 'rgb(237,238,240,0.4)', + pointRadius: '5', + pointHoverBorderColor: '#FFF', + pointHoverRadius: '5', + pointBorderWidth: '2', + fill: true, + lineTension: 0.4, }, + { + data: [0, 90, 120, 240, 140, 250, 190], label: 'Series B', + backgroundColor: 'rgb(133,158,233,0.9)', + borderColor: 'transparent', + pointBackgroundColor: '#FFF', + pointBorderColor: 'rgb(133,158,233,0.9)', + pointHoverBackgroundColor: 'rgb(133,158,233,0.9)', + pointRadius: '5', + pointHoverBorderColor: '#FFF', + pointHoverRadius: '5', + pointBorderWidth: '2' , + fill: true, + lineTension: 0.4,} +]; +export const areaChartLabels: Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; +export const areaChartOptions: any = { + animation: { + duration: 1000, // general animation time + easing: 'easeOutBack' + }, + hover: { + animationDuration: 1000, // duration of animations when hovering an item + }, + responsiveAnimationDuration: 1000, // animation duration after a resize + responsive: true, + maintainAspectRatio: false, + scales: { + xAxes: [{ + display: true, + gridLines: { + color: '#f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + display: true, + labelString: 'Month' + } + }], + yAxes: [{ + display: true, + gridLines: { + color: '#f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + display: true, + labelString: 'Value' + } + }] + }, +}; +export const areaChartColors: Array = [ + { + backgroundColor: 'rgb(237,238,240,0.4)', + borderColor: 'transparent', + pointBackgroundColor: '#FFF', + pointBorderColor: 'rgb(237,238,240,0.4)', + pointHoverBackgroundColor: 'rgb(237,238,240,0.4)', + pointRadius: '5', + pointHoverBorderColor: '#FFF', + pointHoverRadius: '5', + pointBorderWidth: '2' + }, + { + + backgroundColor: 'rgb(133,158,233,0.9)', + borderColor: 'transparent', + pointBackgroundColor: '#FFF', + pointBorderColor: 'rgb(133,158,233,0.9)', + pointHoverBackgroundColor: 'rgb(133,158,233,0.9)', + pointRadius: '5', + pointHoverBorderColor: '#FFF', + pointHoverRadius: '5', + pointBorderWidth: '2' + }, + +]; +export const areaChartLegend = true; +export const areaChartType = 'line'; + +///////////////////// End AreaChart/////////// + +///////////////////// End ScatterChart/////////// +// scatterChart// +export const scatterChartData: Array = [ + { + data: [ + { + x: 1, + y: -0.01711, + }, { + x: 1.26, + y: -2.708e-2, + }, { + x: 1.58, + y: -4.285e-2, + }, { + x: 2.0, + y: -6.772e-2, + }, { + x: 2.51, + y: -1.068e-1, + }, { + x: 3.16, + y: -1.681e-1, + }, { + x: 3.98, + y: -2.635e-1, + }, { + x: 5.01, + y: -4.106e-1, + }, { + x: 6.31, + y: -6.339e-1, + }, { + x: 7.94, + y: -9.659e-1, + }, { + x: 10.00, + y: -1.445, + }, { + x: 12.6, + y: -2.110, + }, { + x: 15.8, + y: -2.992, + }, { + x: 20.0, + y: -4.102, + }, { + x: 25.1, + y: -5.429, + }, { + x: 31.6, + y: -6.944, + }, { + x: 39.8, + y: -8.607, + }, { + x: 50.1, + y: -1.038e1, + }, { + x: 63.1, + y: -1.223e1, + }, { + x: 79.4, + y: -1.413e1, + }, { + x: 100.00, + y: -1.607e1, + }, { + x: 126, + y: -1.803e1, + }, { + x: 158, + y: -2e1, + }, { + x: 200, + y: -2.199e1, + }, { + x: 251, + y: -2.398e1, + }, { + x: 316, + y: -2.597e1, + }, { + x: 398, + y: -2.797e1, + }, { + x: 501, + y: -2.996e1, + }, { + x: 631, + y: -3.196e1, + }, { + x: 794, + y: -3.396e1, + }, { + x: 1000, + y: -3.596e1, + } + ], + label: 'V(node2)', + backgroundColor: 'rgba(81,117,224,.6)', + borderColor: 'transparent', + pointBorderColor: '#5175E0', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + } + +]; +export const scatterChartLabels: Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; +export const scatterChartOptions: any = { + animation: { + duration: 1000, // general animation time + easing: 'easeOutBack' + }, + hover: { + animationDuration: 1000, // duration of animations when hovering an item + }, + responsiveAnimationDuration: 1000, // animation duration after a resize + responsive: true, + maintainAspectRatio: false, + + scales: { + myScale: { + type: 'logarithmic', + position: 'bottom', + gridLines: { + zeroLineColor: 'rgba(0,0,0,.1)', + color: '#f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + labelString: 'Frequency', + display: true, + } + }, + yAxes: [{ + type: 'linear', + ticks: { + padding: 4, + userCallback: function (tick) { + return tick.toString() + 'dB'; + } + }, + gridLines: { + zeroLineColor: 'rgba(81,117,224,1)', + color: '#f3f3f3', + drawTicks: false, + }, + scaleLabel: { + labelString: 'Voltage', + display: true + } + }] + } +}; + +export const scatterChartLegend = true; +export const scatterChartType = 'scatter'; + +///////////////////// Start scatterChart /////////////// + +///////////////////// Start Barchart /////////////// +export const barChartOptions: any = { + responsive: true, + scaleShowVerticalLines: false, + maintainAspectRatio: false, + scales: { + xAxes: [{ + categoryPercentage: 0.5 + }] +} +}; +export const barChartLabels: string[] = ['2006', '2007', '2008', '2009', '2010', '2011', '2012']; +export const barChartType = 'bar'; +export const barChartLegend = true; +export const barChartData: any[] = [ + { + data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A', + backgroundColor: '#28d094', + borderColor: '#28d094', + pointBackgroundColor: '#28d094', + pointBorderColor: '#28d094', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#28d094', + barPercentage: 0.9, + categoryPercentage: 0.5 }, + { + data: [28, 48, 40, 59, 86, 27, 90], label: 'Series B', + backgroundColor: '#f98e76', + borderColor: '#f98e76', + pointBackgroundColor: '#f98e76', + pointBorderColor: '#f98e76', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#f98e76', + barPercentage: 0.9, + categoryPercentage: 0.5 } +]; +export const barChartColors: Array = [ + { + + }, + { + + }, +]; + +///////////////////// End barchart//////////////// + +///////////////////// Start Doughnut//////////////// + +export const doughnutChartLabels: string[] = ['January', 'February', 'March', 'April', 'May']; +export const doughnutChartData: any[] = [350, 250, 100, 200, 80]; +export const doughnutChartType = 'doughnut'; +export const doughnutChartColors: any[] = ['#00a5a8', '#28d094', '#ff4558', '#ff7d4d', '#626e82']; +export const doughnutChartOptions: any = { + animation: false, + responsive: true, + maintainAspectRatio: false +}; + +///////////////////// End Doughnut//////////////// + +///////////////////// Start Radar//////////////// + +export const radarChartLabels: string[] = ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running']; +export const radarChartData: any[] = [ + { label: 'Series A', + data: [65, 59, 90, 81, 56, 55, 40], + fill: true, + backgroundColor: 'rgba(245,0,87,.3)', + borderColor: 'rgba(229,229,229,0.7)', + pointBackgroundColor: 'rgba(245,0,87,.3)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(245,0,87)'}, + + { label: 'Series B', + data: [28, 48, 40, 19, 96, 27, 100], + fill: true, + backgroundColor: 'rgba(29,233,182,.6)', + borderColor: 'rgba(229,229,229,0.7)', + pointBackgroundColor: 'rgb(29, 233,182)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgb(29, 233,182)' } +]; +export const radarChartType = 'radar'; + +export const radarChartOptions: any = { + animation: false, + responsive: true, + maintainAspectRatio: false +}; +///////////////////// End Radar//////////////// + + +///////////////////// start PieChart//////////////// + +export const pieChartLabels: string[] = ['January', 'February', 'March', 'April', 'May']; +export const pieChartData: any[] = [300, 200, 100, 150, 80]; +export const pieChartType = 'pie'; +export const pieChartColors: any[] = ['#00a5a8', '#28d094', '#ff4558', '#ff7d4d', '#626e82']; +export const pieChartOptions: any = { + animation: false, + responsive: true, + maintainAspectRatio: false +}; +///////////////////// end Pie chart //////////////// + +///////////////////// start polar-chart/////////// +// PolarArea +export const polarAreaChartLabels: string[] = ['January', 'February', 'March', 'April', 'May']; +export const polarAreaChartData: any[] = [300, 500, 100, 40, 120]; +export const polarAreaLegend = true; +export const ploarChartColors: any[] = ['#00a5a8', '#28d094', '#ff4558', '#ff7d4d', '#626e82']; +export const polarChartBorderColor: any = '#fff'; +export const polarAreaChartType = 'polarArea'; +export const polarChartOptions: any = { + animation: false, + responsive: true, + maintainAspectRatio: false +}; +///////////////////// end polar-chart/////////// + +// lineChartsData// +export const lineChartsData: Array = [ + + { + data: [65, 59, 80, 81, 56, 55, 40], + label: 'My First dataset', + fill: false, + borderDash: [5, 5], + borderColor: '#9C27B0', + pointBorderColor: '#9C27B0', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + lineTension: 0.4, + }, + { + data: [28, 48, 40, 19, 86, 27, 90], label: 'My Second dataset', + fill: false, + borderDash: [5, 5], + borderColor: '#00A5A8', + pointBorderColor: '#00A5A8', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + lineTension: 0.4, + }, + + { + data: [45, 25, 16, 36, 67, 18, 76], label: 'My Third dataset - No bezier', + lineTension: 0, + fill: false, + borderColor: '#FF7D4D', + pointBorderColor: '#FF7D4D', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + } + +]; +export const lineChartsLabels: Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; +export const lineChartsOptions: any = { + animation: { + duration: 1000, // general animation time + }, + hover: { + animationDuration: 1000, // duration of animations when hovering an item + mode: 'label' + }, + responsiveAnimationDuration: 1000, // animation duration after a resize + responsive: true, + maintainAspectRatio: false, + legend: { + position: 'bottom', + }, + scales: { + myScale: [{ + display: true, + gridLines: { + color: 'f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + display: true, + labelString: 'Month' + } + }], + yAxes: [{ + display: true, + gridLines: { + color: '#f3f3f3', + drawTicks: false, + }, + ticks: { + padding: 4 + }, + scaleLabel: { + display: true, + labelString: 'Value' + } + }] + }, + title: { + display: true, + text: 'Chart.js Line Chart - Legend' + } +}; +export const lineChartsColors: Array = [ + { + fill: false, + borderDash: [5, 5], + borderColor: '#9C27B0', + pointBorderColor: '#9C27B0', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + }, + { + + fill: false, + borderDash: [5, 5], + borderColor: '#00A5A8', + pointBorderColor: '#00A5A8', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + }, + { + lineTension: 0, + fill: false, + borderColor: '#FF7D4D', + pointBorderColor: '#FF7D4D', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + }, +]; +export const lineChartsLegend = true; +export const lineChartsType = 'line'; + +// lineChartsData// + + + diff --git a/src/app/content/charts-maps/chartjs/charts/charts.component.css b/src/app/content/charts-maps/chartjs/charts/charts.component.css new file mode 100644 index 0000000..ee85e97 --- /dev/null +++ b/src/app/content/charts-maps/chartjs/charts/charts.component.css @@ -0,0 +1,34 @@ + + +:host ::ng-deep .barchart { + -webkit-animation: chartjs-render-animation 0.001s; + animation: chartjs-render-animation 0.001s; + +} +:host ::ng-deep .lineCharts { + -webkit-animation: chartjs-render-animation 0.001s; + animation: chartjs-render-animation 0.001s; + +} + +:host ::ng-deep .radarChart { + height: 470px !important; +} + +:host ::ng-deep .doughnutChart { + text-align: center !important; +} + +:host ::ng-deep .pieChart { + text-align: center !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +@media(max-width:767px) { + :host ::ng-deep .chart + { + height:400px !important; + } +} \ No newline at end of file diff --git a/src/app/content/charts-maps/chartjs/charts/charts.component.html b/src/app/content/charts-maps/chartjs/charts/charts.component.html new file mode 100644 index 0000000..0167277 --- /dev/null +++ b/src/app/content/charts-maps/chartjs/charts/charts.component.html @@ -0,0 +1,200 @@ + +
+
+
+ +
+
+ +
+
+
+ + + Bar charts + + +
+ +
+
+
+
+
+
+ + +
+
+
+ + + Line Charts + + +
+
+ +
+
+
+
+
+
+
+ + +
+
+
+ + + Area Line charts + + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+ + + Line Stacked Area Chart + + + +
+
+ + + +
+
+
+
+
+
+
+ + +
+
+
+ + + Scatter Logx Chart + + +
+
+ +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+

Pie Chart

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

Doughnut Chart

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

Polar Chart

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

Radar Chart

+ +
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/src/app/content/charts-maps/chartjs/charts/charts.component.spec.ts b/src/app/content/charts-maps/chartjs/charts/charts.component.spec.ts new file mode 100644 index 0000000..c7a2e43 --- /dev/null +++ b/src/app/content/charts-maps/chartjs/charts/charts.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ChartsComponent } from './charts.component'; + +describe('ChartsComponent', () => { + let component: ChartsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ChartsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChartsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/charts-maps/chartjs/charts/charts.component.ts b/src/app/content/charts-maps/chartjs/charts/charts.component.ts new file mode 100644 index 0000000..98e27ae --- /dev/null +++ b/src/app/content/charts-maps/chartjs/charts/charts.component.ts @@ -0,0 +1,165 @@ +import { Component, OnInit } from "@angular/core"; +import { NgBlockUI, BlockUI } from "ng-block-ui"; +import { ChartConfiguration, ChartOptions } from 'chart.js'; + +import * as chartsData from "./chartjs"; +import { title } from "process"; + +@Component({ + selector: "app-charts", + templateUrl: "./charts.component.html", + styleUrls: ["./charts.component.css"], +}) +export class ChartsComponent implements OnInit { + @BlockUI("barCharts") blockUIBarCharts: NgBlockUI; + @BlockUI("lineCharts") blockUILineCharts: NgBlockUI; + + public breadcrumb: any; + showNew: false; + + options = { + close: true, + expand: true, + minimize: true, + reload: true, + }; + + /** + * barChart + */ + public barChartOptions = chartsData.barChartOptions; + public barChartLabels = chartsData.barChartLabels; + public barChartType = chartsData.barChartType; + public barChartLegend = chartsData.barChartLegend; + public barChartData = chartsData.barChartData; + public barChartColors = chartsData.barChartColors; + + /** + * lineChart + */ + public lineChartData = chartsData.lineChartData; + public lineChartLabels = chartsData.lineChartLabels; + public lineChartOptions = chartsData.lineChartOptions; + public lineChartColors = chartsData.lineChartColors; + public lineChartLegend = chartsData.lineChartLegend; + public lineChartType = chartsData.lineChartType; + + /** + * areaChart + */ + public areaChartData = chartsData.areaChartData; + public areaChartLabels = chartsData.areaChartLabels; + public areaChartOptions = chartsData.areaChartOptions; + public areaChartColors = chartsData.areaChartColors; + public areaChartLegend = chartsData.areaChartLegend; + public areaChartType = chartsData.areaChartType; + + /** + * scatterChartData + */ + public scatterChartData = chartsData.scatterChartData; + public scatterChartLabels = chartsData.scatterChartLabels; + public scatterChartOptions = chartsData.scatterChartOptions; + // public scatterChartColors = chartsData.scatterChartColors; + public scatterChartLegend = chartsData.scatterChartLegend; + public scatterChartType = chartsData.scatterChartType; + /** + * Doughnut + */ + + + public doughnutChartLabels: string[] = chartsData.doughnutChartLabels;; + public doughnutChartData: ChartConfiguration<'doughnut'>['data']['datasets'] = [ + { + data: chartsData.doughnutChartData, + backgroundColor: chartsData.doughnutChartColors, + }, + ]; + public doughnutChartOptions = chartsData.doughnutChartOptions; + /** + * Radar + */ + public radarChartLabels = chartsData.radarChartLabels; + public radarChartData = chartsData.radarChartData; + public radarChartType = chartsData.radarChartType; + public radarChartOptions = chartsData.radarChartOptions; + + /** + * Pie + */ + public pieChartOptions: ChartOptions<'pie'> = { + responsive: true, + }; + public pieChartLabels = chartsData.pieChartLabels; + public pieChartData = [{ + data: chartsData.pieChartData, + backgroundColor: chartsData.pieChartColors, + }]; + public pieChartLegend = true; + public pieChartPlugins = []; + public pieChartType = chartsData.pieChartType; + + /** + * PolarArea + */ + public polarAreaChartLabels = chartsData.polarAreaChartLabels; + public polarAreaChartData: ChartConfiguration<'polarArea'>['data']['datasets'] = [ + { + data: chartsData.polarAreaChartData, + backgroundColor: chartsData.ploarChartColors, + borderColor: chartsData.polarChartBorderColor, + } + ]; + public polarAreaLegend = chartsData.polarAreaLegend; + public polarAreaChartType = chartsData.polarAreaChartType; + public polarChartOptions = chartsData.polarChartOptions; + + /** + * lineChart + */ + public lineChartsData = chartsData.lineChartsData; + public lineChartsLabels = chartsData.lineChartsLabels; + public lineChartsOptions = chartsData.lineChartsOptions; + public lineChartsColors = chartsData.lineChartsColors; + public lineChartsLegend = chartsData.lineChartsLegend; + public lineChartsType = chartsData.lineChartsType; + + /** + * OnInit + */ + ngOnInit() { + this.breadcrumb = { + mainlabel: "Chartjs Charts", + links: [ + { + name: "Home", + isLink: true, + link: "/dashboard/sales", + }, + { + name: "Chartjs", + isLink: true, + link: "#", + }, + ], + }; + } + /** + * Reload card + */ + reloadBarCharts() { + this.blockUIBarCharts.start("Loading.."); + + setTimeout(() => { + this.blockUIBarCharts.stop(); + }, 2500); + } + + reloadLineCharts() { + this.blockUILineCharts.start("Loading.."); + + setTimeout(() => { + this.blockUILineCharts.stop(); + }, 2500); + } +} diff --git a/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.css b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.css new file mode 100644 index 0000000..127b35b --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.css @@ -0,0 +1,173 @@ +:host ::ng-deep .lineArea2 .ct-point-circle { + stroke-width: 2px; + fill: #fff; + stroke: #ff8d60; +} + +:host ::ng-deep .dragdrop-container { + min-height: 200px !important; +} + +:host ::ng-deep .ct-series-b .ct-line { + stroke: #ff8d60; + stroke-width: 2px; +} + +:host ::ng-deep .ct-series-a .ct-line { + stroke: #84cfd1; + stroke-width: 2px; +} + +:host ::ng-deep .ct-series-c .ct-line { + stroke: #ff586b; + stroke-width: 2px; +} + +:host ::ng-deep .ct-series-a .ct-area { + fill: #0eb8de; +} +:host ::ng-deep .ct-series-a .ct-point { + stroke: #84cfd1; +} +:host ::ng-deep .lineArea2 .ct-series-a .ct-point-circle { + stroke: #84cfd1; + stroke-width: 2px; +} + +:host ::ng-deep .lineChart1 .ct-series-a .ct-point { + stroke-width: 0px; + + stroke: #84cfd1; +} + +:host ::ng-deep .lineChart1 .ct-series-b .ct-point { + stroke-width: 0px; + + stroke: #ff8d60; +} + +:host ::ng-deep .lineChart1 .ct-series-c .ct-point { + stroke-width: 0px; + + stroke: #ff586b; +} + +:host ::ng-deep .lineChart3 .ct-series-a .ct-point { + stroke-width: 10px; + + stroke: #84cfd1; +} + +:host ::ng-deep .lineChart3 .ct-series-b .ct-point { + stroke-width: 10px; + + stroke: #ff8d60; +} + +:host ::ng-deep .lineChart3 .ct-series-c .ct-point { + stroke-width: 10px; + + stroke: #ff586b; +} + +:host ::ng-deep .lineArea3 .ct-series-b .ct-point-circle { + stroke-width: 2px; + fill: #fff; + stroke: #ff8d60; +} + +:host ::ng-deep .lineArea3 .ct-series-a .ct-point-circle { + stroke-width: 2px; + fill: #fff; + stroke: #84cfd1; +} +:host ::ng-deep .lineChart2 .ct-series-a .ct-point-circle { + stroke: #84cfd1; + stroke-width: 2px; + fill: #fff; +} + +:host ::ng-deep .lineChart2 .ct-series-b .ct-point-circle { + stroke: #ff8d60; + stroke-width: 2px; + fill: #fff; +} + +:host ::ng-deep .bar-chart .ct-series-b .ct-bar { + + stroke: #ff8d60; +} + +:host ::ng-deep .bar-chart .ct-series-a .ct-bar { + + stroke: #009da0; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-a .ct-bar { + stroke: #009da0; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-b .ct-bar { + stroke: #ff8d60; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-c .ct-bar { + stroke: #ff586b; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-d .ct-bar { + stroke: #1cbcd8 +} + +:host ::ng-deep .distributed-bar-chart .ct-series-e .ct-bar { + stroke: #0cc27e; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-f .ct-bar { + stroke: #9c27b0; +} + +:host ::ng-deep .distributed-bar-chart .ct-series-f .ct-bar { + stroke: #ffc107; + ; +} + +:host ::ng-deep .ct-series-a .ct-slice-donut { + stroke: #009da0; +} + +:host ::ng-deep .ct-series-b .ct-slice-donut { + stroke: #ff8d60; +} + +:host ::ng-deep .ct-series-c .ct-slice-donut { + stroke: #ff586b; +} + +:host ::ng-deep .ct-series-d .ct-slice-donut { + stroke: #1cbcd8; +} + +:host ::ng-deep .Bi-polar .ct-series-a .ct-area { + fill: #84cfd1; + fill-opacity: 0.6; +} + +:host ::ng-deep .Bi-polar .ct-series-b .ct-area { + fill: #ff586b; + fill-opacity: 0.6; +} + +:host ::ng-deep .Bi-polar .ct-series-c .ct-area { + fill: #f0c5de; + fill-opacity: 0.6; +} + +:host ::ng-deep .svg { + overflow: hidden; + vertical-align: middle; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.html b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.html new file mode 100644 index 0000000..41449a4 --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.html @@ -0,0 +1,292 @@ +
+
+
+ +
+
+ + +
+
+ + + Line with Area Chart(Filled Holes in data) + + +
+ + +
+
+
+
+
+ + +
+
+ + + Line with Area Chart(Holes in Data) + + +
+ + +
+
+
+
+
+ + +
+
+
+
+

Line with Area Chart(Holes in Data)

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

Simple Line with Area Chart

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

Simple Line Chart

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

Line Chart(Holes in data)

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

Line Chart(Filled Holes in data)

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

Scatter Line Chart

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

Scatter Chart

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

Bi-polar Line Chart

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

Bar Chart

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

Distributed Series Bar Chart

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

Donut Chart

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

Donut Chart

+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+ diff --git a/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.spec.ts b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.spec.ts new file mode 100644 index 0000000..b4f88b2 --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LinechartsComponent } from './linecharts.component'; + +describe('LinechartsComponent', () => { + let component: LinechartsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LinechartsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LinechartsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.ts b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.ts new file mode 100644 index 0000000..0fd8a94 --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/linecharts/linecharts.component.ts @@ -0,0 +1,575 @@ +import { Component, OnInit } from '@angular/core'; +import * as Chartist from 'chartist'; +import { ChartEvent, ChartType } from 'ng-chartist'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; +/** + * Interface + */ +export interface Chart { + type: ChartType; + data: Chartist.IChartistData; + options?: any; + responsiveOptions?: any; + events?: ChartEvent; +} + +@Component({ + selector: 'app-linecharts', + templateUrl: './linecharts.component.html', + styleUrls: ['./linecharts.component.css'] +}) +export class LinechartsComponent implements OnInit { + + @BlockUI('lineWithAreaChartOne') blockUILineWithAreaChartOne: NgBlockUI; + @BlockUI('lineWithAreaChartTwo') blockUILineWithAreaChartTwo: NgBlockUI; + public breadcrumb: any; + data: any; + loadDataURL: string; + lineArea1: any; + lineArea2: any; + lineArea3: any; + lineArea4: any; + donutChart1: any; + donutChart2: any; + scatterChart: any; + scatterlineChart: any; + lineChart1: any; + lineChart2: any; + lineChart3: any; + biPolarLineChart: any; + barChart: any; + distributedSeriesBarChart: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor(private chartApiservice: ChartApiService) { + } + /** + * Get chart data + */ + getlineArea() { + const Chartdata = this.data; + // Line with Area Chart 1 Starts + this.lineArea1 = { + type: 'Line', + data: Chartdata['lineArea1'], + options: { + height: '300px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + axisY: { + low: 0, + scaleMinSpace: 50, + }, + axisX: { + showGrid: false + }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient', + x1: 0, + y1: 1, + x2: 0, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgba(255, 255, 255, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(38, 198, 218, 1)' + }); + }, + + }, + }; + // Line with Area Chart 1 Ends + + // Line with Area Chart 2 Starts + this.lineArea2 = { + type: 'Line', + data: Chartdata['lineArea2'], + options: { + height: '300px', + showArea: true, + fullWidth: true, + lineSmooth: Chartist.Interpolation.none(), + axisX: { + showGrid: false, + }, + axisY: { + low: 0, + scaleMinSpace: 50, + }, + chartPadding: { top: 0, right: 25, bottom: 0, left: 0 }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient1', + x1: 0, + y1: 1, + x2: 0, + y2: 0 + }).elem('stop', { + offset: 0.2, + 'stop-color': 'rgba(255, 255, 255, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(38, 198, 218, 1)' + }); + + defs.elem('linearGradient', { + id: 'gradient2', + x1: 0, + y1: 1, + x2: 0, + y2: 0 + }).elem('stop', { + offset: 0.5, + 'stop-color': 'rgba(255, 255, 255, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(255,141,96, 1)' + }); + }, + draw(data: any): void { + + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + }, + }; + // Line with Area Chart 2 Ends + + // Line with Area Chart 3 Starts + this.lineArea3 = { + type: 'Line', + data: Chartdata['lineArea3'], + options: { + height: '300px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + axisY: { + low: 0, + scaleMinSpace: 50, + } + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient', + x1: 0, + y1: 1, + x2: 0, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgba(255, 255, 255, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(38, 198, 218, 1)' + }); + }, + + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + }, + }; + // Line with Area Chart 3 Ends + + // Line with Area Chart 4 Starts + this.lineArea4 = { + type: 'Line', + data: Chartdata['lineArea4'], + options: { + fullwidth: true, + height: '300px', + low: 0, + showArea: true, + fullWidth: true, + }, + }; + // Line with Area Chart 4 Ends + + // Line Chart 1 Starts + this.lineChart1 = { + type: 'Line', + data: Chartdata['line1'], + options: { + fullwidth: true, + height: '300px', + axisX: { + showGrid: false, + }, + axisY: { + low: 0, + scaleMinSpace: 50, + }, + fullWidth: true, + chartPadding: { top: 0, right: 25, bottom: 0, left: 0 } + }, + }; + // Line Chart 1 Ends + + // Line Chart 2 Starts + this.lineChart2 = { + type: 'Line', + data: Chartdata['line2'], + options: { + fullwidth: true, + height: '300px', + axisX: { + showGrid: false, + }, + axisY: { + low: 0, + scaleMinSpace: 50, + }, + fullWidth: true, + chartPadding: { top: 0, right: 25, bottom: 0, left: 0 }, + }, + responsiveOptions: [ + [{ + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + + data.element.replace(circle); + } + } + }, + }; + // Line Chart 2 Ends + + // Line Chart 3 Starts + this.lineChart3 = { + type: 'Line', + data: Chartdata['Line3'], + options: { + fullwidth: true, + height: '300px', + axisX: { showGrid: false }, axisY: { + scaleMinSpace: 30, + }, fullWidth: true, + chartPadding: { top: 0, right: 50, bottom: 0, left: 0 }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + }; + // Line Chart 3 Ends + + // Scatter Line Chart Starts + this.scatterlineChart = { + type: 'Line', + data: Chartdata['ScatterLine'], + options: { + fullwidth: true, + height: '300px', + axisX: { showGrid: false }, axisY: { + scaleMinSpace: 30, + }, fullWidth: true, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px) and (min-hight: 300px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + }; + // Scatter Line Chart Ends + + // Scatter Chart Starts + this.scatterChart = { + type: 'Line', + data: Chartdata['Scatter'], + options: { + fullwidth: true, + height: '300px', + showLine: false, + axisX: { + labelInterpolationFnc: function (value: number, index: number): string { + return index % 13 === 0 ? `W${value}` : null; + }, + showGrid: false + }, + axisY: { + scaleMinSpace: 30, + } + }, + responsiveOptions: [ + [ + 'screen and (min-width: 640px)', + { + axisX: { + labelInterpolationFnc: function (value: number, index: number): string { + return index % 4 === 0 ? `W${value}` : null; + } + } + } + ] + ] + }; + // Scatter Chart Ends + + // Bi-polar Line Chart Starts + this.biPolarLineChart = { + type: 'Line', + data: Chartdata['Bi-PolarLine'], + options: { + fullwidth: true, + height: '350px', + showArea: true, + showLine: false, + showPoint: false, + fullWidth: true, + axisX: { + showGrid: false, + offset: 100, + labelInterpolationFnc: function (value: number, index: number): number { + return index % 2 === 0 ? value : null; + } + }, + axisY: { + scaleMinSpace: 30, + } + } + }; + // Bi-polar Line Chart Ends + + // Bar Chart Starts + this.barChart = { + type: 'Bar', + data: Chartdata['Bar'], + options: { + fullwidth: true, + height: '350px', + seriesBarDistance: 21, + axisX: { + showGrid: false, offset: 100 + }, + axisY: { + scaleMinSpace: 30, + } + }, + }; + // Bar Chart Ends + + // Distributed Series Bar Chart Starts + this.distributedSeriesBarChart = { + type: 'Bar', + data: Chartdata['DistributedSeries'], + options: { + fullwidth: true, + height: '300px', + showGrid: false, + distributeSeries: true, + axisY: { + scaleMinSpace: 30, + } + }, + }; + // Distributed Series Bar Chart Ends + + // Donut Chart 1 Starts + this.donutChart1 = { + type: 'Pie', + data: Chartdata['donut'], + options: { + fullwidth: true, + height: '400px', + donut: true, + donutWidth: 60, + startAngle: 270, + total: 200, + showLabel: true, + }, + }; + // Donut Chart 1 Ends + + // Donut Chart 2 Starts + this.donutChart2 = { + type: 'Pie', + data: Chartdata['donut'], + options: { + fullwidth: true, + height: '400px', + donut: true, + showLabel: true, + labelDirection: 'implode', + }, + }; + // Donut Chart 2 Ends + } + + /** + * OnInit + */ + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Chartist Charts', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Chartist', + 'isLink': true, + 'link': '#' + } + ] + }; + + this.chartApiservice.getChartistData().subscribe(Response => { + this.data = Response; + this.getlineArea(); + }); + } + + /** + * Reload card + */ + reloadLineWithAreaChartOne() { + this.blockUILineWithAreaChartOne.start('Loading..'); + + setTimeout(() => { + this.blockUILineWithAreaChartOne.stop(); + }, 2500); + } + + /** + * Reload card + */ + reloadLineWithAreaChartTwo() { + this.blockUILineWithAreaChartTwo.start('Loading..'); + + setTimeout(() => { + this.blockUILineWithAreaChartTwo.stop(); + }, 2500); + } +} diff --git a/src/app/content/charts-maps/ngchartist/ngchartist.module.spec.ts b/src/app/content/charts-maps/ngchartist/ngchartist.module.spec.ts new file mode 100644 index 0000000..2c9c581 --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/ngchartist.module.spec.ts @@ -0,0 +1,13 @@ +import { NgchartistModule } from './ngchartist.module'; + +describe('NgchartistModule', () => { + let ngchartistModule: NgchartistModule; + + beforeEach(() => { + ngchartistModule = new NgchartistModule(); + }); + + it('should create an instance', () => { + expect(ngchartistModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/charts-maps/ngchartist/ngchartist.module.ts b/src/app/content/charts-maps/ngchartist/ngchartist.module.ts new file mode 100644 index 0000000..557c722 --- /dev/null +++ b/src/app/content/charts-maps/ngchartist/ngchartist.module.ts @@ -0,0 +1,30 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CardModule } from '../../partials/general/card/card.module'; +import { ChartistModule } from 'ng-chartist'; +import { RouterModule } from '@angular/router'; +import { LinechartsComponent } from './linecharts/linecharts.component'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + ChartistModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'linecharts', + component: LinechartsComponent + }, + ]), + ], + + declarations: [LinechartsComponent] +}) +export class NgchartistModule { } diff --git a/src/app/content/dashboard/dashboard.module.spec.ts b/src/app/content/dashboard/dashboard.module.spec.ts new file mode 100644 index 0000000..514b3f0 --- /dev/null +++ b/src/app/content/dashboard/dashboard.module.spec.ts @@ -0,0 +1,13 @@ +import { DashboardModule } from './dashboard.module'; + +describe('DashboardModule', () => { + let dashboardModule: DashboardModule; + + beforeEach(() => { + dashboardModule = new DashboardModule(); + }); + + it('should create an instance', () => { + expect(dashboardModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/dashboard/dashboard.module.ts b/src/app/content/dashboard/dashboard.module.ts new file mode 100644 index 0000000..5317737 --- /dev/null +++ b/src/app/content/dashboard/dashboard.module.ts @@ -0,0 +1,51 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { EcommerceComponent } from './ecommerce/ecommerce.component'; +import { ChartistModule } from 'ng-chartist'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { FormsModule } from '@angular/forms'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { CardModule } from '../partials/general/card/card.module'; +import { NgChartsModule } from 'ng2-charts'; +import { SalesComponent } from './sales/sales.component'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../_layout/blockui/block-template.component'; +import { MatchHeightModule } from '../partials/general/match-height/match-height.module'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { HospitalComponent } from './hospital/hospital.component'; + +@NgModule({ + imports: [ + CommonModule, + ChartistModule, + FormsModule, + NgChartsModule, + CardModule, + MatchHeightModule, + NgxDatatableModule, + PerfectScrollbarModule, + NgbModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'ecommerce', + component: EcommerceComponent + }, + { + path: 'sales', + component: SalesComponent + }, + { + path: 'hospital', + component: HospitalComponent + } + ]) + ], + declarations: [EcommerceComponent, SalesComponent, HospitalComponent], + + exports: [RouterModule] +}) +export class DashboardModule { } diff --git a/src/app/content/dashboard/ecommerce/ecommerce.component.css b/src/app/content/dashboard/ecommerce/ecommerce.component.css new file mode 100644 index 0000000..f3a4f96 --- /dev/null +++ b/src/app/content/dashboard/ecommerce/ecommerce.component.css @@ -0,0 +1,414 @@ +.avatar-xs { + width: 24px !important; + margin-right: 5px !important; +} + +.btn_set_padding { + padding: 0% !important; +} + +.chart_body_padding { + padding: 2rem !important; +} + +:host ::ng-deep .scoreLineShadow { + -webkit-filter: drop-shadow(0px 20px 11px rgba(0, 0, 0, 0.5)) !important; + filter: drop-shadow(0px 20px 11px rgba(0, 0, 0, 0.5)); +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-point-circle { + stroke-width: 5px; + stroke: #ffffff; + fill: #1e9ff2; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-point-circle { + stroke-width: 5px; + stroke: #ffffff; + fill: #58e0cd; + ; +} + +:host ::ng-deep .media { + display: flex; + align-items: flex-start; +} + + +:host ::ng-deep .position-relative { + position: relative !important; +} + +:host ::ng-deep .ct-series-b .ct-bar, +.ct-series-b .ct-slice-donut { + stroke: #beb6b6; +} + +:host ::ng-deep .progress:last-child { + width: 100% !important; +} + +:host ::ng-deep .areaChartLegend .ct-series-a .ct-line { + stroke: url(#gradient2); + stroke-width: 5px; + stroke-linecap: round; +} + +:host ::ng-deep .areaChartLegend .ct-series-a .ct-area { + fill: #ffffff; +} + +:host ::ng-deep .areaChartLegend .ct-series-a .ct-line { + stroke: #3da2ea; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-area { + fill: #4105f9f5; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-area { + fill: #03f7b2fa; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-b .ct-line { + stroke: #58e0cd; +} + +:host ::ng-deep .ecommercesaleslineArea .ct-series-a .ct-line { + stroke: #1e9ff2; +} + +:host ::ng-deep .barchart .ct-series-a .ct-bar { + stroke: #ff394f !important; + stroke-width: 7px !important; +} + +:host ::ng-deep .pull-up { + -webkit-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + -moz-transition: all 0.25s ease; + transition: all 0.25s ease; +} + +:host ::ng-deep .chart-info { + margin-top: 73px !important; +} + +.mb-3, +.my-3 { + margin-bottom: -4rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: -4.5rem !important; +} + +:host ::ng-deep .donut .ct-done .ct-slice-donut { + stroke: #28d094; + stroke-width: 24px !important; +} + +:host ::ng-deep .donut .ct-progress .ct-slice-donut { + stroke: #ff4558; + stroke-width: 16px !important; +} + +:host ::ng-deep .donut .ct-outstanding .ct-slice-donut { + stroke: #ff7d4d; + stroke-width: 8px !important; +} + +:host ::ng-deep .donut .ct-started .ct-slice-donut { + stroke: #666ECC; + stroke-width: 32px !important; +} + +:host ::ng-deep .donut .ct-label { + text-anchor: middle; + font-size: 20px; + fill: #868e96; +} + +:host ::ng-deep .Barchart { + display: block; + margin-left: -100px; + margin-bottom: -60px; + margin-top: -45px; +} + +:host ::ng-deep .Barchart .ct-label { + font-size: 0.75rem; + line-height: 15; +} + +.p { + margin-top: 1rem; + margin-bottom: -1.5rem; + font-size: large; + color: #6c757d !important; +} + +:host ::ng-deep .text-center .p { + margin-top: 2rem; + margin-bottom: -1.2rem; +} + +:host ::ng-deep .height-300 { + height: 250px !important; +} + +:host ::ng-deep .gradient-blackberry { + background-image: linear-gradient(45deg, #b9e2fa, #b9e2fa) !important; + margin-left: 48px; +} + +:host ::ng-deep .gradient-mint { + background-image: linear-gradient(45deg, #ff9ba6, #ff9ba6); + margin-left: 48px; +} + +:host ::ng-deep .gradient-info { + background-image: linear-gradient(45deg, #6ef9d6, #6ef9d6); + margin-left: 48px; +} + +:host ::ng-deep .extraPadding7 { + padding: 0.7rem; +} + +:host ::ng-deep .avatar-md { + width: 40px; +} + +:host ::ng-deep .square { + border-radius: 0% !important; + height: auto; + border: 2px solid #FFF !important; +} + +:host ::ng-deep .ps--active-x>.ps__rail-x { + display: none !important; +} + +:host ::ng-deep .border-top-0 { + padding: 1.25rem 2rem !important; +} + +:host ::ng-deep .btn-danger { + color: white !important; +} + +:host ::ng-deep .progress:last-child { + margin-bottom: 0rem; +} + + +:host ::ng-deep .btn.active { + outline: none; + -webkit-box-shadow: none !important; + box-shadow: none !important; + background-color: #2196F3 !important; + color: white !important; +} + +.btn { + cursor: pointer !important; +} + +.btn_dropdown { + background-color: white !important; +} + +:host ::ng-deep .text_color { + color: #0c84d1; +} + +:host ::ng-deep .progress { + box-shadow: 6px 6px 14px -1px rgba(62, 57, 107, .2); + margin-top: 1rem !important; +} + +:host ::ng-deep .btn-group { + position: absolute !important; +} + +@media only screen and (max-width:767px) { + .btn-group { + position: relative !important; + } +} + +:host ::ng-deep .text-muted { + color: #6b6f82 !important; +} + +:host ::ng-deep .mb-3, +.my-3 { + margin-bottom: 1.5rem !important; +} + +:host ::ng-deep .media { + display: flex; + align-items: flex-start; +} + +:host ::ng-deep .height-350 { + height: 250px !important; + margin-left: 18%; + margin-bottom: 55px; +} + +:host ::ng-deep .card-text:last-child { + margin-bottom: 0; + height: 430px; +} + +:host ::ng-deep .mb-3 { + margin-bottom: 1.1rem !important; +} + +:host ::ng-deep .chart-info .p { + margin-top: 0; + margin-bottom: 1rem; + margin-left: 4px; +} + +:host ::ng-deep .order-tbl_change th, +.order-tbl_change td { + padding-right: 0.8rem; +} + +:host ::ng-deep svg.ct-chart-bar { + width: 100% !important; + padding-top: 5%; +} + +:host ::ng-deep #donut-dashboard-chart { + margin-left: auto; + margin-right: auto; + display: flex; + align-items: center; + justify-content: center; +} + +:host ::ng-deep .pr_stats { + text-align: center +} + +:host ::ng-deep .height-300 { + width: 100%; +} + +:host ::ng-deep .alert_basics_charrt { + padding: 0; +} + +:host ::ng-deep .card-header .heading-elements a.btn { + color: white !important; +} + + +:host ::ng-deep .row_padding { + padding: 1.25rem 2rem !important; +} + +:host ::ng-deep .border_bottom { + margin-bottom: 0rem !important; +} + +:host ::ng-deep .top_space { + padding-top: 5% !important; +} + +:host ::ng-deep .border_top { + border-top: none !important; +} + +:host ::ng-deep .card-footer { + padding: 2rem !important; +} + +:host ::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-end { + text-anchor: middle; + font-family: sans-serif; + font-size: 12px; + font-weight: 700; +} + +:host ::ng-deep .ct-chart-bar .ct-label.ct-vertical.ct-start { + text-anchor: middle; + font-family: sans-serif; + font-size: 12px; + font-weight: 500; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .chartist-tooltip.bar_tooltip { + border-radius: 10px; + padding: 18px; + color: rgb(29, 28, 28); + height: 60px; + width: 80px; + background: rgba(255, 255, 255, 0.9); + border: solid 2px rgba(230, 230, 230, 0.9); + font-family: sans-serif; + font-size: 14px; + text-align: center; +} + +:host ::ng-deep .chartist-tooltip.donut_tooltip { + border-radius: 10px; + padding: 2px; + color: rgb(29, 28, 28); + height: 60px; + width: 90px; + background: rgba(255, 255, 255, 0.9); + border: solid 2px rgba(230, 230, 230, 0.9); + font-family: sans-serif; + font-size: 14px; + text-align: center; + top: 16.906px; +} + + +:host ::ng-deep .chartist-tooltip.tooltip-show { + opacity: 0.6 !important; +} + +:host ::ng-deep .chartist-tooltip.bar_tooltip:before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + width: 0; + height: 0; + margin-left: -15px; + border: 15px solid transparent; + border-top-color: rgba(255, 255, 255, 0.8); +} + +:host ::ng-deep .chartist-tooltip.donut_tooltip:before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + width: 0; + height: 0; + margin-left: -15px; + border: 15px solid transparent; + border-top-color: rgba(255, 255, 255, 0.8); +} +:host ::ng-deep .tab-content > .tab-pane, +.pill-content > .pill-pane { +display: block; +height: 0; +overflow-y: hidden; +} +:host ::ng-deep .tab-content > .active, +.pill-content > .active { +height: auto; +} \ No newline at end of file diff --git a/src/app/content/dashboard/ecommerce/ecommerce.component.html b/src/app/content/dashboard/ecommerce/ecommerce.component.html new file mode 100644 index 0000000..3284642 --- /dev/null +++ b/src/app/content/dashboard/ecommerce/ecommerce.component.html @@ -0,0 +1,510 @@ +
+
+
+
+
+ +
+
+
+
+
+
+
+

850

+
Products Sold
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

$748

+
Net Profit
+
+
+ +
+
+
+ + +
+
+
+
+
+ +
+
+
+
+
+
+

146

+
New Customers
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

99.89 %

+
Customer Satisfaction
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+
+
+ + + New Orders + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductCustomersTotal
iPhone X +
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +4 more +
  • +
+
$8999
Pixel 2 +
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
+
$5550
OnePlus +
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +3 more +
  • +
+
$9000
Galaxy +
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
+
$7500
Moto Z2 +
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +1 more +
  • +
+
$8500
+
+
+
+
+
+
+ + + +
+
+
+
+

Recent Transactions

+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
StatusInvoice#Customer NameProductsCategoriesShippingAmount
+ + {{row.status}} + + {{ row.invoice }} + + {{row.name}} + + + + + + + + + + {{ row.amount }}
+
+
+
+
+
+ + + +
+
+
+
+
+ + +
+
+ +
+
+
+ +
+
+
+
+

Basic Card

+
+
+ Card image cap +
+

Some quick example text to build on the card title and make up the bulk of the + card's content.

+ Card link + Another link +
+
+ +
+
+
+
+
+

Project Stats

+
+
+

Project Tasks

+
+ + +
+
+
+
+ 23% - Done +
+ +
+
+
+ 14% - In Progress +
+ +
+
+
+
+
+ 35% - Remaining +
+ +
+
+
+ 28% - Started +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/dashboard/ecommerce/ecommerce.component.spec.ts b/src/app/content/dashboard/ecommerce/ecommerce.component.spec.ts new file mode 100644 index 0000000..30c6edb --- /dev/null +++ b/src/app/content/dashboard/ecommerce/ecommerce.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { EcommerceComponent } from './ecommerce.component'; + +describe('EcommerceComponent', () => { + let component: EcommerceComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ EcommerceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EcommerceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/dashboard/ecommerce/ecommerce.component.ts b/src/app/content/dashboard/ecommerce/ecommerce.component.ts new file mode 100644 index 0000000..5dd1daf --- /dev/null +++ b/src/app/content/dashboard/ecommerce/ecommerce.component.ts @@ -0,0 +1,401 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import * as Chartist from 'chartist'; +import { DatatableComponent } from '@swimlane/ngx-datatable'; +import { ChartEvent, ChartType } from 'ng-chartist'; +import 'chartist-plugin-tooltips'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { PerfectScrollbarDirective, PerfectScrollbarComponent, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { ChartApiService } from '../../../_services/chart.api'; +import { TableApiService } from '../../../_services/table-api.service'; +import { Router } from '@angular/router'; +export interface Chart { + type: ChartType; + data: Chartist.IChartistData; + options?: any; + responsiveOptions?: any; + events?: ChartEvent; +} + +@Component({ + selector: 'app-ecommerce', + templateUrl: './ecommerce.component.html', + styleUrls: ['./ecommerce.component.css'] +}) +export class EcommerceComponent implements OnInit { + + @BlockUI('newOrders') blockUINewOrders: NgBlockUI; + public config: PerfectScrollbarConfigInterface = { wheelPropagation: true }; + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective) directiveRef?: PerfectScrollbarDirective; + + currentJustify = 'end'; + loadingIndicator = true; + options = { + close: false, + expand: false, + minimize: false, + reload: true + }; + ChartistData: any; + datatableData: any; + lineAreaDay: any; + lineAreaWeek: any; + lineAreaMonth: any; + ecommercesaleslineArea: any; + donutChart: any; + barChart: any; + rows: any; + @ViewChild(DatatableComponent, { static: true }) table: DatatableComponent; + Daygraph = true; + Weekgraph = false; + Monthgraph = false; + + constructor(private chartApiservice: ChartApiService, + private tableApiservice: TableApiService, + private route: Router) { } + getTabledata() { + this.rows = this.datatableData.rows; + } + getlineArea() { + const ChartData = this.ChartistData; + this.lineAreaDay = { + type: 'Line', + data: ChartData['lineArea'], + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 1.8 + }), + fullwidth: true, + height: '320px', + low: 0, + showArea: true, + fullWidth: true, + showPoint: false, + axisX: { + showGrid: false, + }, + axisY: { + low: 0, + offset: 16, + scaleMinSpace: 40, + labelInterpolationFnc: function (value) { + return value + 'K'; + }, + }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 200px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient2', + x1: 1, + y1: 1, + x2: 1, + y2: 1 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgba(22, 141, 238, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(98, 188, 270, 11)' + }); + }, + }, + }; + this.lineAreaWeek = { + type: 'Line', + data: ChartData['lineAreaWeek'], + + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 2 + }), + fullwidth: true, + height: '320px', + low: 0, + showArea: true, + fullWidth: true, + showPoint: false, + chartPadding: { + top: 33, + }, + axisX: { + showGrid: false + }, + axisY: { + low: 0, + scaleMinSpace: 40, + labelInterpolationFnc: function (value) { + return value + 'K'; + }, + offset: 20, + }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 200px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient2', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgba(22, 141, 238, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(98, 188, 246, 1)' + }); + }, + }, + }; + this.lineAreaMonth = { + type: 'Line', + data: ChartData['lineAreaMonth'], + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 2 + }), + // low: 650, + fullwidth: true, + height: '320px', + low: 0, + chartPadding: { + top: 30, + left: 0, + right: 25 + }, + showArea: true, + fullWidth: true, + showPoint: false, + axisX: { + showGrid: false + }, + axisY: { + low: 0, + scaleMinSpace: 60, + labelInterpolationFnc: function (value) { + return value + 'K'; + }, + } + + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 200px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient2', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgba(22, 141, 238, 1)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgba(98, 188, 246, 1)' + }); + }, + }, + }; + + this.ecommercesaleslineArea = { + type: 'Line', + data: ChartData['lineArea2'], + options: { + height: '300px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + axisX: { + showGrid: false + }, + axisY: { + low: 0, + scaleMinSpace: 40, + showGrid: false + }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + }, + }; + + // Doughnut + this.donutChart = { + type: 'Pie', + data: ChartData.donutDashboard, + options: { + width: '100%', + height: '290px', + donut: true, + startAngle: 0, + low: 0, + high: 8, + fullWidth: true, + plugins: [ + Chartist.plugins.tooltip({ + appendToBody: false, + class: 'donut_tooltip', + }) + ], + labelInterpolationFnc: function (value) { + const total = ChartData.donutDashboard.series.reduce(function (prev, series) { + return prev + series.value; + }, 0); + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + + ///////////////////// End doughnutchart//////////////// + ///////////////////// Start barchart//////////////// + this.barChart = { + type: 'Bar', + data: ChartData['Bar'], + options: { + fullwidth: true, + height: '380px', + seriesBarDistance: 21, + chartPadding: { + top: 0, + }, + plugins: [ + Chartist.plugins.tooltip({ + appendToBody: false, + class: 'bar_tooltip', + }) + ], + axisX: { + showLable: true, + showGrid: false, + offset: 60, + labelInterpolationFnc: function (value) { + return value.slice(0, 3); + } + }, + + axisY: { + scaleMinSpace: 40, + } + }, + }; +} + ///////////////////// End barchart//////////////// + ngOnInit() { + this.chartApiservice.getEcommerceData().subscribe(Response => { + this.ChartistData = Response; + this.getlineArea(); + }); + this.tableApiservice.getEcommerceTableData().subscribe(Response => { + this.datatableData = Response; + this.getTabledata(); + }); + } + reloadNewOrders() { + this.blockUINewOrders.start('Loading..'); + setTimeout(() => { + this.blockUINewOrders.stop(); + }, 2500); + } + rotueInvoice() { + this.route.navigate(['/invoice/invoice-summary']); + } + reLoad(){ + this.route.navigate(['/sale']) + } + } diff --git a/src/app/content/dashboard/hospital/data.ts b/src/app/content/dashboard/hospital/data.ts new file mode 100644 index 0000000..39d0a03 --- /dev/null +++ b/src/app/content/dashboard/hospital/data.ts @@ -0,0 +1,125 @@ +///////////////////// Start Barchart /////////////// +export const barChartOptions: any = { + responsive: true, + scaleShowVerticalLines: false, + maintainAspectRatio: false, + legend: { + labels: { + padding: 30 + } + }, + scales: { + xAxes: [{ + categoryPercentage: 0.36, + barPercentage: 0.68 + }] + } + }; + export const barChartLabels: string[] = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']; + export const barChartType = 'bar'; + export const barChartLegend = true; + export const barChartData: any[] = [ + { data: [70, 75, 90, 60, 80, 75, 65], label: 'Fulfilled', + backgroundColor: '#00a5a8', + borderColor: '#00a5a8', + pointBackgroundColor: '#00a5a8', + pointBorderColor: '#00a5a8', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#00a5a8', + barPercentage: 0.5, + categoryPercentage: 0.5 }, + { data: [60, 65, 80, 63, 90, 80, 70], label: 'Booked', + backgroundColor: '#ff4081', + borderColor: '#ff4081', + pointBackgroundColor: '#ff4081', + pointBorderColor: '#ff4081', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#ff4081', + barPercentage: 0.5, + categoryPercentage: 0.5 }, + { data: [42, 45, 65, 40, 42, 63, 35], label: 'Arrived', + backgroundColor: '#626e82', + borderColor: '#626e82', + pointBackgroundColor: '#626e82', + pointBorderColor: '#626e82', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#626e82', + barPercentage: 0.5, + categoryPercentage: 0.5 }, + { data: [50, 55, 70, 40, 47, 65, 38], label: 'No show', + backgroundColor: '#ff6e40', + borderColor: '#ff6e40', + pointBackgroundColor: '#ff6e40', + pointBorderColor: '#ff6e40', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#ff6e40', + barPercentage: 0.5, + categoryPercentage: 0.5 }, + { data: [40, 40, 45, 45, 45, 40, 45], label: 'reschedule', + backgroundColor: '#7c4dff', + borderColor: '#7c4dff', + pointBackgroundColor: '#7c4dff', + pointBorderColor: '#7c4dff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#7c4dff', + barPercentage: 0.5, + categoryPercentage: 0.5 }, + { + + type: 'line', // override the default type + data: [40, 60, 80, 60, 75, 60, 70], + label:'Appointment', + backgroundColor: 'rgba(0,255,255,0)', + borderColor: '#1e9ff2', + fill: false, + pointBorderColor: '#1e9ff2', + pointBackgroundColor: '#FFF', + pointBorderWidth: 2, + pointHoverBorderWidth: 2, + pointRadius: 4, + lineTension: 0.4 + } + ]; + export const barChartColors: Array = [ + { + backgroundColor: '#00a5a8', + borderColor: '#00a5a8', + pointBackgroundColor: '#00a5a8', + pointBorderColor: '#00a5a8', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#00a5a8', + }, + { + backgroundColor: '#ff4081', + borderColor: '#ff4081', + pointBackgroundColor: '#ff4081', + pointBorderColor: '#ff4081', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#ff4081' + }, + { + backgroundColor: '#626e82', + borderColor: '#626e82', + pointBackgroundColor: '#626e82', + pointBorderColor: '#626e82', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#626e82' + }, + { + backgroundColor: '#ff6e40', + borderColor: '#ff6e40', + pointBackgroundColor: '#ff6e40', + pointBorderColor: '#ff6e40', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#ff6e40' + }, + { + backgroundColor: '#7c4dff', + borderColor: '#7c4dff', + pointBackgroundColor: '#7c4dff', + pointBorderColor: '#7c4dff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: '#7c4dff' + }, + ]; + ///////////////////// End barchart//////////////// diff --git a/src/app/content/dashboard/hospital/hospital.component.css b/src/app/content/dashboard/hospital/hospital.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/dashboard/hospital/hospital.component.html b/src/app/content/dashboard/hospital/hospital.component.html new file mode 100644 index 0000000..f5f0cf5 --- /dev/null +++ b/src/app/content/dashboard/hospital/hospital.component.html @@ -0,0 +1,196 @@ +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Doctors Available
+

122

+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Visiting Doctors
+

34

+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Today's Inquiry
+

3.5K

+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
Rooms Available
+

179

+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + Appointment + + +
+ +
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+

Doctors Available

+
+
+
+ + + + + + + + + +
+
+ Avatar +
+
+
{{doctor.name}}
+
Dentist
+
+ Book Appointment +
+
+
+
+
+
+
+
+

Recent Appointments

+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
DoctorPatientsSpecialitiesTimingsAmount
{{doctor.name}} +
    +
  • + Avatar + +
  • + +
  • + {{doctor.bagde}} +
  • +
+
+ + {{doctor.time}}{{doctor.amount}}
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/dashboard/hospital/hospital.component.spec.ts b/src/app/content/dashboard/hospital/hospital.component.spec.ts new file mode 100644 index 0000000..237d5c2 --- /dev/null +++ b/src/app/content/dashboard/hospital/hospital.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HospitalComponent } from './hospital.component'; + +describe('HospitalComponent', () => { + let component: HospitalComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HospitalComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HospitalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/dashboard/hospital/hospital.component.ts b/src/app/content/dashboard/hospital/hospital.component.ts new file mode 100644 index 0000000..29be63d --- /dev/null +++ b/src/app/content/dashboard/hospital/hospital.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { PerfectScrollbarComponent, PerfectScrollbarDirective, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import * as chartsData from './data'; + + +@Component({ + selector: 'app-hospital', + templateUrl: './hospital.component.html', + styleUrls: ['./hospital.component.css'] +}) +export class HospitalComponent { + public config: PerfectScrollbarConfigInterface = { suppressScrollY: true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor() { } + + doctors = [ + {'name': 'Jane Andre','image':'../../../assets/images/portrait/small/avatar-s-4.png'}, + {'name': 'Kail Reack','image':'../../../assets/images/portrait/small/avatar-s-5.png'}, + {'name': 'Shail Black','image':'../../../assets/images/portrait/small/avatar-s-6.png'}, + {'name': 'Zena wall','image':'../../../assets/images/portrait/small/avatar-s-7.png'}, + {'name': 'Colin Welch','image':'../../../assets/images/portrait/small/avatar-s-8.png'} + ] + + firstRow = ['../../../assets/images/portrait/small/avatar-s-4.png', + '../../../assets/images/portrait/small/avatar-s-5.png', + '../../../assets/images/portrait/small/avatar-s-6.png']; + secondRow = ['../../../assets/images/portrait/small/avatar-s-7.png', + '../../../assets/images/portrait/small/avatar-s-8.png']; + thirdRow = ['../../../assets/images/portrait/small/avatar-s-1.png', + '../../../assets/images/portrait/small/avatar-s-2.png', + '../../../assets/images/portrait/small/avatar-s-3.png']; + fourthRow = ['../../../assets/images/portrait/small/avatar-s-11.png', + '../../../assets/images/portrait/small/avatar-s-12.png']; + fifthRow = ['../../../assets/images/portrait/small/avatar-s-6.png', + '../../../assets/images/portrait/small/avatar-s-4.png']; + doctorList = [ + { + 'type': 'danger', 'designation': 'Dentist', 'name': 'Jane Andre', + 'image': this.firstRow, 'time': '8:00 A.M. - 12:00 P.M.', 'amount': '$ 1200.00', 'bagde': '+8 more' + }, + { + 'type': 'success', 'designation': 'Dermatologist', 'name': 'Kail Reack', + 'image': this.secondRow, 'time': '10:00 A.M. - 1:00 P.M.', 'amount': '$ 1190.00', 'bagde': '+5 more' + }, + { + 'type': 'danger', 'designation': 'Psychiatrist', 'name': 'Shail Black', + 'image': this.thirdRow, 'time': '11:00 A.M. - 2:00 P.M.', 'amount': '$ 999.00', 'bagde': '+3 more' + }, + { + 'type': 'success', 'designation': 'Gastroenterologist', 'name': 'Zena wall', + 'image': this.fourthRow, 'time': '11:30 A.M. - 3:00 P.M.', 'amount': '$ 1150.00' + }, + { + 'type': 'danger', 'designation': 'Pediatrician', 'name': 'Colin Welch', + 'image': this.fifthRow, 'time': '5:00 P.M. - 8:00 P.M.', 'amount': '$ 1180.00' + } + ]; + public barChartOptions = chartsData.barChartOptions; + public barChartLabels = chartsData.barChartLabels; + public barChartType = chartsData.barChartType; + public barChartLegend = chartsData.barChartLegend; + public barChartData = chartsData.barChartData; + public barChartColors = chartsData.barChartColors; +} diff --git a/src/app/content/dashboard/sales/sales.component.css b/src/app/content/dashboard/sales/sales.component.css new file mode 100644 index 0000000..f3a877a --- /dev/null +++ b/src/app/content/dashboard/sales/sales.component.css @@ -0,0 +1,281 @@ +:host ::ng-deep .chartist .ct-series-a .ct-line { + + stroke: url(#gradient2); + stroke-linecap: round; + /* -webkit-filter: drop-shadow(0px 20px 11px rgba(0, 0, 0, 0.5)) !important; */ + } +:host ::ng-deep .chartist { + filter: drop-shadow(0px 20px 11px rgba(252, 198, 198, 0.8)) !important; +} + +:host ::ng-deep .chartist .ct-grid{ + stroke-dasharray: 0px; + stroke: rgba(0, 0, 0, 0.4); + stroke-width: 0.6px; +} +:host ::ng-deep .chartist .ct-series-b .ct-line { + stroke: #c8c2c3; + stroke-dasharray: 8px 3px; +} + +:host ::ng-deep .chartist .ct-label.ct-vertical.ct-start { + font-weight: 600; + color: #636161; + font-size: 12px; +} +:host ::ng-deep .earningchart .ct-series-a .ct-area { + fill: rgba(255,117,136,1); +} +:host ::ng-deep .earningchart .ct-series-a .ct-point-circle { + stroke-width: 3px; + stroke: #FF4961; + fill: #ffffff; + } + +:host ::ng-deep .earningchart .ct-series-a .ct-line { + stroke: #FF4961; + stroke-width: 3px; +} + +:host ::ng-deep .avatar-xs { + width: 32px !important; + border: 2px solid #FFF; +} +:host ::ng-deep .donut-chart2{ + margin-bottom: -25px; + margin-top: -17px; +} + +:host ::ng-deep .donut-chart2 .ct-series-a .ct-slice-donut { + stroke: #28d094; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart2 .ct-series-b .ct-slice-donut { + stroke: #ff4961; + stroke-width: 5.5px !important; +} +:host ::ng-deep .donut-chart2 { +-webkit-filter: drop-shadow(0px 10px 11px rgba(187,187,187)) !important; + filter: drop-shadow(0px 10px 11px rgba(187,187,187)); +} +:host ::ng-deep .donut-chart1 { + margin-bottom: -25px; + margin-top: -17px; +} +:host ::ng-deep .donut-chart1 .ct-series-a .ct-slice-donut { + stroke: #ff7889; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart1 .ct-series-b .ct-slice-donut { + stroke: #ffffff; + stroke-width: 5.5px !important; +} + +:host ::ng-deep .donut-chart1 .ct-label { + fill: #ffffff; + color: rgba(0, 0, 0, 0.4); + font-size: 1.75rem; + line-height: 1; +} + +:host ::ng-deep .donut-chart2 .ct-label { + fill: #ff4b62; + color: rgba(0, 0, 0, 0.4); + font-size: 1.75rem; + line-height: 1; +} + +:host ::ng-deep .position-relative { + position: relative !important; + margin-left: 0px; + +} + +:host ::ng-deep .pt-1, +.py-1 { + padding-top: 0rem !important; +} + +:host ::ng-deep .chartist .ct-label.ct-horizontal.ct-end { + /* align-items: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; */ + font-weight: 600; + color: #636161; + font-size: 12px; + font-family: sans-serif; +} + + +:host ::ng-deep .container > .ct-chart .ct-series.ct-series-c .ct-line { + stroke-width: 2px; + stroke-dasharray: 20px 180px; + stroke: #28d094; + animation: draw 0.3s linear infinite; +} + +@keyframes draw { + from { + stroke-dashoffset: 200 + } + + to { + stroke-dashoffset: 0; + } +} + +:host ::ng-deep .ct-series-c .ct-point, +.ct-series-c .ct-line, +.ct-series-c .ct-bar, +.ct-series-c .ct-slice-donut { + stroke: #28d094; +} + +:host ::ng-deep .ct-chart .ct-series.ct-series-c .ct-line { + stroke: #28d094; + +} + +:host ::ng-deep .ct-series-b .ct-point, +.ct-series-b .ct-line, +.ct-series-b .ct-bar, +.ct-series-b .ct-slice-donut { + stroke: #ff4961; +} + +:host ::ng-deep .container > .ct-chart .ct-series.ct-series-a .ct-line { + stroke-dasharray: 5px; + animation: dash 4s linear infinite; + +} + +@keyframes dash { + to { + stroke-dashoffset: 2000; + } +} + +:host ::ng-deep .ct-chart .ct-point { + stroke-width: 10px; + stroke-linecap: round; +} + +:host ::ng-deep .container > .ct-chart .ct-series.ct-series-b .ct-line { + stroke-width: 10px; + stroke-dasharray: 15px 5px; + animation: draw 4s linear infinite; +} + +@keyframes draw { + from { + stroke-dashoffset: 100 + } + + to { + stroke-dashoffset: 0; + } +} + + +:host ::ng-deep .container { + max-width: 100% !important; +} +:host ::ng-deep .btn.gradient-blackberry.active, +.gradient-blackberry { + background-color: #f05b4f; + +} + +:host ::ng-deep .Visit { + + background-color: #28d094; + +} + +:host ::ng-deep .Sales { + /* background-image: linear-gradient(45deg,#843cf7,#38b8f2)!important; */ + background-color: #d70206; + +} + +:host ::ng-deep .col-md-11 { + padding-right: 0 !important; +} + +:host ::ng-deep .col-md-1 { + padding-left: 0 !important; +} + +:host ::ng-deep .box-shadow-0 .ct-label.ct-vertical.ct-start { + + font-weight: bold; + color: #6e6e6e; + font-size: 12px; +} + +:host ::ng-deep .box-shadow-0 .ct-label.ct-horizontal.ct-end { + + font-weight: bold; + color: #6e6e6e; + font-size: 12px; +} + + +:host ::ng-deep .text-truncate { + padding: 0.9rem 2rem; +} + +.mr-2 { + margin-left: 1rem !important; + margin-right: 0rem !important; +} + +.mt-2 { + margin-top : 1.5rem !important; +} + +.ml-2 { + margin-left : 2rem !important; +} + +:host ::ng-deep .my-custom-cell { + padding-right: 6% !important; + padding-top: 1.5% !important; +} + +:host ::ng-deep .border_bottom { + margin-bottom: 0rem !important; +} + +:host ::ng-deep .border-top-0 { + padding: 1.25rem 2rem !important; +} + +:host ::ng-deep .progress { + box-shadow: 0 10px 18px 0 rgba(62, 57, 107, .2); + margin-top: 1rem!important; +} + +:host ::ng-deep .btn-danger { + color: #FFF !important; +} + +:host ::ng-deep .users-list li + li { + margin-left: -10px !important; +} + + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .ps--active-x > .ps__rail-x { + display: none !important; +} + +:host ::ng-deep .progress { + margin-bottom: 1rem !important; +} diff --git a/src/app/content/dashboard/sales/sales.component.html b/src/app/content/dashboard/sales/sales.component.html new file mode 100644 index 0000000..6df3245 --- /dev/null +++ b/src/app/content/dashboard/sales/sales.component.html @@ -0,0 +1,269 @@ +
+
+
+
+
+ +
+
+
+ + + Revenue + + +
+
+
Current week
+

$82,124

+
+
+
Previous week
+

$52,502

+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + Hit Rate -12% + + +
+ + +
+
+
+
+
+
+ + +

Deals -55% + + 152/200 + +

+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
Order Value
+

$ 88,568

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
Calls
+

3,568

+
+
+ +
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + + Emails + + +

Open rate 89%

+ +

Sent 310/500 +

+ +
+
+
+
+
+
+
+

Top Products

+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + +
iPone X2245
One Plus1850
Samsung S71550
+
+
+
+
+
+
+
+
+

Average Deal Size

+
+
+
+
+
+
-30%
+

$12,536

+

Per rep

+
+
+
12%
+

$18,548

+

Per team

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

$1,596

+ Total Earning +
+
+ + +
+
+ Statistics + for the last year. +
+
+
+
+
+ +
+
+
+

Recent Sales

+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
ProductCustomersCategoriesPopularityAmount
+ {{row.product}} + +
    +
  • + Avatar +
  • +
+
+ + + + + + + {{ row.amount }}
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/dashboard/sales/sales.component.spec.ts b/src/app/content/dashboard/sales/sales.component.spec.ts new file mode 100644 index 0000000..787faa8 --- /dev/null +++ b/src/app/content/dashboard/sales/sales.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SalesComponent } from './sales.component'; + +describe('SalesComponent', () => { + let component: SalesComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SalesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SalesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/dashboard/sales/sales.component.ts b/src/app/content/dashboard/sales/sales.component.ts new file mode 100644 index 0000000..ea51cb3 --- /dev/null +++ b/src/app/content/dashboard/sales/sales.component.ts @@ -0,0 +1,332 @@ +import { Component, OnInit, ViewChild, Renderer2 } from '@angular/core'; +import * as Chartist from 'chartist'; +import { DatatableComponent } from '@swimlane/ngx-datatable'; +import { ChartEvent, ChartType } from 'ng-chartist'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { PerfectScrollbarComponent, PerfectScrollbarDirective, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { ChartApiService } from '../../../_services/chart.api'; +import { Router } from '@angular/router'; +export interface Chart { + type: ChartType; + data: Chartist.IChartistData; + options?: any; + responsiveOptions?: any; + events?: ChartEvent; +} +@Component({ + selector: 'app-sales', + templateUrl: './sales.component.html', + styleUrls: ['./sales.component.css'] +}) +export class SalesComponent implements OnInit { + + @BlockUI('revenue') blockUIRevenue: NgBlockUI; + @BlockUI('hitrate') blockUIHitRate: NgBlockUI; + @BlockUI('email') blockUIEmail: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { suppressScrollY: true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + salesData: any; + lineArea: any; + earningchart: any; + donutChart2: any; + donutChart1: any; + options = { + bodyClass: ['pt-0'], + close: false, + expand: false, + minimize: false, + reload: true + }; + + hitRateOptions = { + bodyClass: ['bg-hexagons', 'pt-0'], + headerClass: ['bg-hexagons'], + cardClass: ['pull-up'], + close: false, + expand: false, + minimize: false, + reload: true + }; + + dealsOptions = { + bodyClass: ['bg-hexagons-danger'], + cardClass: ['pull-up'], + contentClass: ['bg-gradient-directional-danger'] + }; + + emailsOptions = { + bodyClass: ['pt-0'], + close: false, + expand: false, + minimize: false, + reload: true + }; + loadingIndicator = true; + + firstRow = ['../../../assets/images/portrait/small/avatar-s-4.png', + '../../../assets/images/portrait/small/avatar-s-5.png', + '../../../assets/images/portrait/small/avatar-s-6.png']; + secondRow = ['../../../assets/images/portrait/small/avatar-s-7.png', + '../../../assets/images/portrait/small/avatar-s-8.png']; + thirdRow = ['../../../assets/images/portrait/small/avatar-s-1.png', + '../../../assets/images/portrait/small/avatar-s-2.png', + '../../../assets/images/portrait/small/avatar-s-3.png']; + fourthRow = ['../../../assets/images/portrait/small/avatar-s-11.png', + '../../../assets/images/portrait/small/avatar-s-12.png']; + fifthRow = ['../../../assets/images/portrait/small/avatar-s-6.png', + '../../../assets/images/portrait/small/avatar-s-4.png']; + rows = [ + { + 'type': 'danger', 'value': 85, 'product': 'iPhone X', + 'image': this.firstRow, 'buttonname': 'Mobile', 'amount': '$ 1200.00', 'bagde': '+8 more' + }, + { + 'type': 'success', 'value': 75, 'product': 'iPad', + 'image': this.secondRow, 'buttonname': 'Teblet', 'amount': '$ 1190.00', 'bagde': '+5 more' + }, + { + 'type': 'danger', 'value': 65, 'product': 'OnePlus', + 'image': this.thirdRow, 'buttonname': 'Mobile', 'amount': '$ 999.00', 'bagde': '+3 more' + }, + { + 'type': 'success', 'value': 55, 'product': 'ZenPad', + 'image': this.fourthRow, 'buttonname': 'Teblet', 'amount': '$ 1150.00' + }, + { + 'type': 'danger', 'value': 45, 'product': 'Pixel 2', + 'image': this.fifthRow, 'buttonname': 'Mobile', 'amount': '$ 1180.00' + } + ]; + + @ViewChild(DatatableComponent, { static: true }) table: DatatableComponent; + Daygraph = true; + Weekgraph = false; + Monthgraph = false; + ngOnInit() { + this.chartApiservice.getSalesData().subscribe(Response => { + this.salesData = Response; + this.getChartdata(); + }); + } + constructor(private _renderer: Renderer2, private route: Router, + private chartApiservice: ChartApiService) { } + reloadRevenue() { + this.blockUIRevenue.start('Loading..'); + + setTimeout(() => { + this.blockUIRevenue.stop(); + }, 2500); + } + + reloadHitRate() { + this.blockUIHitRate.start('Please Wait..'); + + setTimeout(() => { + this.blockUIHitRate.stop(); + }, 2500); + } + + reloadEmail() { + this.blockUIEmail.start(); + + setTimeout(() => { + this.blockUIEmail.stop(); + }, 2500); + } + rotueInvoice() { + this.route.navigate(['/invoice/invoice-summary']); + } + getChartdata() { + const Chartdata = this.salesData; + this.lineArea = { + type: 'Line', + data: Chartdata['lineArea'], + options: { + lineSmooth: Chartist.Interpolation.simple({ + divisor: 2.8 + }), + fullWidth: true, + height: '270px', + showArea: false, + showPoint: false, + axisX: { + showGrid: false, + showLabel: true, + offset: 32 + }, + axisY: { + showGrid: true, + showLabel: true, + scaleMinSpace: 28, + offset: 44 + }, + }, + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient2', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgb(255,73,97)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgb(255,73,97)' + }); + }, + draw(data: any): void { + const circleRadius = 4; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } else if (data.type === 'label') { + // adjust label position for rotation + const dX = data.width / 2 + (26 - data.width); + data.element.attr({ x: data.element.attr('x') - dX }); + } + } + }, + }; + this.earningchart = { + type: 'Line', + data: Chartdata['earningchart'], + options: { + chartPadding: 0, + height: '440px', + low: 0, + showArea: true, + fullWidth: true, + onlyInteger: true, + axisX: { + showGrid: false, + showLabel: false, + offset: -1 + }, + axisY: { + scaleMinSpace: 40, + showGrid: false, + showLabel: false, + offset: -2 + }, + }, + responsiveOptions: [ + ['screen and (max-width: 640px) and (min-width: 381px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 2 === 0 ? value : null; + } + } + }], + ['screen and (max-width: 380px)', { + axisX: { + labelInterpolationFnc: function (value, index) { + return index % 3 === 0 ? value : null; + } + } + }] + ], + events: { + created(data: any): void { + const defs = data.svg.elem('defs'); + defs.elem('linearGradient', { + id: 'gradient1', + x1: 0, + y1: 0, + x2: 1, + y2: 0 + }).elem('stop', { + offset: 0, + 'stop-color': 'rgb(255,73,97)' + }).parent().elem('stop', { + offset: 1, + 'stop-color': 'rgb(255,73,97)' + }); + }, + draw(data: any): void { + const circleRadius = 6; + if (data.type === 'point') { + const circle = new Chartist.Svg('circle', { + cx: data.x, + cy: data.y, + r: circleRadius, + class: 'ct-point-circle' + }); + data.element.replace(circle); + } + } + }, + }; + // Doughnut + this.donutChart2 = { + type: 'Pie', + data: Chartdata['donut1'], + options: { + chartPadding: 0, + fullwidth: true, + height: '273px', + donut: true, + showLabel: true, + startAngle: 0, + labelInterpolationFnc: function (value) { + const total = 82; + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + this.donutChart1 = { + type: 'Pie', + data: Chartdata['donut2'], + options: { + chartPadding: 0, + fullwidth: true, + height: '273px', + donut: true, + showLabel: true, + labelInterpolationFnc: function (value) { + const total = 76; + return total + '%'; + } + }, + events: { + draw(data: any): void { + if (data.type === 'label') { + if (data.index === 0) { + data.element.attr({ + dx: data.element.root().width() / 2, + dy: data.element.root().height() / 2 + }); + } else { + data.element.remove(); + } + } + } + } + }; + } +} diff --git a/src/app/content/extra-components/date-time-picker/date-time-picker.component.css b/src/app/content/extra-components/date-time-picker/date-time-picker.component.css new file mode 100644 index 0000000..3cda68b --- /dev/null +++ b/src/app/content/extra-components/date-time-picker/date-time-picker.component.css @@ -0,0 +1,159 @@ +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + border-radius: 0.25rem; + display: inline-block; + width: 2rem; +} + +.custom-day:hover, +.custom-day.focused { + background-color: #e6e6e6; +} + +.weekend { + background-color: #f0ad4e; + border-radius: 1rem; + color: white; +} + +.hidden { + display: none; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} \ No newline at end of file diff --git a/src/app/content/extra-components/date-time-picker/date-time-picker.component.html b/src/app/content/extra-components/date-time-picker/date-time-picker.component.html new file mode 100644 index 0000000..5830c46 --- /dev/null +++ b/src/app/content/extra-components/date-time-picker/date-time-picker.component.html @@ -0,0 +1,323 @@ +
+
+
+ +
+
+
+

Date Picker

+
+
+
+
+
+ + + Simple datepicker + + + + +
+ + + +
+ +

Month: {{ date.month }}.{{ date.year }}

+

Model: {{ model | json }}

+
+
+
+
+ + + Disabled datepicker + + + + +
+ +
+
+
+
+
+
+
+
+
+

Datepicker in a popup

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

Model: {{ popupModel | json }}

+
+
+
+
+
+
+
+

Custom day view

+
+
+
+

This datepicker uses a custom template to display days. All week-ends are displayed with an orange + background.

+
+
+
+ +
+
+ +
+
+
+
+
+ + + + {{ date.day }} + + +
+
+
+
+
+
+
+
+
+

Multiple months

+
+
+
+ + +

Inline

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

Options

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

Range Date Picker

+
+
+
+ + + + + + {{ date.day }} + + + +
+
+
+

From: {{ fromDate | json }}

+
+
+

To: {{ toDate | json }}

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

Time Picker

+
+
+
+
+
+
+
+

Basic Timepicker

+
+
+
+ +
+

Selected time: {{time | json}}

+
+
+
+
+
+
+
+

Meridian

+
+
+
+ + +
+

Selected time: {{meridianTime | json}}

+
+
+
+
+
+
+
+

Seconds

+
+
+
+ + +
+

Selected time: {{secondsTime | json}}

+
+
+
+
+
+
+
+
+
+

Spinners

+
+
+
+

This datepicker uses a custom template to display days. All week-ends are displayed with an orange + background.

+ + + +
+
+
+
+
+
+
+

Custom steps

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

Selected time: {{stepsTime | json}}

+
+
+
+
+
+
+
+

Custom validation

+
+
+
+

Illustrates custom validation, you have to select time between 12:00 and 13:59

+
+ + +
+
+

Selected time: {{validationTime | json}}

+
+
+
+
+
+
+
+
diff --git a/src/app/content/extra-components/date-time-picker/date-time-picker.component.spec.ts b/src/app/content/extra-components/date-time-picker/date-time-picker.component.spec.ts new file mode 100644 index 0000000..aafb3ca --- /dev/null +++ b/src/app/content/extra-components/date-time-picker/date-time-picker.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { DateTimePickerComponent } from './date-time-picker.component'; + +describe('DateTimePickerComponent', () => { + let component: DateTimePickerComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ DateTimePickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DateTimePickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/extra-components/date-time-picker/date-time-picker.component.ts b/src/app/content/extra-components/date-time-picker/date-time-picker.component.ts new file mode 100644 index 0000000..88488b9 --- /dev/null +++ b/src/app/content/extra-components/date-time-picker/date-time-picker.component.ts @@ -0,0 +1,198 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgbDateStruct, NgbTimeStruct, NgbDate } from '@ng-bootstrap/ng-bootstrap'; +import { FormControl } from '@angular/forms'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; + +const now = new Date(); +const I18N_VALUES = { + en: { + weekdays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'], + months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + }, +}; + +// Range datepicker Start +const equals = (one: NgbDateStruct, two: NgbDateStruct) => + one && two && two.year === one.year && two.month === one.month && two.day === one.day; + +const before = (one: NgbDateStruct, two: NgbDateStruct) => + !one || !two ? false : one.year === two.year ? one.month === two.month ? one.day === two.day + ? false : one.day < two.day : one.month < two.month : one.year < two.year; + +const after = (one: NgbDateStruct, two: NgbDateStruct) => + !one || !two ? false : one.year === two.year ? one.month === two.month ? one.day === two.day + ? false : one.day > two.day : one.month > two.month : one.year > two.year; +// Range datepicker Ends + + +@Component({ + selector: 'app-date-time-picker', + templateUrl: './date-time-picker.component.html', + styleUrls: ['./date-time-picker.component.css'] +}) +export class DateTimePickerComponent implements OnInit { + + @BlockUI('simpleDatepicker') blockUISimpleDatepicker: NgBlockUI; + @BlockUI('disableDatepicker') blockUIDisableDatepicker: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + // datePicker Variable declaration + d: any; + d2: any; + d3: any; + model: NgbDateStruct; + popupModel; + date: { year: number, month: number }; + displayMonths = 2; + navigation = 'select'; + disabledModel: NgbDateStruct = { year: now.getFullYear(), month: now.getMonth() + 1, day: now.getDate() }; + disabled = true; + customModel: NgbDateStruct; + + // timePicker Variable declaration + meridian = true; + time: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + meridianTime: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + secondsTime: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + spinnersTime: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + stepsTime: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + validationTime: NgbTimeStruct = { hour: 13, minute: 30, second: 30 }; + seconds = true; + spinners = true; + hourStep = 1; + minuteStep = 15; + secondStep = 30; + + configModal; // Global configuration of datepickers + + // Range datepicker start + hoveredDate: NgbDateStruct; + + fromDate: NgbDateStruct; + toDate: NgbDateStruct; + + // timePicker code + ctrl = new FormControl('', (control: FormControl) => { + const value = control.value; + + if (!value) { + return null; + } + + if (value.hour < 12) { + return { tooEarly: true }; + } + if (value.hour > 13) { + return { tooLate: true }; + } + + return null; + }); + + // Range datepicker starts + onDateChange(date: NgbDateStruct) { + if (!this.fromDate && !this.toDate) { + this.fromDate = date; + } else if (this.fromDate && !this.toDate && after(date, this.fromDate)) { + this.toDate = date; + } else { + this.toDate = null; + this.fromDate = date; + } + } + + isHovered = date => this.fromDate && !this.toDate && this.hoveredDate && after(date, this.fromDate) && before(date, this.hoveredDate); + isInside = date => after(date, this.fromDate) && before(date, this.toDate); + isFrom = date => equals(date, this.fromDate); + isTo = date => equals(date, this.toDate); + // Range datepicker ends + + + // Selects today's date + selectToday() { + this.model = { year: now.getFullYear(), month: now.getMonth() + 1, day: now.getDate() }; + } + + // Custom Day View Starts + isWeekend(date: NgbDateStruct) { + const d = new Date(date.year, date.month - 1, date.day); + return d.getDay() === 0 || d.getDay() === 6; + } + + isDisabled(date: NgbDateStruct, current: { month: number }) { + return date.month !== current.month; + } + // Custom Day View Ends + + isRange(date: NgbDate) { + return date.equals(this.fromDate) || date.equals(this.toDate) || this.isInside(date) || this.isHovered(date); + } + + // Using for Meridian + toggleMeridian() { + this.meridian = !this.meridian; + } + + // Using for Seconds + toggleSeconds() { + this.seconds = !this.seconds; + } + + // Using for Spinners + toggleSpinners() { + this.spinners = !this.spinners; + } + + ngOnInit() { + this.selectToday(); + + this.breadcrumb = { + 'mainlabel': 'Date Time Picker', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Extra Components', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Date Time Picker', + 'isLink': false + } + ] + }; + } + + reloadSimpleDatepicker() { + this.blockUISimpleDatepicker.start('Loading..'); + + setTimeout(() => { + this.blockUISimpleDatepicker.stop(); + }, 2500); + } + + reloadDisableDatepicker() { + this.blockUIDisableDatepicker.start('Loading..'); + + setTimeout(() => { + this.blockUIDisableDatepicker.stop(); + }, 2500); + } +} diff --git a/src/app/content/extra-components/extra-components.module.ts b/src/app/content/extra-components/extra-components.module.ts new file mode 100644 index 0000000..6a9ed83 --- /dev/null +++ b/src/app/content/extra-components/extra-components.module.ts @@ -0,0 +1,52 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DateTimePickerComponent } from './date-time-picker/date-time-picker.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { TypeAheadComponent } from './type-ahead/type-ahead.component'; +import { MatchHeightModule } from '../partials/general/match-height/match-height.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { CustomFormsModule } from 'ngx-custom-validators'; +import { ArchwizardModule } from 'angular-archwizard'; +import { BlockUIModule } from 'ng-block-ui'; +import { QuillModule } from 'ngx-quill'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { CardModule } from '../partials/general/card/card.module'; +import { TextEditorComponent } from './text-editor/text-editor.component'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +@NgModule({ + imports: [ + CommonModule, + FormsModule, + CardModule, + ReactiveFormsModule, + MatchHeightModule, + BreadcrumbModule, + ArchwizardModule, + CustomFormsModule, + NgbModule, + QuillModule.forRoot(), + PerfectScrollbarModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'dateTimePicker', + component: DateTimePickerComponent + }, + { + path: 'typeAhead', + component: TypeAheadComponent + }, + { + path: 'text-editor', + component: TextEditorComponent + } + ]), + ], + declarations: [DateTimePickerComponent, TypeAheadComponent, TextEditorComponent], + exports: [RouterModule] +}) +export class ExtraComponentsModule { } diff --git a/src/app/content/extra-components/text-editor/counter.ts b/src/app/content/extra-components/text-editor/counter.ts new file mode 100644 index 0000000..40a8474 --- /dev/null +++ b/src/app/content/extra-components/text-editor/counter.ts @@ -0,0 +1,38 @@ +import * as Quill from 'quill'; + +export interface Config { + container: string; + unit: 'word'|'char'; +} + +export interface QuillInstance { + on: Function; + getText: Function; +} + +export default class Counter { + quill: QuillInstance; + options: Config; + + constructor(quill, options) { + this.quill = quill; + this.options = options; + + const container = document.querySelector(this.options.container); + + this.quill.on('text-change', () => { + const length = this.calculate(); + + container.innerHTML = length + ' ' + this.options.unit + 's'; + }); + } + + calculate() { + const text = this.quill.getText().trim(); + + if (this.options.unit === 'word') { + return !text ? 0 : text.split(/\s+/).length; + } + return text.length; + } +} diff --git a/src/app/content/extra-components/text-editor/text-editor.component.css b/src/app/content/extra-components/text-editor/text-editor.component.css new file mode 100644 index 0000000..c991111 --- /dev/null +++ b/src/app/content/extra-components/text-editor/text-editor.component.css @@ -0,0 +1,5 @@ +:host ::ng-deep .ql-snow .ql-tooltip { + z-index:1 !important; + left: -1.7969px !important; + top: 26px !important; +} diff --git a/src/app/content/extra-components/text-editor/text-editor.component.html b/src/app/content/extra-components/text-editor/text-editor.component.html new file mode 100644 index 0000000..6991e37 --- /dev/null +++ b/src/app/content/extra-components/text-editor/text-editor.component.html @@ -0,0 +1,76 @@ +
+
+
+ +
+
+

Quill Editor

+ +

quill editor with angular and TypeScript. ngx-quill is the new angular 2 and beyond implementation of ngQuill. +

+ +
+
+
+
+
+

Default editor

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

Reactive Forms and patch value

+
+
+
+
+ + + + + + +
+ {{ form.get('editor').value }} + + + + + +
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/content/extra-components/text-editor/text-editor.component.spec.ts b/src/app/content/extra-components/text-editor/text-editor.component.spec.ts new file mode 100644 index 0000000..4e91775 --- /dev/null +++ b/src/app/content/extra-components/text-editor/text-editor.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TextEditorComponent } from './text-editor.component'; + +describe('TextEditorComponent', () => { + let component: TextEditorComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TextEditorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TextEditorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/extra-components/text-editor/text-editor.component.ts b/src/app/content/extra-components/text-editor/text-editor.component.ts new file mode 100644 index 0000000..e82da79 --- /dev/null +++ b/src/app/content/extra-components/text-editor/text-editor.component.ts @@ -0,0 +1,88 @@ +import { Component, ElementRef, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { QuillEditorComponent } from 'ngx-quill'; +import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; + +@Component({ + selector: 'app-text-editor', + templateUrl: './text-editor.component.html', + styleUrls: ['./text-editor.component.css'] +}) +export class TextEditorComponent implements OnInit { + + public breadcrumb: any; + backgroundColor: any; + + blured = false; + focused = false; + hide = false; + form: FormGroup; + @ViewChild('editor', { static: true }) editor: QuillEditorComponent; + + + constructor(fb: FormBuilder) { + this.form = fb.group({ + editor: [''] + }); + } + + + ngOnInit() { + this.form + .controls + .editor + .valueChanges.pipe( + debounceTime(400), + distinctUntilChanged() + ) + .subscribe((data) => { + }); + + this.editor + .onContentChanged + .pipe( + debounceTime(400), + distinctUntilChanged() + ) + .subscribe((data) => { + }); + + this.breadcrumb = { + 'mainlabel': 'Text-Editor', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Extra Components', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Text-Editor', + 'isLink': false + } + ] + }; + } + + focus() { + this.focused = true; + this.blured = false; + } + + blur() { + this.focused = false; + this.blured = true; + } + + setControl() { + this.form.setControl('editor', new FormControl('test - new Control')); + } + + patchValue() { + this.form.get('editor').patchValue(`${this.form.get('editor').value} patched!`); + } +} diff --git a/src/app/content/extra-components/type-ahead/type-ahead.component.css b/src/app/content/extra-components/type-ahead/type-ahead.component.css new file mode 100644 index 0000000..9cf9651 --- /dev/null +++ b/src/app/content/extra-components/type-ahead/type-ahead.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/extra-components/type-ahead/type-ahead.component.html b/src/app/content/extra-components/type-ahead/type-ahead.component.html new file mode 100644 index 0000000..ddc8186 --- /dev/null +++ b/src/app/content/extra-components/type-ahead/type-ahead.component.html @@ -0,0 +1,89 @@ +
+
+
+ +
+ +
+
+
+ + + Typeahead + + +
+
+
+
Basic Typeahead
+

When initializing a typeahead, you pass the plugin method one + or more datasets. The source of a dataset is responsible for computing a set of suggestions for + a given query.

+
+ +
+
+
+
Typeahead with open on focus
+

It is possible to get the focus events with the current input value to emit + results on focus with a great flexibility.

+
+ +
+
+
+
Typeahea with formatted results
+

A typeahead example that uses a formatter function for string results. For + example display search results in upper case.

+
+ +
+
+
+
+
+
Typeahead with configuration
+

For more advanced use cases, Typeahead with configuration gives flexibility. + This typeahead shows a hint when the input matches because the default values have been + customized.

+
+ +
+
+
+
Typeahead with Service
+

A typeahead example which gets the results from the service.

+
+ +
+
+
+
Typeahead with custom template
+

A typeahead example that uses a custom template for results display, an + object as the model, + and the highlight directive to highlight the term inside the custom template.

+ + + + +
+ +
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/content/extra-components/type-ahead/type-ahead.component.spec.ts b/src/app/content/extra-components/type-ahead/type-ahead.component.spec.ts new file mode 100644 index 0000000..4257027 --- /dev/null +++ b/src/app/content/extra-components/type-ahead/type-ahead.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TypeAheadComponent } from './type-ahead.component'; + +describe('TypeAheadComponent', () => { + let component: TypeAheadComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TypeAheadComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TypeAheadComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/extra-components/type-ahead/type-ahead.component.ts b/src/app/content/extra-components/type-ahead/type-ahead.component.ts new file mode 100644 index 0000000..c4c0082 --- /dev/null +++ b/src/app/content/extra-components/type-ahead/type-ahead.component.ts @@ -0,0 +1,187 @@ +import { Component, OnInit, ViewChild, Injectable } from '@angular/core'; +import {HttpClient, HttpParams} from '@angular/common/http'; +import {NgbTypeahead, NgbTypeaheadConfig} from '@ng-bootstrap/ng-bootstrap'; +import {Observable, Subject, merge, of} from 'rxjs'; +import {catchError, debounceTime, distinctUntilChanged, filter, map, tap, switchMap} from 'rxjs/operators'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +declare var require: any; +const statesJson = require('../../../../assets/data/extra-components/typeahead/typeahead.json'); +const states = statesJson.states; +const statesWithFlags = statesJson.statesWithFlags; + +/* Typeahead with Service */ +const WIKI_URL = 'https://en.wikipedia.org/w/api.php'; +const PARAMS = new HttpParams({ + fromObject: { + action: 'opensearch', + format: 'json', + origin: '*' + } +}); + +@Injectable() +export class WikipediaService { + constructor(private http: HttpClient) {} + + search(term: string) { + if (term === '') { + return of([]); + } + + return this.http + .get(WIKI_URL, {params: PARAMS.set('search', term)}).pipe( + map(response => response[1]) + ); + } +} +/* Typeahead with Service */ + +@Component({ + selector: 'app-type-ahead', + templateUrl: './type-ahead.component.html', + providers: [WikipediaService, NgbTypeaheadConfig], + styleUrls: ['./type-ahead.component.css'] +}) +export class TypeAheadComponent implements OnInit { + + @BlockUI('typeAhead') blockUITypeAhead: NgBlockUI; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + public breadcrumb: any; + + constructor(private _service: WikipediaService, + config: NgbTypeaheadConfig) { + config.showHint = true; + } + + + /* Basic Typeahed : START */ + public basicModel: any; + /* Basic Typeahed : END */ + + /* Open on Focus : START */ + public openOnFocusModel: any; + + @ViewChild('instance', { static: true }) instance: NgbTypeahead; + focus$ = new Subject(); + click$ = new Subject(); + /* Open on Focus : END */ + + /* Formatted Results : START */ + public formattedResultsModel: any; + + /* Formatted Resutls : END */ + + /* Typeahead with Service */ + public searviceModel: any; + searching = false; + searchFailed = false; + /* Typehead with service */ + + /* Typeahead with template */ + public typeaheadTemplateModel: any; + + /* Typeahead with template */ + + /* Typeahead with Config */ + public typeaheadConfigModel: any; + + popupOpen: Observable; + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'TypeAhead', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Extra Components', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'TypeAhead', + 'isLink': false + } + ] + }; + } + + search = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + map(term => term.length < 1 ? [] + : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10)) + ) + + searchOnFocus = (text$: Observable) => { + const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged()); + const inputFocus$ = this.focus$; + + return merge(debouncedText$, inputFocus$).pipe( + map(term => (term === '' ? states + : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1)).slice(0, 10)) + ); + } + + reloadTypeAhead() { + this.blockUITypeAhead.start('Loading..'); + + setTimeout(() => { + this.blockUITypeAhead.stop(); + }, 2500); + } + + formatter = (result: string) => result.toUpperCase(); + + searchForFormattedResults = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + map(term => term === '' ? [] + : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10)) + ) + + searchFromService = (text$: Observable) => + text$.pipe( + debounceTime(300), + distinctUntilChanged(), + tap(() => this.searching = true), + switchMap(term => + this._service.search(term).pipe( + tap(() => this.searchFailed = false), + catchError(() => { + this.searchFailed = true; + return of([]); + })) + ), + tap(() => this.searching = false) + ) + formatter1 = (x: {name: string}) => x.name; + + searchWithTemplate = (text$: Observable) => + text$.pipe( + debounceTime(200), + map(term => term === '' ? [] + : statesWithFlags.filter(v => v.name.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10)) + ) + + searchWithConfig = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + map(term => term.length < 1 ? [] + : states.filter(v => v.toLowerCase().startsWith(term.toLocaleLowerCase())).splice(0, 10)) + ) + /* Typeahead with Config */ +} diff --git a/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.css b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.css new file mode 100644 index 0000000..022a28e --- /dev/null +++ b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.css @@ -0,0 +1,55 @@ +.right-checkbox input[type='checkbox'], +.right-checkbox .custom-control-indicator, +.right-checkbox input[type='radio'], +.right-radio input[type='checkbox'], +.right-radio .custom-control-indicator, +.right-radio input[type='radio'] { + left: auto; + top: auto; + position: absolute; +} + +.right-checkbox input[type='checkbox'], +.right-checkbox .custom-control-label::before, +.right-checkbox .custom-control-label::after, +.right-checkbox input[type='radio'], +.right-radio input[type='checkbox'], +.right-radio .custom-control-label::before, +.right-radio .custom-control-label::after, +.right-radio input[type='radio'] { + left: auto; + right: 2%; +} + +.radio.right-radio label { + padding-left: 0; +} + +/* iCheck */ +.skin [class*='icheckbox_'], +.skin [class*='iradio_'], +.icheck_square [class*='icheckbox_'], +.icheck_square [class*='iradio_'] { + margin-right: 0.6rem; +} + +.skin [class*='icheckbox_line'], +.skin [class*='iradio_line'] { + margin-bottom: 0.6rem; +} + +.state[class*='icheckbox_']:hover, +.state[class*='iradio_']:hover { + cursor: default; +} + +/* Image Checkbox selected*/ +input[type='checkbox']:checked+img.img-thumbnail { + background-color: #666EE8; + color: #999966; + border-color: #666EE8; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.html b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.html new file mode 100644 index 0000000..fd861f7 --- /dev/null +++ b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.html @@ -0,0 +1,598 @@ +
+
+
+ +
+
+ +
+
+
+

Simple Checkboxes

+
+
+
+
+ + + Basic Table + + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ + + Basic Right Checkbox + + +

Simple Right side checkboxes with .right-checkbox wrapper class.

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

Custom Checkbox

+
+
+
+

Add .custom-input.custom-checkbox as a single wrapper & add + <span class="custom-control-indicator"></span> + for better output. Also use .custom-control-description class for checkbox + description.

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

Custom Right Checkbox

+
+
+
+

Add .custom-input.custom-checkbox as a single wrapper & add + <span class="custom-control-indicator"></span> + for better output & wrap with right-checkbox for right aligned checkbox.

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

Simple Radio Buttons

+
+
+
+
+
+
+

Basic Radio Buttons

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

Basic Right Radio Buttons

+
+
+
+

Simple Radio Button with right align using .right-radio class.

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

Custom Radio Buttons

+
+
+
+

Add .custom-input.custom-radio as a single wrapper & add + <span class="custom-control-indicator"></span> + for better output. Also use .custom-control-description class for radio description. +

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

Custom Right Radio Buttons

+ + +
+
+
+

Add .c-input.c-radio as a single wrapper & add + <span class="c-indicator"></span> + for better output & wrap with right-radio for right aligned radio.

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

Color Checkboxes

+

Add .bg-COLOR to span to set according to theme color.

+
+
+
+
+
+
+

Template Color Checkbox

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

Another Template color checkbox example

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

Custom Bootstrap Color Radio Buttons

+

Add .bg-COLOR to span to set according to theme color.

+
+
+
+
+
+
+

Template color Radio Button

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

Another Template color Radio example

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

Inline Checkboxes

+

Add .inline class to the checkbox wrapper for inline checkbox.

+
+
+
+
+
+
+

Custom Inline Checkboxes

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

Inline Radio Buttons

+

Add .inline class to the radio wrapper.

+
+
+
+
+
+
+

Custom Inline Radio

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

Image Checkbox

+
+
+
+
+
+
+

Default Image Checkbox

+
+
+
+

Add .img-thumbnail class to <img> tag after input type checkbox.

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

Basic Image Checkbox

+
+
+
+

Add .btn-COLORNAME class to wrapper to use theme colors.

+
+ + + + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.spec.ts b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.spec.ts new file mode 100644 index 0000000..6d2528e --- /dev/null +++ b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CheckboxesRadiosComponent } from './checkboxes-radios.component'; + +describe('CheckboxesRadiosComponent', () => { + let component: CheckboxesRadiosComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CheckboxesRadiosComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CheckboxesRadiosComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.ts b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.ts new file mode 100644 index 0000000..5342a13 --- /dev/null +++ b/src/app/content/forms/form-elements/checkboxes-radios/checkboxes-radios.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-checkboxes-radios', + templateUrl: './checkboxes-radios.component.html', + styleUrls: ['./checkboxes-radios.component.css'] +}) +export class CheckboxesRadiosComponent implements OnInit { + + @BlockUI('basicTable') blockUIBasicTable: NgBlockUI; + @BlockUI('basicRightCheckbox') blockUIBasicRightCheckbox: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Checkboxes and Radio Buttons', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Checkboxes and Radio Buttons', + 'isLink': false + } + ] + }; + } + + reloadBasicTable() { + this.blockUIBasicTable.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicTable.stop(); + }, 2500); + } + + reloadBasicRightCheckbox() { + this.blockUIBasicRightCheckbox.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicRightCheckbox.stop(); + }, 2500); + } + +} + diff --git a/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.css b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.css new file mode 100644 index 0000000..df69a57 --- /dev/null +++ b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.css @@ -0,0 +1,139 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + diff --git a/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.html b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.html new file mode 100644 index 0000000..a3e7a67 --- /dev/null +++ b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.html @@ -0,0 +1,194 @@ +
+
+
+ +
+
+ +
+
+
+ + + Input Mask + + +
+
+
+
+
Date
+
+ +
+
+ +
+
+
+ +
+
+
DateISO
+ + dateISO + error +
+
+
MaxDate(2019-06-11)
+
+ +
+
+ +
+
+
+ maxDate + error +
+
+
MinDate(2019-06-11)
+
+ +
+
+ +
+
+
+ minDate + error +
+
+
Required
+ + required + error + +
+
+
Minlength
+ + minlength + error +
+
+
Maxlength
+ + required + error +
+
+
Rangelength
+ + rangelength + error +
+
+
Number
+ + number error +
+
+
Max
+ + max error +
+
+
Min
+ + min error +
+
+
+
+
Pattern
+ + pattern + error +
+
+
Email
+ + email error +
+
+ + + equal error +
+
+ + + notEqual error +
+
+ + + required error +
+
+ + equalTo error +
+
+ + + required error +
+
+ + notEqualTo error +
+ +
+
Gt
+ + gt error +
+
+
Lt
+ + lt error +
+
+
Url
+ + url error +
+
+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.spec.ts b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.spec.ts new file mode 100644 index 0000000..55d2943 --- /dev/null +++ b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ExtendedinputsComponent } from './extendedinputs.component'; + +describe('ExtendedinputsComponent', () => { + let component: ExtendedinputsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ExtendedinputsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ExtendedinputsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.ts b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.ts new file mode 100644 index 0000000..6fb03c6 --- /dev/null +++ b/src/app/content/forms/form-elements/extendedinputs/extendedinputs.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { FormControl, FormGroup, Validators, NgForm } from '@angular/forms'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { NgbDateStruct, NgbTimeStruct, NgbDate } from '@ng-bootstrap/ng-bootstrap'; + + +@Component({ + selector: 'app-extendedinputs', + templateUrl: './extendedinputs.component.html', + styleUrls: ['./extendedinputs.component.css'] +}) +export class ExtendedinputsComponent implements OnInit { + @BlockUI('inputMask') blockUIInputMask: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + d3: any; + d2: any; + d1: any; + + model: NgbDateStruct; + popupModel; + + @ViewChild('f', { read: true }) floatingLabelForm: NgForm; + @ViewChild('vform', { read: true }) validationForm: FormGroup; + inputForm: FormGroup; + constructor() { } + + ngOnInit() { + this.inputForm = new FormGroup({ + 'email': new FormControl(null, [Validators.required, Validators.email]), + 'password': new FormControl(null, [Validators.required, Validators.minLength(4), Validators.maxLength(24)]), + 'textArea': new FormControl(null, [Validators.required]), + 'radioOption': new FormControl('Option one is this') + }, { updateOn: 'blur' }); + + this.breadcrumb = { + 'mainlabel': 'Extended Inputs', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Extra Components', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Extended Inputs', + 'isLink': false + } + ] + }; + } + + onCustomFormSubmit() { + this.validationForm.reset(); + } + + reloadInputMask() { + this.blockUIInputMask.start('Loading..'); + + setTimeout(() => { + this.blockUIInputMask.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-elements/form-elements.module.spec.ts b/src/app/content/forms/form-elements/form-elements.module.spec.ts new file mode 100644 index 0000000..ff3707b --- /dev/null +++ b/src/app/content/forms/form-elements/form-elements.module.spec.ts @@ -0,0 +1,13 @@ +import { FormElementsModule } from './form-elements.module'; + +describe('FormElementsModule', () => { + let formElementsModule: FormElementsModule; + + beforeEach(() => { + formElementsModule = new FormElementsModule(); + }); + + it('should create an instance', () => { + expect(formElementsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/form-elements.module.ts b/src/app/content/forms/form-elements/form-elements.module.ts new file mode 100644 index 0000000..2fee8ef --- /dev/null +++ b/src/app/content/forms/form-elements/form-elements.module.ts @@ -0,0 +1,74 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormInputsComponent } from './form-inputs/form-inputs.component'; +import { InputGroupsComponent } from './input-groups/input-groups.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { UiSwitchModule } from 'ngx-ui-switch'; +import { InputGridComponent } from './input-grid/input-grid.component'; +import { CheckboxesRadiosComponent } from './checkboxes-radios/checkboxes-radios.component'; +import { SwitchComponent } from './switch/switch.component'; +import { SelectComponent } from './select/select.component'; +import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgSelectModule } from '@ng-select/ng-select'; +import { BlockUIModule } from 'ng-block-ui'; +import { CustomFormsModule } from 'ngx-custom-validators'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; +import { ExtendedinputsComponent } from './extendedinputs/extendedinputs.component'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + CardModule, + UiSwitchModule, + MatchHeightModule, + NgSelectModule, + BreadcrumbModule, + NgbModule, + CustomFormsModule, + ReactiveFormsModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + NgMultiSelectDropDownModule.forRoot(), + RouterModule.forChild([ + { + path: 'form-inputs', + component: FormInputsComponent + }, + { + path: 'input-groups', + component: InputGroupsComponent + }, + { + path: 'input-grid', + component: InputGridComponent + }, + { + path: 'checkboxes-radios', + component: CheckboxesRadiosComponent + }, + { + path: 'switch', + component: SwitchComponent + }, + { + path: 'select', + component: SelectComponent + }, + { + path: 'extendedinputs', + component: ExtendedinputsComponent + }, + ]) + ], + declarations: [FormInputsComponent, InputGroupsComponent, InputGridComponent, + CheckboxesRadiosComponent, SwitchComponent, SelectComponent, ExtendedinputsComponent], + exports: [RouterModule] +}) +export class FormElementsModule { } diff --git a/src/app/content/forms/form-elements/form-inputs/form-inputs.component.css b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.css new file mode 100644 index 0000000..96a0fbf --- /dev/null +++ b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.css @@ -0,0 +1,143 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; +} + +select.form-control:not([size]):not([multiple]).input-sm { + padding: unset !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-elements/form-inputs/form-inputs.component.html b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.html new file mode 100644 index 0000000..8e6acb3 --- /dev/null +++ b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.html @@ -0,0 +1,1874 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Default Input text

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

Default Input text with help

+
+
+
+
+ eg.someone@example.com + +
+
+
+
+
+
+
+
+

Password

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

Disabled Input field

+
+
+
+

Add attribute disabled to disable input field.

+
+ +
+
+
+
+
+
+
+
+

Predefined Input Value

+
+
+
+

Add attribute value="VALUE" to set predefined value.

+
+ +
+
+
+
+
+
+
+
+

Readonly Input field

+
+
+
+

Add attribute readonly="readonly" to set field readonly.

+
+ +
+
+
+
+
+
+
+
+

Input with Placeholder

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

Maximum Value

+
+
+
+

Add attribute maxlength="NUMBER" to input area.

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

To set focus on label click, use .cursor-pointer class.

+
+ +
+
+
+
+
+
+
+
+

Static Text

+
+
+
+
+ +

To set static text use .form-control-static class.

+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ + Maximum 8 characters allowed + +

Muted help text using .text-muted class.

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

Add attribute autocomplete="off" to disable Autocomplete.

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

Input Type Options

+
+
+
+
+
+
+ +
+
+
+

Using input type="text"

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

Using input type="password"

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

Using input type="tel"

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

Using input type="email"

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

Using input type="url"

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

Using input type="search"

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

Using input type="number"

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

Using input type="date"

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

Using input type="time"

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

Using input type="color"

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

Using input type="range"

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

Basic Textarea

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

Textarea description text.

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

Basic Select

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

To use custom select add class.custom-select to select.

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

To use multiple select add an attribute multiple="multiple".

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

Basic Input Style 2

+
+
+
+
+
+
+
+

Another Input style using .form-group-style

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

Another Select style using .form-group-style

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

Another types using .form-group-style class.

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

Basic File Browser

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

Basic File Input

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

Input Font Options

+
+
+
+
+
+
+ +
+
+
+

.font-weight-normal class for normal font

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

.font-weight-bold class for bold font

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

.font-weight-italic class for italic font

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

.text-lowercase class for lowercase font

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

.text-capitalize class for capitalize font

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

.text-uppercased class for uppercased font

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

.text-left class for left align text in input

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

.text-center class for center align text in input

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

.text-right class for right align text in input

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

.font-size-large class for large input font

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

.font-size-small class for small input font

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

.font-size-xsmall class for XSmall input font

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

Basic Form Helpers

+
+
+
+
+
+
+

Form Helper Left

+
+
+
+
+ +

Helper aligned to left +

+
+
+
+
+
+
+
+
+

Form Helper Center

+
+
+
+
+ +

Helper aligned to + center

+
+
+
+
+
+
+
+
+

Form Helper Right

+
+
+
+
+ +

Helper aligned to right +

+
+
+
+
+
+
+
+
+

Form Helper Left with color label

+
+
+
+
+ +

Helper aligned + to left

+
+
+
+
+
+
+
+
+

Form Helper Center with color label

+
+
+
+
+ +

Helper + aligned to center

+
+
+
+
+
+
+
+
+

Form Helper Right with color label

+
+
+
+
+ +

Helper + aligned to right

+
+
+
+
+
+
+
+
+

Form Helper Left with block color label

+
+
+
+
+ +

Helper + aligned to left

+
+
+
+
+
+
+
+
+

Form Helper Center with block color label

+
+
+
+
+ +

Helper + aligned to center

+
+
+
+
+
+
+
+
+

Form Helper Right with block color label

+
+
+
+
+ +

Helper + aligned to right

+
+
+
+
+
+
+
+
+

Inline Helper

+
+
+
+
+
+ +
+
+ Inline helper class + .block-tag +
+
+
+
+
+
+
+
+
+

Inline Helper with color

+
+
+
+
+
+ +
+
+ Inline color helper +
+
+
+
+
+
+
+
+ + + +
+
+
+

Input Styling

+
+
+
+
+
+
+ +
+
+
+

.round class for rounded field

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

.square class for squared field

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

Default Input Field

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

Input Column Sizing

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

Control Sizing Options

+
+
+
+
+
+
+ +
+
+
+

XLarge Input class .input-xl

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

XLarge Input class .input-xl for select

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

Large Input class .input-lg

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

Large Input class .input-lg for select

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

Small Input class .input-sm

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

Small Input class .input-sm for select

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

XSmall Input class .input-xs

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

XSmall Input class .input-xs for select

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

Input Validation States

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

Use.has-danger class + for danger state

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

Use.has-success class + for success state

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

Use.has-warning class + for warning state

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

Input with Icons

+
+
+
+
+
+
+ +
+
+
+

Icon Left class .has-icon-left, XLarge Input class + .input-xl& + .font-medium-4 class for XLarge Icon

+
+ +
+ +
+ Icon Left class .has-icon-left, XLarge Input class + .input-xl& + .font-medium-4 class for XLarge Icon +
+
+
+
+
+
+
+
+ +
+
+
+

XLarge Input class .input-xl& .font-medium-4 class + for XLarge + Icon

+
+ +
+ +
+ XLarge Input class .input-xl& + .font-medium-4 class for + XLarge Icon +
+
+
+
+
+
+
+
+ +
+
+
+

Icon Left class .has-icon-left, Large Input class + .input-lg& + .font-medium-4 class for Large Icon

+
+ +
+ +
+ Icon Left class .has-icon-left, Large Input class + .input-lg& + .font-medium-4 class for Large Icon +
+
+
+
+
+
+
+
+ +
+
+
+

Large Input class .input-lg& .font-medium-4 class + for Large + Icon

+
+ +
+ +
+ Large Input class .input-lg& .font-medium-4 + class for + Large Icon +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+

Small Input with Left Icon

+
+
+
+
+ +
+ +
+ Icon Left class .has-icon-left, Small Input class + .input-sm& + .font-small-4 class for Small Icon +
+
+
+
+
+
+
+
+

Small Input with Right Icon

+
+
+
+
+ +
+ +
+ Small Input class .input-sm& .font-small-4 + class for + Small Icon +
+
+
+
+
+
+
+
+

Extra Small Input with Left Icon

+
+
+
+
+ +
+ +
+ Icon Left class .has-icon-left, XSmall Input class + .input-xs& + .font-small-2 class for XSmall Icon +
+
+
+
+
+
+
+
+

Extra Small Input with Right Icon

+
+
+
+
+ +
+ +
+ XSmall Input class .input-xs& .font-small-2 + class for + XSmall Icon +
+
+
+
+
+
+
+
+

Round Input with Icon

+
+
+
+
+ +
+ +
+

Use class .has-icon-left class for Left Icon.

+
+
+
+
+
+
+
+
+

Round Input with Right Spin Icon

+
+
+
+
+ +
+ +
+

Default right icon. No classes needed.

+
+
+
+
+
+
+
+
+

Default Input with Spin Icon

+
+
+
+
+ +
+ +
+

Icon Left class .has-icon-left & .spinner class + to spin + the Icon

+
+
+
+
+
+
+
+
+

Default Input with Right Spin Icon

+
+
+
+
+ +
+ +
+

.spinner class to spin the Icon

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

Control Color Options

+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/form-inputs/form-inputs.component.spec.ts b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.spec.ts new file mode 100644 index 0000000..f1eb662 --- /dev/null +++ b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FormInputsComponent } from './form-inputs.component'; + +describe('FormInputsComponent', () => { + let component: FormInputsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FormInputsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormInputsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/form-inputs/form-inputs.component.ts b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.ts new file mode 100644 index 0000000..8895ba4 --- /dev/null +++ b/src/app/content/forms/form-elements/form-inputs/form-inputs.component.ts @@ -0,0 +1,63 @@ +import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; + +declare var require: any; +const formInputData = require('../../../../../assets/data/forms/form-elements/form-inputs.json'); + +@Component({ + selector: 'app-form-inputs', + templateUrl: './form-inputs.component.html', + styleUrls: ['./form-inputs.component.css'] +}) +export class FormInputsComponent implements OnInit { + + @ViewChild('labelImport', { static: true }) + labelImport: ElementRef; + + formImport: FormGroup; + fileToUpload: File = null; + + public breadcrumb: any; + multipleMultiSelect: any; + public multipleSelectArray = formInputData.multipleSelectArray; + public focucedElement = ''; + + constructor() { + this.formImport = new FormGroup({ + importFile: new FormControl('', Validators.required) + }); + } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Form Basic Elements', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Basic Elements', + 'isLink': false + } + ] + }; + } + + focusElement(focucedElement: any) { + this.focucedElement = focucedElement; + } + + onFileChange(files: FileList) { + this.labelImport.nativeElement.innerText = Array.from(files) + .map(f => f.name) + .join(', '); + this.fileToUpload = files.item(0); + } +} diff --git a/src/app/content/forms/form-elements/input-grid/input-grid.component.css b/src/app/content/forms/form-elements/input-grid/input-grid.component.css new file mode 100644 index 0000000..b8cb19d --- /dev/null +++ b/src/app/content/forms/form-elements/input-grid/input-grid.component.css @@ -0,0 +1,9 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .btn-warning { + border-color: #ff7216 !important; + background-color: #ff9149 !important; + color: #FFFFFF; + margin-left: 4px; +} \ No newline at end of file diff --git a/src/app/content/forms/form-elements/input-grid/input-grid.component.html b/src/app/content/forms/form-elements/input-grid/input-grid.component.html new file mode 100644 index 0000000..a9bd49d --- /dev/null +++ b/src/app/content/forms/form-elements/input-grid/input-grid.component.html @@ -0,0 +1,1131 @@ +
+
+
+ +
+
+ +
+
+
+ + + Horizontal Grid + + +
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + + Grid With Row Label + + +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Grid With Label

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

Right Offset

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

Left Offset

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

Centered Input

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

Centered Input with Default label

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

Grid With Row Label

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

Grid With Inline Input Label

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

Multiple Input With Default Label

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

Multiple Input With Inline Label

+
+
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/input-grid/input-grid.component.spec.ts b/src/app/content/forms/form-elements/input-grid/input-grid.component.spec.ts new file mode 100644 index 0000000..4eb4611 --- /dev/null +++ b/src/app/content/forms/form-elements/input-grid/input-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { InputGridComponent } from './input-grid.component'; + +describe('InputGridComponent', () => { + let component: InputGridComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ InputGridComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InputGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/input-grid/input-grid.component.ts b/src/app/content/forms/form-elements/input-grid/input-grid.component.ts new file mode 100644 index 0000000..715183e --- /dev/null +++ b/src/app/content/forms/form-elements/input-grid/input-grid.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-input-grid', + templateUrl: './input-grid.component.html', + styleUrls: ['./input-grid.component.css'] +}) +export class InputGridComponent implements OnInit { + +@BlockUI('horizontalGrid') blockUIHorizontalGrid: NgBlockUI; +@BlockUI('gridWithRowLabel') blockUIGridWithRowLabel: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Input Grid', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Input Grid', + 'isLink': false + } + ] + }; + } + + reloadHorizontalGrid() { + this.blockUIHorizontalGrid.start('Loading..'); + + setTimeout(() => { + this.blockUIHorizontalGrid.stop(); + }, 2500); + } + + reloadGridWithRowLabel() { + this.blockUIGridWithRowLabel.start('Loading..'); + + setTimeout(() => { + this.blockUIGridWithRowLabel.stop(); + }, 2500); + } + + +} diff --git a/src/app/content/forms/form-elements/input-groups/input-groups.component.css b/src/app/content/forms/form-elements/input-groups/input-groups.component.css new file mode 100644 index 0000000..58e622c --- /dev/null +++ b/src/app/content/forms/form-elements/input-groups/input-groups.component.css @@ -0,0 +1,34 @@ +.btn { + border-radius: 0rem !important; +} +.buttons-border-dropdown { + border-right: none !important; +} +.input-group > .form-control { + height: 40px; + } +:host ::ng-deep .dropdown .dropdown-menu { + margin: -0.1rem -3.7rem 0 !important; +} +:host ::ng-deep .custom-checkbox { + margin-bottom: 3px; + margin-left: 5px; + } +:host ::ng-deep .custom-control { + margin-bottom: 3px; + min-height: auto; + margin-left: 5px; + } +:host ::ng-deep .switch.switch-small small { + width: 18px; + height: 18px; + margin-right: 1px; + margin-top: 1px; +} +:host ::ng-deep .input-group-prepend { + height: 40px; + } +:host ::ng-deep .input-group-height{ + + height: 50px !important; +} \ No newline at end of file diff --git a/src/app/content/forms/form-elements/input-groups/input-groups.component.html b/src/app/content/forms/form-elements/input-groups/input-groups.component.html new file mode 100644 index 0000000..bb90e5b --- /dev/null +++ b/src/app/content/forms/form-elements/input-groups/input-groups.component.html @@ -0,0 +1,1075 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Default Input group

+
+
+
+

Add span with .input-group-text class before <input>

+
+
+
+ @ +
+ +
+
+
+
+
+
+
+
+
+

Input group with Right Addon

+
+
+
+

Add span with .input-group-text class after <input>

+
+
+ +
+ @example.com +
+
+
+
+
+
+
+
+
+
+

Input group Addon on both side

+
+
+
+

Add span with .input-group-text class to before & after + <input>

+
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+
+
+
+
+
+

Input group addon with Icon

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

Input group addon with Right Icon

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

Input group addon with icon both side

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

Input group addon with Spinner

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

Input group addon with Right Spinner

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

Input group addon with Spinner both side

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

Input group with Checkbox

+
+
+
+
+
+
+

Input group with checkbox

+
+
+
+

Add span with .input-group-text class before <input> text + and Add checkbox inside.

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

Input group with Right Addon

+
+
+
+

Add span with .input-group-text class after <input> text + and Add checkbox inside.

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

Input group Addon on both side

+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+ @example.com +
+
+
+
+
+
+
+
+
+ + +
+
+
+

Input group with Radio

+
+
+
+
+
+
+

Input group with radio

+
+
+
+

Add span with .input-group-text class before <input> text + and Add radio inside.

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

Input group with Right Addon

+
+
+
+

Add span with .input-group-text class after <input> text + and Add radio inside.

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

Input group Addon on both side

+
+
+
+
+
+
+ + + + + + +
+ +
+ @example.com +
+
+
+
+
+
+
+
+
+ + +
+
+
+

Input group with Switchery

+
+
+
+
+
+
+

Input group with Switchery

+
+
+
+

Add span with .input-group-text class before <input> text + and Add switchery inside.

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

Input group with Right Switchery

+
+
+
+

Add span with .input-group-text class after <input> text + and Add switchery inside.

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

Input group with switchery on both side

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

Input Groups Sizing

+
+
+
+
+
+
+

Large Input group

+
+
+
+

Add .input-group-lg class to .input-group for Large addon.

+
+
+
+ @ +
+ +
+
+
+
+
+
+
+
+
+

Default Input group

+
+
+
+

Default Input Group addon.

+
+
+ +
+ .00 +
+
+
+
+
+
+
+
+
+
+

Small Input group

+
+
+
+

Add .input-group-sm class to .input-group for small addon.

+
+
+
+ @example.com +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+

Input Groups Buttons

+
+
+
+
+
+
+

Input group Button On Left

+
+
+
+

Add button inside before <input>

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

Input group Button On Right

+
+
+
+

Add button inside after <input>

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

Input group Button On Both Side

+
+
+
+

Add button inside before & after <input>

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

Input group Icon Button On Left

+
+
+
+

Add button inside before <input>

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

Input group Button On Right

+
+
+
+

Add button inside after <input>

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

Input group Button On Both Side

+
+
+
+

Add button inside before & after <input>

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

Buttons with Dropdown

+
+
+
+
+
+
+

Input group Dropdown On Left

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

Input group Dropdown On Right

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

Input group Dropdown On Both Side

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

Segmented Buttons with Dropdown

+
+
+
+
+
+
+

Segmented Button On Left

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

Segmented Button On Right

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

Segmented Buttons On Both Side

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

Color options

+
+
+
+
+
+
+

Default Input group

+
+
+
+

Add color using .bg-COLORNAME class to the addon.

+
+
+
+ @ +
+ +
+
+
+
+
+
+
+
+
+

Input group with Right Addon

+
+
+
+

Add color using .bg-COLORNAME class to the addon.

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

Input group Addon on both side

+
+
+
+

Add color using .bg-COLORNAME class to the addon and input with lighten/darken color. +

+
+
+
+ +
+ +
+ .00 +
+
+
+
+
+
+
+
+
+
+

Input group Button On Left

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

Input group Button On Right

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

Input group Button On Both Side

+
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/input-groups/input-groups.component.spec.ts b/src/app/content/forms/form-elements/input-groups/input-groups.component.spec.ts new file mode 100644 index 0000000..12bcf23 --- /dev/null +++ b/src/app/content/forms/form-elements/input-groups/input-groups.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { InputGroupsComponent } from './input-groups.component'; + +describe('InputGroupsComponent', () => { + let component: InputGroupsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ InputGroupsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InputGroupsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/input-groups/input-groups.component.ts b/src/app/content/forms/form-elements/input-groups/input-groups.component.ts new file mode 100644 index 0000000..4c1b019 --- /dev/null +++ b/src/app/content/forms/form-elements/input-groups/input-groups.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-input-groups', + templateUrl: './input-groups.component.html', + styleUrls: ['./input-groups.component.css'] +}) +export class InputGroupsComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Input Groups', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Input Groups', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/forms/form-elements/select/select.component.css b/src/app/content/forms/form-elements/select/select.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/forms/form-elements/select/select.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/forms/form-elements/select/select.component.html b/src/app/content/forms/form-elements/select/select.component.html new file mode 100644 index 0000000..3e53fc6 --- /dev/null +++ b/src/app/content/forms/form-elements/select/select.component.html @@ -0,0 +1,295 @@ +
+
+
+ +
+
+ +
+
+
+ + + Single Select + + +

Select can take a regular select box with search options within the Select control.

+
+
+ Basic Select +
+

Use ng-select for basic select control.

+ + +
+
+
+ Disabled Mode +
+

Select will respond to the disabled attribute on <ng-select> + elements. You can also initialize Select with [disabled]: true to get the same + effect.

+ + +
+
+
+ Hiding the search box +
+

Select allows you to hide the search box depending on the number of options which are + displayed. In this example, we use the value [searchable]="false" to tell Select to never + display the search box.

+ + +
+
+
+
+
+ + + Multiple Select + + +

Select also supports multi-value select boxes. The select below is declared with the + multiple + attribute.

+
+
+ Basic Multi Select +
+

Use ng-select for basic select control. Use [multiple]="true" + attribute for multiple select box.

+ + +
+
+
+ Disabled Mode +
+

Select will respond to the disabled attribute on <ng-select> + elements. You can also initialize Select with [disabled]: true to get the same + effect.

+ + +
+
+
+ Multi Select with Label +
+

Select multi-value select boxes can set restrictions regarding the maximum number of options + selected. The select below is declared with the [multiple]="true" attribute with + maxSelectedItems + in the select options.

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

Programmatic control

+
+
+
+
+
+

DOM Events

+
+
+
+

Select will trigger some events on the original select element, allowing you to integrate it with + other components.

+
+
+ DOM Single +
+ + +
+
+
+ DOM Multiple +
+ + +
+
+
+
+
+
+
+
+

Programmatic access

+ + +
+
+
+

Select supports methods that allow programmatic control of the component.

+
+
+ Programmatic Single +
+ + +
+ +
+
+ Programmatic Multiple +
+ + +
+
+ + +
+
+
+
+
+
+
+ + + + + +
+
+
+

Advance Options

+
+
+
+
+
+
+

Single Select Options

+
+
+
+
+
+ Loading Array Data +
+

Select provides a way to load the data from a local array. You can provide initial selections + with array data by providing the option tag for the selected values, similar to how it would be + done for a standard select.

+ + +
+ +
+
+ Templating +
+

Various display options of the Select component can be changed: You can access the + <ng-select > + element and any attributes on those elements using .element. + Templating is primarily controlled by the + ng-template + options.

+ + + +    {{item.item_text}} + + + +    {{item.item_text}} + + +
+
+
+
+
+
+
+
+

Multiple Select Options

+
+
+
+
+
+ Tagging Support +
+

Select can be used to quickly set up fields used for tagging. That when + tagging is enabled the user can select from pre-existing options or create a new tag by picking + the first choice, which is what the user has typed into the search box so far.>

+ + +
+ +
+
+ Customizing How Results Are Matched +
+

Unlike other dropdowns on this page, this one matches options only if the term appears in the + beginning of the string as opposed to anywhere: This custom matcher uses a compatibility module + that is only bundled in the full version of Select. You also have the option of using a more + complex matcher.

+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/select/select.component.spec.ts b/src/app/content/forms/form-elements/select/select.component.spec.ts new file mode 100644 index 0000000..b6d8ac1 --- /dev/null +++ b/src/app/content/forms/form-elements/select/select.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SelectComponent } from './select.component'; + +describe('SelectComponent', () => { + let component: SelectComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/select/select.component.ts b/src/app/content/forms/form-elements/select/select.component.ts new file mode 100644 index 0000000..8c2956f --- /dev/null +++ b/src/app/content/forms/form-elements/select/select.component.ts @@ -0,0 +1,160 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgSelectDataService, City } from '../../../../_services/ng-select-data.service'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +declare var require: any; +const selectData = require('../../../../../assets/data/forms/form-elements/select.json'); + +@Component({ + selector: 'app-select', + templateUrl: './select.component.html', + styleUrls: ['./select.component.css'] +}) +export class SelectComponent implements OnInit { + + @ViewChild('ng-select') ngSelect; + @BlockUI('singleSelect') blockUISingleSelect: NgBlockUI; + @BlockUI('multipleSelect') blockUIMultipleSelect: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + singlebasicSelected: any; + singleDisableMode: any; + singleHideSearch: any; + + multipleMultiSelect: any; + multipleDisableMode: any; + multipleWithlabel: any; + + singleEvent: any; + multipleEvent: any; + + programmaticSingle: any; + programmaticMultiple: any; + + loadData: any; + + template: any; + + singleSelectBackgroundColor: any; + singleSelectMenuBackgroundColor: any; + + selectedTag: number[]; + + matchedResultArray: City[] = []; + cityLoading = false; + + public singleSelectArray = selectData.singleSelectArray; + public multipleSelectArray = selectData.multipleSelectArray; + public eventArray = selectData.eventArray; + public programmaticArray = selectData.programmaticArray; + public loadArray = selectData.loadArray; + public templatingArray = selectData.templatingArray; + public singleSelect = selectData.singleSelect; + public taggingSupportArray = selectData.taggingSupportArray; + + + constructor(private dataService: NgSelectDataService) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Select', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Select', + 'isLink': false + } + ] + }; + + this.singlebasicSelected = this.singleSelectArray[0].item_text; + this.singleDisableMode = this.singleSelectArray[0].item_text; + this.singleHideSearch = this.singleSelectArray[0].item_text; + + this.multipleMultiSelect = [{ item_id: 1, item_text: 'Alaska' }, { item_id: 2, item_text: 'California' }]; + this.multipleDisableMode = [{ item_id: 1, item_text: 'Alaska' }, { item_id: 2, item_text: 'California' }]; + this.multipleWithlabel = []; + + this.singleEvent = this.eventArray[0].item_text; + this.multipleEvent = []; + + this.programmaticSingle = this.programmaticArray[0].item_text; + this.programmaticMultiple = []; + + this.loadData = this.loadArray[2].item_text; + + this.template = this.templatingArray[0].item_text; + + this.singleSelectBackgroundColor = this.singleSelect[0].item_text; + this.singleSelectMenuBackgroundColor = this.singleSelect[0].item_text; + + this.loadCity(); + } + + openSingleEvent() { + window.alert('Open Event Fired.'); + } + closeSingleEvent() { + window.alert('Close Event Fired.'); + } + onChange() { + window.alert('Select Event Fired'); + } + + setCalifornia() { + this.programmaticSingle = this.programmaticArray[1].item_text; + } + + setCaliforniaAlabama() { + this.programmaticMultiple = [{ item_id: 2, item_text: 'California' }, { item_id: 5, item_text: 'Alabama' }]; + } + programmaticMultipleClear() { + this.programmaticMultiple = []; + } + + customSearchFn(term: string, item: City) { + term = term.toLocaleLowerCase(); + return item.item_text.toLocaleLowerCase().indexOf(term) > -1; + } + + loadCity() { + this.cityLoading = true; + this.dataService.getPeople().subscribe(x => { + this.matchedResultArray = x; + this.cityLoading = false; + }); + } + + reloadSingleSelect() { + this.blockUISingleSelect.start('Loading..'); + + setTimeout(() => { + this.blockUISingleSelect.stop(); + }, 2500); + } + + reloadMultipleSelect() { + this.blockUIMultipleSelect.start('Loading..'); + + setTimeout(() => { + this.blockUIMultipleSelect.stop(); + }, 2500); + } + +} diff --git a/src/app/content/forms/form-elements/switch/switch.component.css b/src/app/content/forms/form-elements/switch/switch.component.css new file mode 100644 index 0000000..fab0eaf --- /dev/null +++ b/src/app/content/forms/form-elements/switch/switch.component.css @@ -0,0 +1,27 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .ml-2{ + margin-top: 3px; +} +:host ::ng-deep .ls-1{ + margin-top: 10px; +} +:host ::ng-deep .ds-1{ + margin-top: 6px; +} +:host ::ng-deep .switch-medium .switch.switch-medium { + height: 30px; + border-radius: 30px; + top: 8px; +} +:host ::ng-deep .switch-large .switch.switch-large { + height: 40px; + border-radius: 40px; + top: 15px; +} +:host ::ng-deep .switch-small .switch.switch-small { + height: 20px; + border-radius: 20px; + top: 4px; +} \ No newline at end of file diff --git a/src/app/content/forms/form-elements/switch/switch.component.html b/src/app/content/forms/form-elements/switch/switch.component.html new file mode 100644 index 0000000..7ee16f4 --- /dev/null +++ b/src/app/content/forms/form-elements/switch/switch.component.html @@ -0,0 +1,285 @@ +
+
+
+ +
+
+ +
+
+
+

Switchery Toggle

+
+
+
+
+ + + Basic Switchery Toggle + + +

To set Switchery toggle, add .switchery class to checkbox.

+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+ +
+
+
+ +
+ +
+
+
+
+
+ + + Right Switchery Toggle + + +

To set Switchery toggle to right, wrap checkbox with .float-right class.

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

Switchery Sizes

+
+
+
+
+

To set Large Switchery toggle, add data-size="lg" to checkbox + with .switchery class.

+
+ + +
+ +
+
+

To set Default Switchery toggle, add .switchery class to + checkbox.

+
+ +
+ +
+
+

To set Small Switchery toggle, add data-size="sm" to checkbox + with .switchery class.

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

Switchery Labels on both sides

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

Template Color Switchery

+
+
+
+
+
+
+
+

Color Switchery

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

COLOR SWITCHERY WITH LABELS ON BOTH SIDES

+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-elements/switch/switch.component.spec.ts b/src/app/content/forms/form-elements/switch/switch.component.spec.ts new file mode 100644 index 0000000..e5c3393 --- /dev/null +++ b/src/app/content/forms/form-elements/switch/switch.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SwitchComponent } from './switch.component'; + +describe('SwitchComponent', () => { + let component: SwitchComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SwitchComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SwitchComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-elements/switch/switch.component.ts b/src/app/content/forms/form-elements/switch/switch.component.ts new file mode 100644 index 0000000..e51d1e0 --- /dev/null +++ b/src/app/content/forms/form-elements/switch/switch.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-switch', + templateUrl: './switch.component.html', + styleUrls: ['./switch.component.css'] +}) +export class SwitchComponent implements OnInit { + +@BlockUI('basicSwitcheryToggle') blockUIBasicSwitcheryToggle: NgBlockUI; +@BlockUI('rightSwitcheryToggle') blockUIRightSwitcheryToggle: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Switch', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Switch', + 'isLink': false + } + ] + }; + } + + reloadBasicSwitcheryToggle() { + this.blockUIBasicSwitcheryToggle.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicSwitcheryToggle.stop(); + }, 2500); + } + + reloadRightSwitcheryToggle() { + this.blockUIRightSwitcheryToggle.start('Loading..'); + + setTimeout(() => { + this.blockUIRightSwitcheryToggle.stop(); + }, 2500); + } + +} diff --git a/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.css b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.css new file mode 100644 index 0000000..149a8c2 --- /dev/null +++ b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.css @@ -0,0 +1,153 @@ +.form-control.is-invalid { + border-color: #CACFE7; + background-image: none !important; +} + +.div.basicInfoCard { + height: 700px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; + } + :host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; + } + + :host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; + } + + :host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; + } + + :host ::ng-deep .bg-primary { + background-color: #007bff !important; + } + + :host ::ng-deep .text-white { + color: #fff !important; + } + + :host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; + } + + :host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + + } + + .bg-light { + background-color: #f8f9fa !important; + } + + :host ::ng-deep .hidden { + display: block !important; + } + + .ngb-dp-weekday { + color: #17a2b8; + } + + .ngb-dp-week-number, + .ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; + } + + .ngb-datepicker-month-view { + pointer-events: auto; + } + + .small { + font-size: 80%; + font-weight: 400; + } + + .ngb-dp-day { + cursor: pointer !important; + } + + .ngb-dp-month { + pointer-events: none; + } + + .btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; + } + + .ngb-datepicker-month-view { + pointer-events: auto; + } + + :host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + + .ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; + } + + .ngb-dp-day, + .ngb-dp-week-number, + .ngb-dp-weekday { + width: 2rem; + height: 2rem; + } + + .custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; + } + + .custom-day.focused { + background-color: #e6e6e6; + } + + .custom-day.range, + .custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; + } + + .custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); + } + + :host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; + } + + \ No newline at end of file diff --git a/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.html b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.html new file mode 100644 index 0000000..ddf32db --- /dev/null +++ b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.html @@ -0,0 +1,764 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info (Reactive Forms Validation) + + +
+

This is the most basic and default form having form sections. To add form section use + .form-section + class with any heading tags. This form has the buttons on the bottom left corner which is the + default position.

+
+
+
+

Personal Info

+
+
+
+ + + +
+ First Name is required
+
+
+
+
+
+ + + +
+ Last Name is required
+
+
+
+
+
+
+
+ + + +
Email + is required
+
Email must + be a valid email address
+
+
+
+
+
+ + + +
phone + is required
+
+
+
+
+

Requirements

+
+ + + +
Company + is required
+
+
+
+
+
+ + + +
+ Interest is required
+
+
+
+
+
+ + + +
+ Budget is required
+
+
+
+
+
+ + + +
File + is required
+
+
+
+ + + +
+ Project Description + is required
+
+
+
+
+ + +
+
+
+
+
+
+ + + User Profile (Template-Driven Forms Validation) + + +
+

You can always change the border color of the form controls using border-* class. + In this example we have user border-primary class for form controls. Form action + buttons are on the bottom right position.

+
+
+
+

About User

+
+
+
+ + + First Name is required. +
+
+
+
+ + + Last Name is required. +
+
+
+
+
+
+ + + User Name is required. +
+
+
+
+ + + Nick Name is required. +
+
+
+

Contact Info & Bio

+
+ + + Please enter a valid email! +
+
+ + + url error +
+
+ + + + contact Number required + +
+
+ + + Bio is required. +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

Issue Tracking

+
+
+
+
+

This form shows tooltips on hover to provide useful information while user is filling the form. + Use data attributes like toggle data-toggle, trigger data-trigger, + placement data-placement, title data-title to show tooltips on form + controls.

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

Timesheet

+
+
+
+
+

This form shows the use of icons with form controls. Define the position of the icon using + has-icon-left + or has-icon-right class. Use icon-* class to define the icon for the + form control. See Icons sections for the list of icons you can use.

+
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ $ +
+ +
+ .00 +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+

Complaint Form

+
+
+
+ +
+

This is a variation to the default form control styling. In this example all the form controls + has round styling. To apply round style add class round to any form control.

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

Donation

+
+
+
+ +
+

This is another variation to the default form control styling. In this example all the form + controls has square styling. To apply square style add class square to any form + control.

+
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ $ +
+ +
+ .00 +
+
+
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+
+
+
+
+
+
+
+
+

Event Registration

+
+
+
+ +
+

This example shows a way to center your form in the card. Here we have used + col-md-6 ml-auto + classes to center the form in a full width card. User can always change those classes according + to width and offset requirements. This example also uses form action buttons in the center bottom + position of the card.

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

Event Registration

+
+
+
+
+

This example shows a ways to center your card with form. Here we have used + col-md-6 ml-auto classes to center the card as its not full width. User can always + change those classes according to width and offset requirements. This example also uses form action + buttons in the center bottom position of the card.

+
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.spec.ts b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.spec.ts new file mode 100644 index 0000000..f883762 --- /dev/null +++ b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BasicFormsComponent } from './basic-forms.component'; + +describe('BasicFormsComponent', () => { + let component: BasicFormsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BasicFormsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicFormsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.ts b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.ts new file mode 100644 index 0000000..a49e740 --- /dev/null +++ b/src/app/content/forms/form-layouts/basic-forms/basic-forms.component.ts @@ -0,0 +1,173 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { FormGroup, FormBuilder, Validators, NgForm } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-basic-forms', + templateUrl: './basic-forms.component.html', + styleUrls: ['./basic-forms.component.css'] +}) +export class BasicFormsComponent implements OnInit { + + @ViewChild('f', { read: true }) userProfileForm: NgForm; + + model: any = {}; + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + options = { + minimize: true, + reload: true, + expand: true, + close: true + }; + public breadcrumb: any; + + projectInfo: FormGroup; + userProfile: FormGroup; + issueTracking: FormGroup; + timeSheet: FormGroup; + complaintForm: FormGroup; + donation: FormGroup; + eventRegistration1: FormGroup; + eventRegistration2: FormGroup; + + submitted = false; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + priority = ['Low', 'Medium', 'High']; + status = ['Not Started', 'Started', 'Fixed']; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Basic Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Basic Forms', + 'isLink': false + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: [, Validators.required], + aboutProject: ['', Validators.required], + }); + + + this.issueTracking = this.formBuilder.group({ + issueTitle: ['', Validators.required], + openedBy: ['', Validators.required], + dateOpened: ['', Validators.required], + dateFixed: ['', Validators.required], + priority: ['', Validators.required], + status: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + + this.complaintForm = this.formBuilder.group({ + companyName: ['', Validators.required], + employeeName: ['', Validators.required], + complaintDate: ['', Validators.required], + supervisorName: ['', Validators.required], + complaintDetails: ['', Validators.required], + signature: ['', Validators.required] + }); + + this.donation = this.formBuilder.group({ + fullName: ['', Validators.required], + email: ['', Validators.required], + contact: ['', Validators.required], + donationType: ['', Validators.required], + amount: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.eventRegistration1 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer: ['', Validators.required] + }); + + this.eventRegistration2 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer2: ['', Validators.required] + }); + } + + get f() { + return this.projectInfo.controls; + } + + onProjectInfoSubmit() { + this.submitted = true; + + if (this.projectInfo.invalid) { + return; + } + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } + + keyPress(event: any) { + const pattern = /[0-9\+\-\ ]/; + + const inputChar = String.fromCharCode(event.charCode); + if (event.keyCode !== 8 && !pattern.test(inputChar)) { + event.preventDefault(); + } + } + +} diff --git a/src/app/content/forms/form-layouts/bordered/bordered.component.css b/src/app/content/forms/form-layouts/bordered/bordered.component.css new file mode 100644 index 0000000..fbd6e24 --- /dev/null +++ b/src/app/content/forms/form-layouts/bordered/bordered.component.css @@ -0,0 +1,141 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/bordered/bordered.component.html b/src/app/content/forms/form-layouts/bordered/bordered.component.html new file mode 100644 index 0000000..8f21657 --- /dev/null +++ b/src/app/content/forms/form-layouts/bordered/bordered.component.html @@ -0,0 +1,425 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

Add .form-bordered to form tag to add border to a form-group. In this example + .form-horizontal + is used to show the bordered form functionality.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + User Profile + + +
+

Add .form-bordered to form tag to add border to a form-group. In this example + 2-column .form-horizontal is used with primary color bordered form controls to show + the bordered form functionality.

+
+
+
+

About User

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

Contact Info & Bio

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

Timesheet

+
+
+
+ +
+

Add .form-bordered to form tag to add border to a form-group. In this example icons + are used with form controls to show the bordered form functionality.

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+

Event Registration

+
+
+
+ +
+

Add .form-bordered to form tag to add border to a form-group. In this example + centered card is used to show the bordered form functionality.

+
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/bordered/bordered.component.spec.ts b/src/app/content/forms/form-layouts/bordered/bordered.component.spec.ts new file mode 100644 index 0000000..1c45293 --- /dev/null +++ b/src/app/content/forms/form-layouts/bordered/bordered.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BorderedComponent } from './bordered.component'; + +describe('BorderedComponent', () => { + let component: BorderedComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BorderedComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BorderedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/bordered/bordered.component.ts b/src/app/content/forms/form-layouts/bordered/bordered.component.ts new file mode 100644 index 0000000..f9dd649 --- /dev/null +++ b/src/app/content/forms/form-layouts/bordered/bordered.component.ts @@ -0,0 +1,112 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-bordered', + templateUrl: './bordered.component.html', + styleUrls: ['./bordered.component.css'] +}) +export class BorderedComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + projectInfo: FormGroup; + userProfile: FormGroup; + timeSheet: FormGroup; + eventRegistration: FormGroup; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Bordered Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Bordered Forms', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + phone: ['', Validators.required], + bio: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + this.eventRegistration = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-layouts/form-actions/form-actions.component.css b/src/app/content/forms/form-layouts/form-actions/form-actions.component.css new file mode 100644 index 0000000..10cbcba --- /dev/null +++ b/src/app/content/forms/form-layouts/form-actions/form-actions.component.css @@ -0,0 +1,154 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .form-actions.top { + border-top: 0 !important; + border-bottom: 1px solid #D1D5EA; + margin-top: 0 !important; + margin-bottom: 20px !important; +} +:host ::ng-deep .form-actions { + padding: 20px 0; + margin-top: 20px; +} +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/form-actions/form-actions.component.html b/src/app/content/forms/form-layouts/form-actions/form-actions.component.html new file mode 100644 index 0000000..3cfccca --- /dev/null +++ b/src/app/content/forms/form-layouts/form-actions/form-actions.component.html @@ -0,0 +1,803 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+ + + Form Actions On Top Left. + +

To add form actions on top of the form add a div with .form-actions class to begin + the form. Add .top class to add border below form actions.

+
+
+
+ + +
+
+

Personal Info

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

Requirements

+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + + User Profile + + +
+ + + Form Actions On Bottom Right. + +

To add form actions on bottom of the form add a div with .form-actions class to end + the form. This is the default position for form actions. We have added .right class + to move buttons on the right side.

+
+
+
+

About User

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

Contact Info & Bio

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

Issue Tracking

+
+
+
+
+ + + Form Actions On Top And Bottom Left. + +

To add form actions on top and bottom of the form add a div with .form-actions + class to start and end the form.

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

Timesheet

+
+
+
+
+ + + Form Actions On Top And Bottom Right. + +

To add form actions on top and bottom of the form add a div with .form-actions + class to start and end the form. Add .right class to align the form action buttons + to right.

+
+
+
+ + +
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ $ +
+ +
+ .00 +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+

Complaint Form

+
+
+ +
+ + +
+
+
+
+
+
+
+ + + Form Actions On Center With Dropdown Form Action. + +

To add form actions on bottom of the form add a div with .form-actions class to end + the form. Add .center class to align the form action buttons to center. We can also + add more form action using dropdown button to the top right corner of the form.

+
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ + + Form Actions On Center With Search Form Action. + +

To add form actions on bottom of the form add a div with .form-actions class to end + the form. Add .center class to align the form action buttons to center. We can also + search bar action of the form.

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ $ +
+ +
+ .00 +
+
+
+
+ + +
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+

Event Registration

+
+
+
+
+ + + Multiple Form Actions On Top And Bottom. + + +

To add form actions on top and bottom of the form add a div with .form-actions class + to start + and end the form. Add .buttons-group class along with .float-* class to + pull the + buttons group to either left or right.

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

Event Registration

+
+
+
+
+ + + Multiple Form Actions On Top And Bottom. + +

To add form actions on top and bottom of the form add a div with .form-actions + class to start and end the form. Add .buttons-group class along with + .float-* + class to pull the buttons group to either left or right.

+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/form-actions/form-actions.component.spec.ts b/src/app/content/forms/form-layouts/form-actions/form-actions.component.spec.ts new file mode 100644 index 0000000..f001b38 --- /dev/null +++ b/src/app/content/forms/form-layouts/form-actions/form-actions.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FormActionsComponent } from './form-actions.component'; + +describe('FormActionsComponent', () => { + let component: FormActionsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FormActionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormActionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/form-actions/form-actions.component.ts b/src/app/content/forms/form-layouts/form-actions/form-actions.component.ts new file mode 100644 index 0000000..0b1db49 --- /dev/null +++ b/src/app/content/forms/form-layouts/form-actions/form-actions.component.ts @@ -0,0 +1,167 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-form-actions', + templateUrl: './form-actions.component.html', + styleUrls: ['./form-actions.component.css'] +}) +export class FormActionsComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + projectInfo: FormGroup; + userProfile: FormGroup; + issueTracking: FormGroup; + timeSheet: FormGroup; + complaintForm: FormGroup; + donation: FormGroup; + eventRegistration1: FormGroup; + eventRegistration2: FormGroup; + + public isFormActionInfo1 = false; + public isFormActionInfo2 = false; + public isFormActionInfo3 = false; + public isFormActionInfo4 = false; + public isFormActionInfo5 = false; + public isFormActionInfo6 = false; + public isFormActionInfo7 = false; + public isFormActionInfo8 = false; + + public breadcrumb: any; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + priority = ['Low', 'Medium', 'High']; + status = ['Not Started', 'Started', 'Fixed']; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Form Actions', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Form Actions', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + phone: ['', Validators.required], + bio: ['', Validators.required] + }); + + this.issueTracking = this.formBuilder.group({ + issueTitle: ['', Validators.required], + openedBy: ['', Validators.required], + dateOpened: ['', Validators.required], + dateFixed: ['', Validators.required], + priority: ['', Validators.required], + status: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + + this.complaintForm = this.formBuilder.group({ + companyName: ['', Validators.required], + employeeName: ['', Validators.required], + complaintDate: ['', Validators.required], + supervisorName: ['', Validators.required], + complaintDetails: ['', Validators.required], + signature: ['', Validators.required] + }); + + this.donation = this.formBuilder.group({ + fullName: ['', Validators.required], + email: ['', Validators.required], + contact: ['', Validators.required], + donationType: ['', Validators.required], + amount: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.eventRegistration1 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + + this.eventRegistration2 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer2: ['', Validators.required] + }); + + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } + +} diff --git a/src/app/content/forms/form-layouts/form-layouts.module.spec.ts b/src/app/content/forms/form-layouts/form-layouts.module.spec.ts new file mode 100644 index 0000000..1db9816 --- /dev/null +++ b/src/app/content/forms/form-layouts/form-layouts.module.spec.ts @@ -0,0 +1,13 @@ +import { FormLayoutsModule } from './form-layouts.module'; + +describe('FormLayoutsModule', () => { + let formLayoutsModule: FormLayoutsModule; + + beforeEach(() => { + formLayoutsModule = new FormLayoutsModule(); + }); + + it('should create an instance', () => { + expect(formLayoutsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/form-layouts.module.ts b/src/app/content/forms/form-layouts/form-layouts.module.ts new file mode 100644 index 0000000..7cb7135 --- /dev/null +++ b/src/app/content/forms/form-layouts/form-layouts.module.ts @@ -0,0 +1,70 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BasicFormsComponent } from './basic-forms/basic-forms.component'; +import { HorizontalFormsComponent } from './horizontal-forms/horizontal-forms.component'; +import { HiddenLabelsComponent } from './hidden-labels/hidden-labels.component'; +import { FormActionsComponent } from './form-actions/form-actions.component'; +import { RowSeparatorComponent } from './row-separator/row-separator.component'; +import { BorderedComponent } from './bordered/bordered.component'; +import { StripedLabelsComponent } from './striped-labels/striped-labels.component'; +import { StripedRowsComponent } from './striped-rows/striped-rows.component'; +import { RouterModule } from '@angular/router'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { ReactiveFormsModule, FormsModule } from '@angular/forms'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + FormsModule, + ReactiveFormsModule, + MatchHeightModule, + NgbModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([{ + path: 'basic-forms', + component: BasicFormsComponent + }, + { + path: 'horizontal-forms', + component: HorizontalFormsComponent + }, + { + path: 'hidden-labels', + component: HiddenLabelsComponent + }, + { + path: 'form-actions', + component: FormActionsComponent + }, + { + path: 'row-separator', + component: RowSeparatorComponent + }, + { + path: 'bordered', + component: BorderedComponent + }, + { + path: 'striped-rows', + component: StripedRowsComponent + }, + { + path: 'striped-labels', + component: StripedLabelsComponent + }, + ]) + ], + declarations: [BasicFormsComponent, HorizontalFormsComponent, HiddenLabelsComponent, FormActionsComponent, + RowSeparatorComponent, BorderedComponent, StripedLabelsComponent, StripedRowsComponent], + exports: [RouterModule] +}) +export class FormLayoutsModule { } diff --git a/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.css b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.css new file mode 100644 index 0000000..fbd6e24 --- /dev/null +++ b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.css @@ -0,0 +1,141 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.html b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.html new file mode 100644 index 0000000..693824f --- /dev/null +++ b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.html @@ -0,0 +1,630 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

This is the most basic and default form having form sections.To add form section user .form-section class with any + heading tags. This form has the buttons on the bottom left corner which is the default position.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ + + User Profile + + +
+

You can always change the border color + of the form controls using border-* class. In this example we have user + border-primary + class for form controls. Form action buttons are on the bottom right position.

+
+
+
+

About User

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

Contact Info & Bio

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

Issue Tracking

+
+
+
+
+

This form shows tooltips on hover to + provide useful information while user is filling the form. Use data attributes like toggle + data-toggle, + trigger data-trigger, placement data-placement, title + data-title + to show tooltips on form controls.

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

Timesheet

+
+
+
+
+

This form shows the use of icons with + form controls. Define the position of the icon using has-icon-left or + has-icon-right + class. Use icon-* class to define the icon for the form control. See Icons sections + for the list of icons you can use.

+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+

Complaint Form

+
+
+
+
+

This is a variation to the default form + control styling. In this example all the form controls has round styling. To apply round style + add class round to any form control.

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

Donation

+
+
+
+
+

This is another variation to the + default form control styling. In this example all the form controls has square styling. To apply + square style add class square to any form control.

+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ $ +
+ +
+ .00 +
+
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+

Event Registration

+
+
+
+
+

This example shows a way to center your + form in the card. Here we have used col-md-6 ml-auto classes to center the form in a + full width card. User can always change those classes according to width and offset requirements. + This example also uses form action buttons in the center bottom position of the card.

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

Event Registration

+
+
+
+ +
+

This example shows a ways to center your + card with form. Here we have used col-md-6 ml-auto classes to center the card as its + not full width. User can always change those classes according to width and offset requirements. + This example also uses form action buttons in the center bottom position of the card.

+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.spec.ts b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.spec.ts new file mode 100644 index 0000000..6ae82a8 --- /dev/null +++ b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HiddenLabelsComponent } from './hidden-labels.component'; + +describe('HiddenLabelsComponent', () => { + let component: HiddenLabelsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HiddenLabelsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HiddenLabelsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.ts b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.ts new file mode 100644 index 0000000..b606632 --- /dev/null +++ b/src/app/content/forms/form-layouts/hidden-labels/hidden-labels.component.ts @@ -0,0 +1,156 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-hidden-labels', + templateUrl: './hidden-labels.component.html', + styleUrls: ['./hidden-labels.component.css'] +}) +export class HiddenLabelsComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + priority = ['Low', 'Medium', 'High']; + status = ['Not Started', 'Started', 'Fixed']; + + projectInfo: FormGroup; + userProfile: FormGroup; + issueTracking: FormGroup; + timeSheet: FormGroup; + complaintForm: FormGroup; + donation: FormGroup; + eventRegistration1: FormGroup; + eventRegistration2: FormGroup; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Hidden Label Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Hidden Label Forms', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + phone: ['', Validators.required], + bio: ['', Validators.required] + }); + + this.issueTracking = this.formBuilder.group({ + issueTitle: ['', Validators.required], + openedBy: ['', Validators.required], + dateOpened: ['', Validators.required], + dateFixed: ['', Validators.required], + priority: ['', Validators.required], + status: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + + this.complaintForm = this.formBuilder.group({ + companyName: ['', Validators.required], + employeeName: ['', Validators.required], + complaintDate: ['', Validators.required], + supervisorName: ['', Validators.required], + complaintDetails: ['', Validators.required], + signature: ['', Validators.required] + }); + + this.donation = this.formBuilder.group({ + fullName: ['', Validators.required], + email: ['', Validators.required], + contact: ['', Validators.required], + donationType: ['', Validators.required], + amount: ['', Validators.required], + comment: ['', Validators.required] + }); + + this.eventRegistration1 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + + this.eventRegistration2 = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer2: ['', Validators.required] + }); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.css b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.css new file mode 100644 index 0000000..a3ef3ba --- /dev/null +++ b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.css @@ -0,0 +1,140 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.html b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.html new file mode 100644 index 0000000..108af4f --- /dev/null +++ b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.html @@ -0,0 +1,423 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

This is the basic horizontal form with labels on left and form controls on right in one line. + Add .form-horizontal class to the form tag to have horizontal form styling. To + define form sections use form-section class with any heading tags.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+ + + User Profile + + +
+

This is 2-columns horizontal form with labels on left and form controls on right in one line. + Add .form-horizontal class to the form tag to have horizontal form styling. User can + also change the border color and background color of the form control. Add border-* + class to change border color and bg-* class to change background color of the form + control.

+
+
+
+

About User

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

Contact Info & Bio

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

Timesheet

+
+
+
+
+

Add .form-horizontal class to the form tag to have horizontal form styling. This + horizontal form shows the use of icons with form controls. Define the position of the icon using + has-icon-left or has-icon-right class. Use icon-* class to + define the icon for the form control. See Icons sections for the list of icons you can use.

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+

Event Registration

+
+
+
+
+

Add .form-horizontal class to the form tag to have horizontal form styling. This is + horizontal form demo with centered card. Here we have used col-md-6 ml-auto classes + to center the card as its not full width. User can always change those classes according to width + and offset requirements.

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.spec.ts b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.spec.ts new file mode 100644 index 0000000..6570cd7 --- /dev/null +++ b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HorizontalFormsComponent } from './horizontal-forms.component'; + +describe('HorizontalFormsComponent', () => { + let component: HorizontalFormsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HorizontalFormsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HorizontalFormsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.ts b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.ts new file mode 100644 index 0000000..74ff2db --- /dev/null +++ b/src/app/content/forms/form-layouts/horizontal-forms/horizontal-forms.component.ts @@ -0,0 +1,114 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-horizontal-forms', + templateUrl: './horizontal-forms.component.html', + styleUrls: ['./horizontal-forms.component.css'] +}) +export class HorizontalFormsComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + projectInfo: FormGroup; + userProfile: FormGroup; + timeSheet: FormGroup; + eventRegistration: FormGroup; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Horizontal Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Horizontal Forms', + 'isLink': true + + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + phone: ['', Validators.required], + bio: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + this.eventRegistration = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } + +} diff --git a/src/app/content/forms/form-layouts/row-separator/row-separator.component.css b/src/app/content/forms/form-layouts/row-separator/row-separator.component.css new file mode 100644 index 0000000..54f2d8d --- /dev/null +++ b/src/app/content/forms/form-layouts/row-separator/row-separator.component.css @@ -0,0 +1,142 @@ + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/row-separator/row-separator.component.html b/src/app/content/forms/form-layouts/row-separator/row-separator.component.html new file mode 100644 index 0000000..d9dcf02 --- /dev/null +++ b/src/app/content/forms/form-layouts/row-separator/row-separator.component.html @@ -0,0 +1,416 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

Add .row-separator to form tag to add border bottom to a form-group. In this + example .form-horizontal is used to show the row separator functionality.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + User Profile + + +
+

Add .row-separator to form tag to add border bottom to a form-group. In this + example 2-column .form-horizontal is used with primary color bordered form controls + to show the row separator functionality.

+
+
+
+

About User

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

Contact Info & Bio

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

Timesheet

+
+
+
+
+

Add .row-separator to form tag to add border bottom to a form-group. In this + example icons are used with form controls to show the row separator functionality.

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+

Event Registration

+
+
+
+
+

Add .row-separator to form tag to add border bottom to a form-group. In this + example centered card is used to show the row separator functionality.

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/row-separator/row-separator.component.spec.ts b/src/app/content/forms/form-layouts/row-separator/row-separator.component.spec.ts new file mode 100644 index 0000000..fd3b868 --- /dev/null +++ b/src/app/content/forms/form-layouts/row-separator/row-separator.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RowSeparatorComponent } from './row-separator.component'; + +describe('RowSeparatorComponent', () => { + let component: RowSeparatorComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RowSeparatorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RowSeparatorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/row-separator/row-separator.component.ts b/src/app/content/forms/form-layouts/row-separator/row-separator.component.ts new file mode 100644 index 0000000..976c899 --- /dev/null +++ b/src/app/content/forms/form-layouts/row-separator/row-separator.component.ts @@ -0,0 +1,112 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-row-separator', + templateUrl: './row-separator.component.html', + styleUrls: ['./row-separator.component.css'] +}) +export class RowSeparatorComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + projectInfo: FormGroup; + userProfile: FormGroup; + timeSheet: FormGroup; + eventRegistration: FormGroup; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Row Reparator Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Row Reparator Forms', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.userProfile = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + userName: ['', Validators.required], + nickName: ['', Validators.required], + email: ['', Validators.required], + website: ['', Validators.required], + phone: ['', Validators.required], + bio: ['', Validators.required] + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + this.eventRegistration = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadUserProfile() { + this.blockUIUserProfile.start('Loading..'); + + setTimeout(() => { + this.blockUIUserProfile.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.css b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.css new file mode 100644 index 0000000..57dd026 --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.css @@ -0,0 +1,148 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +form.striped-labels .form-group .form-bordered { + border-left: 1px solid #E9EBF5 !important; + border-bottom: 1px solid #E9EBF5 !important; +} +form.striped-labels .form-group .form-borderedmr-1 { + border-left: 1px solid #E9EBF5 !important; +} +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.html b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.html new file mode 100644 index 0000000..13000a7 --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.html @@ -0,0 +1,311 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

Add .striped-labels to form tag to add striped labels. In this example + .form-horizontal + and .form-bordered is used to show the striped labels functionality.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + Timesheet + + +
+

Add .striped-labels to form tag to add striped labels. In this example icons are + used with form controls to show the striped labels functionality.

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

Event Registration

+
+
+
+
+

Add .striped-labels to form tag to add striped labels. In this example centered + card is used to show the striped labels functionality.

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.spec.ts b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.spec.ts new file mode 100644 index 0000000..6aecd7e --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { StripedLabelsComponent } from './striped-labels.component'; + +describe('StripedLabelsComponent', () => { + let component: StripedLabelsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ StripedLabelsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StripedLabelsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.ts b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.ts new file mode 100644 index 0000000..2d0ea0f --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-labels/striped-labels.component.ts @@ -0,0 +1,99 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-striped-labels', + templateUrl: './striped-labels.component.html', + styleUrls: ['./striped-labels.component.css'] +}) +export class StripedLabelsComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('timesheet') blockUITimesheet: NgBlockUI; + + public breadcrumb: any; + customer1 = 'yes'; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + projectInfo: FormGroup; + timeSheet: FormGroup; + eventRegistration: FormGroup; + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Striped Label Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Striped Label Forms', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + this.eventRegistration = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadTimesheet() { + this.blockUITimesheet.start('Loading..'); + + setTimeout(() => { + this.blockUITimesheet.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.css b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.css new file mode 100644 index 0000000..9479113 --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.css @@ -0,0 +1,145 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.html b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.html new file mode 100644 index 0000000..64304c7 --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.html @@ -0,0 +1,309 @@ +
+
+
+ +
+
+ +
+
+
+ + + Project Info + + +
+

Add .striped-rows to form tag to add striped rows. In this example + .form-horizontal + and .form-bordered is used to show the striped rows functionality.

+
+
+
+

Personal Info

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

Requirements

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + Timesheet + + +
+

Add .striped-rows to form tag to add striped rows. In this example icons are used + with form controls to show the striped rows functionality.

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ $ +
+ +
+ .00 +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + + Event Registration + + +
+

Add .striped-rows to form tag to add striped rows. In this example centered card is + used to show the striped rows functionality.

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.spec.ts b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.spec.ts new file mode 100644 index 0000000..cba788c --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { StripedRowsComponent } from './striped-rows.component'; + +describe('StripedRowsComponent', () => { + let component: StripedRowsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ StripedRowsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StripedRowsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.ts b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.ts new file mode 100644 index 0000000..78b6d69 --- /dev/null +++ b/src/app/content/forms/form-layouts/striped-rows/striped-rows.component.ts @@ -0,0 +1,99 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-striped-rows', + templateUrl: './striped-rows.component.html', + styleUrls: ['./striped-rows.component.css'] +}) +export class StripedRowsComponent implements OnInit { + + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + @BlockUI('timesheet') blockUITimesheet: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + projectInfo: FormGroup; + timeSheet: FormGroup; + eventRegistration: FormGroup; + + interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Striped Row Forms', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Layouts', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Striped Row Forms', + 'isLink': true + } + ] + }; + + this.projectInfo = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + company: ['', Validators.required], + interestedIn: ['', Validators.required], + budget: ['', Validators.required], + selectFile: ['', Validators.required], + aboutProject: ['', Validators.required], + }); + + this.timeSheet = this.formBuilder.group({ + employeeName: ['', Validators.required], + projectname: ['', Validators.required], + date: ['', Validators.required], + ratePerHour: ['', Validators.required], + startTime: ['', Validators.required], + endTime: ['', Validators.required], + notes: ['', Validators.required] + }); + this.eventRegistration = this.formBuilder.group({ + fullname: ['', Validators.required], + title: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + customer1: ['', Validators.required] + }); + } + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } + + reloadTimesheet() { + this.blockUITimesheet.start('Loading..'); + + setTimeout(() => { + this.blockUITimesheet.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-repeater/form-repeater.component.css b/src/app/content/forms/form-repeater/form-repeater.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/forms/form-repeater/form-repeater.component.html b/src/app/content/forms/form-repeater/form-repeater.component.html new file mode 100644 index 0000000..87049cd --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.component.html @@ -0,0 +1,205 @@ +
+
+
+ +
+
+ +
+
+
+ + + Repeating Forms + + +
+
+
+
+
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+ + + Project Info + + +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ +
+ +
+
+
+

User Profile

+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-repeater/form-repeater.component.spec.ts b/src/app/content/forms/form-repeater/form-repeater.component.spec.ts new file mode 100644 index 0000000..902548d --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FormRepeaterComponent } from './form-repeater.component'; + +describe('FormRepeaterComponent', () => { + let component: FormRepeaterComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FormRepeaterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormRepeaterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-repeater/form-repeater.component.ts b/src/app/content/forms/form-repeater/form-repeater.component.ts new file mode 100644 index 0000000..9de83f0 --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.component.ts @@ -0,0 +1,173 @@ +import { Component, OnInit, ChangeDetectorRef } from '@angular/core'; +import { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-form-repeater', + templateUrl: './form-repeater.component.html', + styleUrls: ['./form-repeater.component.css'] +}) +export class FormRepeaterComponent implements OnInit { + + @BlockUI('repeatingForms') blockUIRepeatingForms: NgBlockUI; + @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; + + options = { + minimize: true, + reload: true, + expand: true, + close: true + }; + + repeatForm: FormGroup; + projectInfoForm: FormGroup; + userProfileForm: FormGroup; + public repeatList: FormArray; + public projectList: FormArray; + public userList: FormArray; + + professions = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5']; + hobby = ['design', 'development', 'illustration', 'branding', 'video']; + budget = ['Budget', 'less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; + + public breadcrumb: any; + + get repeatFormGroup() { + return this.repeatForm.get('repeatArray') as FormArray; + } + get projectFormGroup() { + return this.projectInfoForm.get('projectArray') as FormArray; + } + get userFormGroup() { + return this.userProfileForm.get('userArray') as FormArray; + } + + constructor(private formBuilder: FormBuilder, private cd: ChangeDetectorRef) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Form Repeater', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Repeater', + 'isLink': true, + 'link': '#' + }, + ] + }; + + this.repeatForm = this.formBuilder.group({ + repeatArray: this.formBuilder.array([this.createRepeat()]) + }); + + this.repeatList = this.repeatForm.get('repeatArray') as FormArray; + + this.projectInfoForm = this.formBuilder.group({ + name: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + phone: ['', Validators.required], + hobby: ['', Validators.required], + budget: ['', Validators.required], + projectArray: this.formBuilder.array([this.createFile()]), + comment: ['', Validators.required] + }); + + this.projectList = this.projectInfoForm.get('projectArray') as FormArray; + + this.userProfileForm = this.formBuilder.group({ + name: ['', Validators.required], + company: ['', Validators.required], + email: ['', Validators.required], + userArray: this.formBuilder.array([this.createPhone()]), + occuption: ['', Validators.required], + bio: ['', Validators.required], + }); + + this.userList = this.userProfileForm.get('userArray') as FormArray; + } + + createRepeat(): FormGroup { + return this.formBuilder.group({ + email: ['', Validators.required], + password: ['', Validators.required], + bio: ['', Validators.required], + phone: ['', Validators.required], + profession: ['', Validators.required], + }); + } + createFile(): FormGroup { + return this.formBuilder.group({ + file: ['', Validators.required] + }); + } + createPhone(): FormGroup { + return this.formBuilder.group({ + phone: ['', Validators.required] + }); + } + addRepeat() { + this.repeatList.push(this.createRepeat()); + } + addFile() { + this.projectList.push(this.createFile()); + } + addPhone() { + this.userList.push(this.createPhone()); + } + removeRepeat(index) { + this.repeatList.removeAt(index); + } + removeFile(index) { + this.projectList.removeAt(index); + } + removePhone(index) { + this.userList.removeAt(index); + } + getRepeatFormGroup(index): FormGroup { + const formGroup = this.repeatList.controls[index] as FormGroup; + return formGroup; + } + getProjectFormGroup(index): FormGroup { + const formGroup = this.projectList.controls[index] as FormGroup; + return formGroup; + } + getUserFormGroup(index): FormGroup { + const formGroup = this.userList.controls[index] as FormGroup; + return formGroup; + } + onFileChange(event) { + const reader = new FileReader(); + if (event.target.files && event.target.files.length) { + const [file] = event.target.files; + reader.readAsDataURL(file); + reader.onload = () => { + this.projectInfoForm.patchValue({ + file: reader.result + }); + this.cd.markForCheck(); + }; + } + } + + reloadRepeatingForms() { + this.blockUIRepeatingForms.start('Loading..'); + + setTimeout(() => { + this.blockUIRepeatingForms.stop(); + }, 2500); + } + + reloadProjectInfo() { + this.blockUIProjectInfo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectInfo.stop(); + }, 2500); + } +} diff --git a/src/app/content/forms/form-repeater/form-repeater.module.spec.ts b/src/app/content/forms/form-repeater/form-repeater.module.spec.ts new file mode 100644 index 0000000..d1c5802 --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.module.spec.ts @@ -0,0 +1,13 @@ +import { FormRepeaterModule } from './form-repeater.module'; + +describe('FormRepeaterModule', () => { + let formRepeaterModule: FormRepeaterModule; + + beforeEach(() => { + formRepeaterModule = new FormRepeaterModule(); + }); + + it('should create an instance', () => { + expect(formRepeaterModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-repeater/form-repeater.module.ts b/src/app/content/forms/form-repeater/form-repeater.module.ts new file mode 100644 index 0000000..5f78313 --- /dev/null +++ b/src/app/content/forms/form-repeater/form-repeater.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormRepeaterComponent } from './form-repeater.component'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + MatchHeightModule, + ReactiveFormsModule, + FormsModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: '', + component: FormRepeaterComponent + }, + ]) + ], + declarations: [FormRepeaterComponent], + exports: [RouterModule] +}) +export class FormRepeaterModule { } diff --git a/src/app/content/forms/form-wizard/form-wizard.module.spec.ts b/src/app/content/forms/form-wizard/form-wizard.module.spec.ts new file mode 100644 index 0000000..5944183 --- /dev/null +++ b/src/app/content/forms/form-wizard/form-wizard.module.spec.ts @@ -0,0 +1,13 @@ +import { FormWizardModule } from './form-wizard.module'; + +describe('FormWizardModule', () => { + let formWizardModule: FormWizardModule; + + beforeEach(() => { + formWizardModule = new FormWizardModule(); + }); + + it('should create an instance', () => { + expect(formWizardModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-wizard/form-wizard.module.ts b/src/app/content/forms/form-wizard/form-wizard.module.ts new file mode 100644 index 0000000..dbc2221 --- /dev/null +++ b/src/app/content/forms/form-wizard/form-wizard.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { CardModule } from '../../partials/general/card/card.module'; +import { ArchwizardModule } from 'angular-archwizard'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; +import { FormwizardComponent } from './formwizard/formwizard.component'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + ReactiveFormsModule, + BreadcrumbModule, + MatchHeightModule, + FormsModule, + NgbDatepickerModule, + ArchwizardModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: '', + component: FormwizardComponent + }, + ]) + ], + declarations: [FormwizardComponent], + exports: [RouterModule] +}) +export class FormWizardModule { } diff --git a/src/app/content/forms/form-wizard/formwizard/formwizard.component.css b/src/app/content/forms/form-wizard/formwizard/formwizard.component.css new file mode 100644 index 0000000..07a05e3 --- /dev/null +++ b/src/app/content/forms/form-wizard/formwizard/formwizard.component.css @@ -0,0 +1,329 @@ +.tab-content .tab-pane { + padding-top: 20px; +} + +.alert { + padding: 8px; + margin-bottom: 8px; +} + +.form-control.is-invalid { + border-color: #CACFE7; + background-image: none !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .wizard-steps.vertical { + width: 90%; + +} + +:host ::ng-deep .vertical .large-filled-symbols { + width: 10; + +} + +@media screen and (max-width: 480px) { + .wizard-steps.vertical { + width: 80% !important; + } +} + +@media screen and (max-width: 480px) { + .vertical .large-filled-symbols { + width: 20% !important; + } +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li .step-indicator { + color: #999; + font-size: 19px; + text-align: center; + border: 5px solid #f4f5fa; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.editing:after { + color: #e6e6e6; + border: 3px solid #e6e6e6 !important; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.editing1:after { + color: #666EE8; + border: 5px solid #666EE8 !important; + background-color: #fff; + line-height: 40px; +} + + + +:host ::ng-deep.horizontal.large-filled-symbols ul.steps-indicator li.done .step-indicator { + color: #fff; + border: 5px solid #666EE8; + background-color: #666EE8; + line-height: 40px; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li:not(:last-child):before { + background-color: #e6e6e6; + content: ''; + position: absolute; + height: 5px !important; + width: calc(100% - 50px); + top: -25px; + left: calc(50% + 25px); +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.done:before { + background-color: #666EE8; + content: ''; + position: absolute; + height: 5px !important; + width: calc(100% - 50px); + top: -25px; + left: calc(50% + 25px); +} + +:host ::ng-deep :host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.done:not(:last-child):before { + background-color: #f4f5fa; + height: 10px; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.done:not(:last-child):before { + background-color: #666EE8; + height: 5px; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li .step-indicator { + color: #999; + font-size: 18px; + border: 5px solid #f4f5fa; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.editing:after { + color: #666EE8; + border: 5px solid #666EE8 !important; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.current .step-indicator { + color: #666EE8; + border: 5px solid #666EE8; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.done .step-indicator { + color: #fff; + border: 5px solid #666EE8; + background-color: #666EE8; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li:not(:last-child):before { + background-color: #f4f5fa; + height: 10px; + line-height: 10px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.navigable.done a:hover .step-indicator { + background-color: #666EE8; + color: #FFF; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li:not(:last-child):after { + background-color: #666EE8; + content: ""; + position: absolute; + left: -25px; + top: 50px; + height: 10px; + width: 1px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.current:after { + color: #666EE8; + border: 1px solid #f4f5fa; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .vertical.large-filled-symbols ul.steps-indicator li.editing:after { + color: #e6e6e6; + border: 1px solid #e6e6e6 !important; + background-color: #fff; + line-height: 40px; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.done.step:after { + background-color: #666EE8; + border-color: #666EE8; + color: #FFF; + line-height: 40px; +} + +:host ::ng-deep .horizontal ul.steps-indicator li .step-indicator { + position: relative; + margin: 0px; + text-align: center; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.navigable.done a:hover .step-indicator { + background-color: #666EE8; + color: #FFF; +} + +:host ::ng-deep .btn-light:not(:disabled):not(.disabled):active { + color: unset !important; + background-color: unset !important; + border-color: #d3d9df !important; +} + +:host ::ng-deep .btn-light:hover:not(.disabled):active { + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +:host ::ng-deep .btn-light { + color: unset !important; + background-color: unset !important; + border-color: unset !important; +} + +:host ::ng-deep .bg-primary { + background-color: #007bff !important; +} + +:host ::ng-deep .text-white { + color: #fff !important; +} + +:host ::ng-deep .custom-day { + text-align: center; + padding: .185rem .25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +:host ::ng-deep .custom-day:active { + color: #6d7183 !important; + background-color: #fff !important; + border-block-color: rgb(2, 117, 216) !important; + +} + +.bg-light { + background-color: #f8f9fa !important; +} + +:host ::ng-deep .hidden { + display: block !important; +} + +.ngb-dp-weekday { + color: #17a2b8; +} + +.ngb-dp-week-number, +.ngb-dp-weekday { + line-height: 2rem; + text-align: center; + font-style: italic; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +:host ::ng-deep .ngb-dp-header { + background-color: var(--light) !important; +} + +:host ::ng-deep .ngb-dp-weekdays { + background-color: var(--light); +} + +:host ::ng-deep .ngb-dp-month-name { + background-color: var(--light); +} + +.small { + font-size: 80%; + font-weight: 400; +} + +.ngb-dp-day { + cursor: pointer !important; +} + +.ngb-dp-month { + pointer-events: none; +} + +.btn-light:hover { + color: #212529 !important; + background-color: #e2e6ea !important; + border-color: #dae0e5 !important; +} + +.ngb-datepicker-month-view { + pointer-events: auto; +} + +.ngb-dp-header { + border-bottom: 0; + border-radius: .25rem .25rem 0 0; + padding-top: .25rem; +} + +.ngb-dp-day, +.ngb-dp-week-number, +.ngb-dp-weekday { + width: 2rem; + height: 2rem; +} + +.custom-day { + text-align: center; + padding: 0.185rem 0.25rem; + display: inline-block; + height: 2rem; + width: 2rem; +} + +.custom-day.focused { + background-color: #e6e6e6; +} + +.custom-day.range, +.custom-day:hover { + background-color: rgb(2, 117, 216); + color: white; +} + +.custom-day.faded { + background-color: rgba(2, 117, 216, 0.5); +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .horizontal.large-filled-symbols ul.steps-indicator li.current .step-indicator { + color: #666EE8; + border: 5px solid #666EE8; + background-color: #fff; + line-height: 40px; +} \ No newline at end of file diff --git a/src/app/content/forms/form-wizard/formwizard/formwizard.component.html b/src/app/content/forms/form-wizard/formwizard/formwizard.component.html new file mode 100644 index 0000000..24c4fb8 --- /dev/null +++ b/src/app/content/forms/form-wizard/formwizard/formwizard.component.html @@ -0,0 +1,1079 @@ +
+
+
+ +
+
+ +
+
+
+ + + Reactive form wizard with number tabs + + +
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + + Reactive form wizard with icon tabs + + +
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+ +
+
+ +
+
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Validation Example(With Validation)

+
+
+
+
+ + +
+
+
+
+ + + +
+ First Name is required
+
+
+
+ + + +
Email + is required
+
Email must + be a valid email address
+
+
+
+ + + +
phone + is required
+
+
+
+
+
+ + + +
+ Last Name is required
+
+
+
+ + + +
+ Email is required
+
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + +
+ Proposal Title is required
+
+
+
+ + + +
Email + is required
+
Email must + be a valid email address
+
+
+
+ + + +
+ Video URL + is required
+
+
+
+
+
+ + + +
+ Job Title is required
+
+
+
+ + + +
+ Description is required
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ + + +
+ Event Name is required
+
+
+
+ + + +
+ Event type is required
+
+
+
+ + + +
+ Event location is required
+
+
+
+
+
+ +
+ +
+
+ +
+
+
+
+
+ + + +
+ Event Status is required
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ + + +
+ Meeting Name is required
+
+
+
+ + + +
+ Location is required
+
+
+
+ + + +
+ Participant name is required
+
+
+
+
+
+ + + +
+ Decisions reached is required
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Reactive form wizard with vertical tabs

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/forms/form-wizard/formwizard/formwizard.component.spec.ts b/src/app/content/forms/form-wizard/formwizard/formwizard.component.spec.ts new file mode 100644 index 0000000..1d8d2da --- /dev/null +++ b/src/app/content/forms/form-wizard/formwizard/formwizard.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FormwizardComponent } from './formwizard.component'; + +describe('FormwizardComponent', () => { + let component: FormwizardComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FormwizardComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormwizardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/forms/form-wizard/formwizard/formwizard.component.ts b/src/app/content/forms/form-wizard/formwizard/formwizard.component.ts new file mode 100644 index 0000000..bf32946 --- /dev/null +++ b/src/app/content/forms/form-wizard/formwizard/formwizard.component.ts @@ -0,0 +1,239 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { FormControl, FormGroup, FormBuilder, Validators, NgForm } from '@angular/forms'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { NgbDateStruct, NgbTimeStruct, NgbDate } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'app-formwizard', + templateUrl: './formwizard.component.html', + styleUrls: ['./formwizard.component.css'] +}) +export class FormwizardComponent implements OnInit { + @BlockUI('numberTabs') blockUINumberTabs: NgBlockUI; + @BlockUI('iconTabs') blockUIIconTabs: NgBlockUI; + + options = { + minimize: true, + reload: true, + expand: true, + close: true + }; + d2: any; + d3: any; + d4: any; + d5: any; + model: NgbDateStruct; + popupModel; + numberTab: FormGroup; + iconTab: FormGroup; + verticalTab: FormGroup; + + stepOneForm: FormGroup; + stepTwoForm: FormGroup; + stepThreeForm: FormGroup; + stepFourForm: FormGroup; + + displayMonthsForStep1 = 1; + + displayMonthsForStep3 = 1; + navigation = 'select'; + showWeekNumbers = false; + outsideDays = 'visible'; + isStepFourReached = false; + isStepThreeReached = false; + isStepTwoReached = false; + isStepOneReached = false; + + + countries = ['Amsterdam', 'Berlin', 'Frankfurt']; + eventType = ['Banquet', 'Fund Raiser', 'Dinner Party', 'Wedding']; + eventLocation = ['Amsterdam', 'Berlin', 'Frankfurt']; + eventStatus = ['Planning', 'In Progress', 'Finished']; + requirements1 = [{ id: 1, name: 'Staffing' }, { id: 2, name: 'Catering' }]; + requirements2 = [{ id: 3, name: 'Staffing' }, { id: 4, name: 'Catering' }]; + requirements3 = [{ id: 5, name: 'Staffing' }, { id: 6, name: 'Catering' }]; + requirements4 = [{ id: 7, name: 'Staffing' }, { id: 8, name: 'Catering' }]; + agendaItems1 = [{ id: 1, name: '1st item', idName: 'item1' }, { id: 2, name: '2st item', idName: 'item2'}, + { id: 3, name: '3st item', idName: 'item3' }, { id: 4, name: '4st item', idName: 'item4' }, + { id: 5, name: '5st item', idName: 'item5' }]; + agendaItems2 = [{ id: 6, name: '1st item', idName: 'item6' }, { id: 7, name: '2st item', idName: 'item7'}, + { id: 8, name: '3st item', idName: 'item8' }, { id: 9, name: '4st item', idName: 'item9' }, + { id: 10, name: '5st item', idName: 'item10' }]; + agendaItems3 = [{ id: 11, name: '1st item', idName: 'item11' }, { id: 12, name: '2st item', idName: 'item12'}, + { id: 13, name: '3st item', idName: 'item13' }, { id: 14, name: '4st item', idName: 'item14' }, + { id: 15, name: '5st item', idName: 'item15' }]; + agendaItems4 = [{ id: 16, name: '1st item', idName: 'item16' }, { id: 17, name: '2st item', idName: 'item17'}, + { id: 18, name: '3st item', idName: 'item18' }, { id: 19, name: '4st item', idName: 'item19' }, + { id: 20, name: '5st item', idName: 'item20' }]; + + public breadcrumb: any; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Circle Style', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Form Wizard', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Form Wizard Circle Steps', + 'isLink': false + } + ] + }; + + this.numberTab = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + country: ['', [Validators.required]], + phone: ['', [Validators.required]], + birthDate1: ['', [Validators.required]], + proposalTitle: ['', Validators.required], + jobTitle: ['', Validators.required], + email2: ['', [Validators.required, Validators.email]], + description: ['', [Validators.required]], + videoURL: ['', [Validators.required]], + eventName: ['', Validators.required], + eventType: ['', Validators.required], + eventLocation: ['', Validators.required], + eventDate: ['', [Validators.required]], + eventStatus: ['', [Validators.required]], + requirementsArray: this.formBuilder.array(['', [Validators.required]]), + meetingName: ['', Validators.required], + location: ['', Validators.required], + participantName: ['', Validators.required], + decisionsReached: ['', Validators.required], + agendaItems: this.formBuilder.array(['', [Validators.required]]) + }); + this.iconTab = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + country: ['', [Validators.required]], + phone: ['', [Validators.required]], + birthDate2: ['', [Validators.required]], + proposalTitle: ['', Validators.required], + jobTitle: ['', Validators.required], + email2: ['', [Validators.required, Validators.email]], + description: ['', [Validators.required]], + videoURL: ['', [Validators.required]], + eventName: ['', Validators.required], + eventType: ['', Validators.required], + eventLocation: ['', Validators.required], + eventDate: ['', [Validators.required]], + eventStatus: ['', [Validators.required]], + requirementsArray: this.formBuilder.array(['', [Validators.required]]), + meetingName: ['', Validators.required], + location: ['', Validators.required], + participantName: ['', Validators.required], + decisionsReached: ['', Validators.required], + agendaItems: this.formBuilder.array(['', [Validators.required]]) + }); + + this.verticalTab = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + country: ['', [Validators.required]], + phone: ['', [Validators.required]], + birthDate4: ['', [Validators.required]], + proposalTitle: ['', Validators.required], + jobTitle: ['', Validators.required], + email2: ['', [Validators.required, Validators.email]], + description: ['', [Validators.required]], + videoURL: ['', [Validators.required]], + eventName: ['', Validators.required], + eventType: ['', Validators.required], + eventLocation: ['', Validators.required], + eventDate: ['', [Validators.required]], + eventStatus: ['', [Validators.required]], + requirementsArray: this.formBuilder.array(['', [Validators.required]]), + meetingName: ['', Validators.required], + location: ['', Validators.required], + participantName: ['', Validators.required], + decisionsReached: ['', Validators.required], + agendaItems: this.formBuilder.array(['', [Validators.required]]) + }); + + + this.stepOneForm = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + country: ['', [Validators.required]], + phone: ['', [Validators.required]], + birthDate3: [''] + }); + + this.stepTwoForm = this.formBuilder.group({ + proposalTitle: ['', Validators.required], + jobTitle: ['', Validators.required], + email2: ['', [Validators.required, Validators.email]], + description: ['', [Validators.required]], + videoURL: ['', [Validators.required]], + }); + + this.stepThreeForm = this.formBuilder.group({ + eventName: ['', Validators.required], + eventType: ['', Validators.required], + eventLocation: ['', Validators.required], + eventDate: [''], + eventStatus: ['', [Validators.required]], + requirementsArray: this.formBuilder.array(['', [Validators.required]]) + }); + + this.stepFourForm = this.formBuilder.group({ + meetingName: ['', Validators.required], + location: ['', Validators.required], + participantName: ['', Validators.required], + decisionsReached: ['', Validators.required], + agendaItems: this.formBuilder.array(['', [Validators.required]]) + }); + } + + public previousFourthStep() { + this.isStepFourReached = true; + } + get f() { + return this.stepOneForm.controls; + } + get i() { + return this.stepTwoForm.controls; + } + get j() { + return this.stepThreeForm.controls; + } + get k() { + return this.stepFourForm.controls; + } + submit() { + window.alert('Form submitted.'); + } + + reloadNumberTabs() { + this.blockUINumberTabs.start('Loading..'); + + setTimeout(() => { + this.blockUINumberTabs.stop(); + }, 2500); + } + + reloadIconTabs() { + this.blockUIIconTabs.start('Loading..'); + + setTimeout(() => { + this.blockUIIconTabs.stop(); + }, 2500); + } + +} diff --git a/src/app/content/full-pages/authentication/authentication.module.spec.ts b/src/app/content/full-pages/authentication/authentication.module.spec.ts new file mode 100644 index 0000000..acc8cde --- /dev/null +++ b/src/app/content/full-pages/authentication/authentication.module.spec.ts @@ -0,0 +1,14 @@ +import { AuthenticationModule } from './authentication.module'; + + +describe('PagesModule', () => { + let authenticationModule: AuthenticationModule; + + beforeEach(() => { + authenticationModule = new AuthenticationModule(); + }); + + it('should create an instance', () => { + expect(authenticationModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/authentication.module.ts b/src/app/content/full-pages/authentication/authentication.module.ts new file mode 100644 index 0000000..2fa9335 --- /dev/null +++ b/src/app/content/full-pages/authentication/authentication.module.ts @@ -0,0 +1,76 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { LoginSimpleComponent } from './login-simple/login-simple.component'; +import { RouterModule, Router } from '@angular/router'; +import { LoginWithBgComponent } from './login-with-bg/login-with-bg.component'; +import { LoginWithBgImageComponent } from './login-with-bg-image/login-with-bg-image.component'; +import { LoginWithNavbarComponent } from './login-with-navbar/login-with-navbar.component'; +import { LoginAdvancedComponent } from './login-advanced/login-advanced.component'; +import { RegisterSimpleComponent } from './register-simple/register-simple.component'; +import { RegisterWithBgComponent } from './register-with-bg/register-with-bg.component'; +import { RegisterWithBgImageComponent } from './register-with-bg-image/register-with-bg-image.component'; +import { RegisterWithNavbarComponent } from './register-with-navbar/register-with-navbar.component'; +import { RegisterAdvancedComponent } from './register-advanced/register-advanced.component'; +import { UnlockUserComponent } from './unlock-user/unlock-user.component'; +import { RecoverPasswordComponent } from './recover-password/recover-password.component'; + +@NgModule({ + imports: [ + CommonModule, + RouterModule.forChild([ + { + path: 'loginSimple', + component: LoginSimpleComponent + }, + { + path: 'loginWithBg', + component: LoginWithBgComponent + }, + { + path: 'loginWithBgImage', + component: LoginWithBgImageComponent + }, + { + path: 'loginWithNavbar', + component: LoginWithNavbarComponent + }, + { + path: 'loginAdvanced', + component: LoginAdvancedComponent + }, + { + path: 'registerSimple', + component: RegisterSimpleComponent + }, + { + path: 'registerWithBg', + component: RegisterWithBgComponent + }, + { + path: 'registerWithBgImage', + component: RegisterWithBgImageComponent + }, + { + path: 'registerWithNavbar', + component: RegisterWithNavbarComponent + }, + { + path: 'registerAdvanced', + component: RegisterAdvancedComponent + }, + { + path: 'unlockUser', + component: UnlockUserComponent + }, + { + path: 'recoverPassword', + component: RecoverPasswordComponent + }, + ]) + ], + declarations: [LoginSimpleComponent, LoginWithBgComponent, LoginWithBgImageComponent, LoginWithNavbarComponent, LoginAdvancedComponent, + RegisterSimpleComponent, RegisterWithBgComponent, RegisterWithBgImageComponent, RegisterWithNavbarComponent, + RegisterAdvancedComponent, UnlockUserComponent, RecoverPasswordComponent], + exports: [RouterModule] +}) +export class AuthenticationModule { } diff --git a/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.css b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.css new file mode 100644 index 0000000..b579a71 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} +:host ::ng-deep .navbar-flexbox-container { + top: -50px; + position: relative; +} \ No newline at end of file diff --git a/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.html b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.html new file mode 100644 index 0000000..03b45b3 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.html @@ -0,0 +1,66 @@ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.spec.ts b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.spec.ts new file mode 100644 index 0000000..0688bf5 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LoginAdvancedComponent } from './login-advanced.component'; + +describe('LoginAdvancedComponent', () => { + let component: LoginAdvancedComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginAdvancedComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginAdvancedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.ts b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.ts new file mode 100644 index 0000000..c185c7f --- /dev/null +++ b/src/app/content/full-pages/authentication/login-advanced/login-advanced.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login-advanced', + templateUrl: './login-advanced.component.html', + styleUrls: ['./login-advanced.component.css'] +}) +export class LoginAdvancedComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/login-simple/login-simple.component.css b/src/app/content/full-pages/authentication/login-simple/login-simple.component.css new file mode 100644 index 0000000..ef852b9 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-simple/login-simple.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .fixed-navbar { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/login-simple/login-simple.component.html b/src/app/content/full-pages/authentication/login-simple/login-simple.component.html new file mode 100644 index 0000000..a7ccf97 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-simple/login-simple.component.html @@ -0,0 +1,62 @@ +
+
+
+
+
+
+
+
+
+
+
+
branding logo
+
+
Login with + Modern
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + +
+
+ +
+ +
+
+
+ +
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/login-simple/login-simple.component.spec.ts b/src/app/content/full-pages/authentication/login-simple/login-simple.component.spec.ts new file mode 100644 index 0000000..9494606 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-simple/login-simple.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LoginSimpleComponent } from './login-simple.component'; + +describe('LoginSimpleComponent', () => { + let component: LoginSimpleComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginSimpleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginSimpleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/login-simple/login-simple.component.ts b/src/app/content/full-pages/authentication/login-simple/login-simple.component.ts new file mode 100644 index 0000000..3059505 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-simple/login-simple.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login-simple', + templateUrl: './login-simple.component.html', + styleUrls: ['./login-simple.component.css'] +}) +export class LoginSimpleComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.css b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.css new file mode 100644 index 0000000..d28375a --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} + +.content-wrapper { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.html b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.html new file mode 100644 index 0000000..81874da --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.html @@ -0,0 +1,76 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
Easily + Using
+
+
+
+ + + + +
+

OR Using + Account Details

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

New to + Modern + ?

+ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.spec.ts b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.spec.ts new file mode 100644 index 0000000..0b5b06b --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LoginWithBgImageComponent } from './login-with-bg-image.component'; + +describe('LoginWithBgImageComponent', () => { + let component: LoginWithBgImageComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginWithBgImageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginWithBgImageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.ts b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.ts new file mode 100644 index 0000000..805a9e7 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg-image/login-with-bg-image.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login-with-bg-image', + templateUrl: './login-with-bg-image.component.html', + styleUrls: ['./login-with-bg-image.component.css'] +}) +export class LoginWithBgImageComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.css b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.html b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.html new file mode 100644 index 0000000..6fce168 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.html @@ -0,0 +1,66 @@ +
+
+
+
+
+
+
+
+
+
+
+
branding logo +
+
+
Easily + Using
+
+
+ +

OR Using Account + Details

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

New to + Modern ?

+ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.spec.ts b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.spec.ts new file mode 100644 index 0000000..452d1bc --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LoginWithBgComponent } from './login-with-bg.component'; + +describe('LoginWithBgComponent', () => { + let component: LoginWithBgComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginWithBgComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginWithBgComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.ts b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.ts new file mode 100644 index 0000000..861cb78 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-bg/login-with-bg.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login-with-bg', + templateUrl: './login-with-bg.component.html', + styleUrls: ['./login-with-bg.component.css'] +}) +export class LoginWithBgComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.css b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.css new file mode 100644 index 0000000..1cefd5e --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} +:host ::ng-deep .navbar-flexbox-container { + top: -50px; + position: relative; +} diff --git a/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.html b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.html new file mode 100644 index 0000000..8484472 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.html @@ -0,0 +1,64 @@ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.spec.ts b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.spec.ts new file mode 100644 index 0000000..c61ef44 --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LoginWithNavbarComponent } from './login-with-navbar.component'; + +describe('LoginWithNavbarComponent', () => { + let component: LoginWithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginWithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginWithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.ts b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.ts new file mode 100644 index 0000000..9a65f3c --- /dev/null +++ b/src/app/content/full-pages/authentication/login-with-navbar/login-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login-with-navbar', + templateUrl: './login-with-navbar.component.html', + styleUrls: ['./login-with-navbar.component.css'] +}) +export class LoginWithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/recover-password/recover-password.component.css b/src/app/content/full-pages/authentication/recover-password/recover-password.component.css new file mode 100644 index 0000000..ed222f1 --- /dev/null +++ b/src/app/content/full-pages/authentication/recover-password/recover-password.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/recover-password/recover-password.component.html b/src/app/content/full-pages/authentication/recover-password/recover-password.component.html new file mode 100644 index 0000000..9aaa806 --- /dev/null +++ b/src/app/content/full-pages/authentication/recover-password/recover-password.component.html @@ -0,0 +1,45 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
We will send you + a link to reset password.
+
+
+
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/recover-password/recover-password.component.spec.ts b/src/app/content/full-pages/authentication/recover-password/recover-password.component.spec.ts new file mode 100644 index 0000000..5148880 --- /dev/null +++ b/src/app/content/full-pages/authentication/recover-password/recover-password.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RecoverPasswordComponent } from './recover-password.component'; + +describe('RecoverPasswordComponent', () => { + let component: RecoverPasswordComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RecoverPasswordComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RecoverPasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/recover-password/recover-password.component.ts b/src/app/content/full-pages/authentication/recover-password/recover-password.component.ts new file mode 100644 index 0000000..d010fd7 --- /dev/null +++ b/src/app/content/full-pages/authentication/recover-password/recover-password.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-recover-password', + templateUrl: './recover-password.component.html', + styleUrls: ['./recover-password.component.css'] +}) +export class RecoverPasswordComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.css b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.css new file mode 100644 index 0000000..da7b2ec --- /dev/null +++ b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} + +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.html b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.html new file mode 100644 index 0000000..063a21f --- /dev/null +++ b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.html @@ -0,0 +1,116 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
Please Sign + Up
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+

By clicking Register, you agree to the Terms and Conditions set out by this + site, including our Cookie + Use.

+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.spec.ts b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.spec.ts new file mode 100644 index 0000000..065add2 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RegisterAdvancedComponent } from './register-advanced.component'; + +describe('RegisterAdvancedComponent', () => { + let component: RegisterAdvancedComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterAdvancedComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterAdvancedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.ts b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.ts new file mode 100644 index 0000000..d30edec --- /dev/null +++ b/src/app/content/full-pages/authentication/register-advanced/register-advanced.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register-advanced', + templateUrl: './register-advanced.component.html', + styleUrls: ['./register-advanced.component.css'] +}) +export class RegisterAdvancedComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/register-simple/register-simple.component.css b/src/app/content/full-pages/authentication/register-simple/register-simple.component.css new file mode 100644 index 0000000..ed222f1 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-simple/register-simple.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/register-simple/register-simple.component.html b/src/app/content/full-pages/authentication/register-simple/register-simple.component.html new file mode 100644 index 0000000..07408cb --- /dev/null +++ b/src/app/content/full-pages/authentication/register-simple/register-simple.component.html @@ -0,0 +1,55 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
Create + Account
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

Already have an account ? Login +

+
+
+
+
+
+
+
+
diff --git a/src/app/content/full-pages/authentication/register-simple/register-simple.component.spec.ts b/src/app/content/full-pages/authentication/register-simple/register-simple.component.spec.ts new file mode 100644 index 0000000..8d08710 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-simple/register-simple.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RegisterSimpleComponent } from './register-simple.component'; + +describe('RegisterSimpleComponent', () => { + let component: RegisterSimpleComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterSimpleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterSimpleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/register-simple/register-simple.component.ts b/src/app/content/full-pages/authentication/register-simple/register-simple.component.ts new file mode 100644 index 0000000..e2112e9 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-simple/register-simple.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register-simple', + templateUrl: './register-simple.component.html', + styleUrls: ['./register-simple.component.css'] +}) +export class RegisterSimpleComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.css b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.css new file mode 100644 index 0000000..da7b2ec --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} + +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.html b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.html new file mode 100644 index 0000000..66f7bb0 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.html @@ -0,0 +1,80 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
Easily + Using
+
+
+
+ + + + +
+

OR Using + Email

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.spec.ts b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.spec.ts new file mode 100644 index 0000000..c2f82c7 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RegisterWithBgImageComponent } from './register-with-bg-image.component'; + +describe('RegisterWithBgImageComponent', () => { + let component: RegisterWithBgImageComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterWithBgImageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterWithBgImageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.ts b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.ts new file mode 100644 index 0000000..68624e5 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg-image/register-with-bg-image.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register-with-bg-image', + templateUrl: './register-with-bg-image.component.html', + styleUrls: ['./register-with-bg-image.component.css'] +}) +export class RegisterWithBgImageComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.css b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.css new file mode 100644 index 0000000..da7b2ec --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.css @@ -0,0 +1,7 @@ +html body { + height: fit-content !important; +} + +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.html b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.html new file mode 100644 index 0000000..f7075e7 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.html @@ -0,0 +1,69 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
Easily + Using
+
+
+ +

OR Using + Email

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+ +
+
+ +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.spec.ts b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.spec.ts new file mode 100644 index 0000000..edd07fe --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RegisterWithBgComponent } from './register-with-bg.component'; + +describe('RegisterWithBgComponent', () => { + let component: RegisterWithBgComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterWithBgComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterWithBgComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.ts b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.ts new file mode 100644 index 0000000..8d1f0d0 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-bg/register-with-bg.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register-with-bg', + templateUrl: './register-with-bg.component.html', + styleUrls: ['./register-with-bg.component.css'] +}) +export class RegisterWithBgComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.css b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.css new file mode 100644 index 0000000..4c7eee1 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.css @@ -0,0 +1,10 @@ +html body { + height: fit-content !important; +} + +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} +:host ::ng-deep .content-wrapper { + padding-top: 0px !important; +} \ No newline at end of file diff --git a/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.html b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.html new file mode 100644 index 0000000..bd430ac --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.html @@ -0,0 +1,67 @@ +
+
+
+
+
+ + +
+
+
diff --git a/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.spec.ts b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.spec.ts new file mode 100644 index 0000000..504b737 --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { RegisterWithNavbarComponent } from './register-with-navbar.component'; + +describe('RegisterWithNavbarComponent', () => { + let component: RegisterWithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterWithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterWithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.ts b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.ts new file mode 100644 index 0000000..cba739a --- /dev/null +++ b/src/app/content/full-pages/authentication/register-with-navbar/register-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register-with-navbar', + templateUrl: './register-with-navbar.component.html', + styleUrls: ['./register-with-navbar.component.css'] +}) +export class RegisterWithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.css b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.css new file mode 100644 index 0000000..ed222f1 --- /dev/null +++ b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .top_space { + padding-top: 0rem !important; +} diff --git a/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.html b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.html new file mode 100644 index 0000000..161608a --- /dev/null +++ b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.html @@ -0,0 +1,55 @@ +
+
+
+
+
+
+
+
+
+
+ unlock-user +
John Doe
+
+ +

Unlock your + account

+
+
+
+
+ +
+ +
+
+
+
+
+ + +
+
+ +
+ + Unlock + + Logout +
+
+
+
+
+
+
+
+
+
diff --git a/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.spec.ts b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.spec.ts new file mode 100644 index 0000000..a0a490d --- /dev/null +++ b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { UnlockUserComponent } from './unlock-user.component'; + +describe('UnlockUserComponent', () => { + let component: UnlockUserComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ UnlockUserComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UnlockUserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.ts b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.ts new file mode 100644 index 0000000..2705576 --- /dev/null +++ b/src/app/content/full-pages/authentication/unlock-user/unlock-user.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-unlock-user', + templateUrl: './unlock-user.component.html', + styleUrls: ['./unlock-user.component.css'] +}) +export class UnlockUserComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error.module.ts b/src/app/content/full-pages/error/error.module.ts new file mode 100644 index 0000000..7e717d6 --- /dev/null +++ b/src/app/content/full-pages/error/error.module.ts @@ -0,0 +1,66 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Error400Component } from './error400/error400.component'; +import { Error400WithNavbarComponent } from './error400-with-navbar/error400-with-navbar.component'; +import { Error401Component } from './error401/error401.component'; +import { Error401WithNavbarComponent } from './error401-with-navbar/error401-with-navbar.component'; +import { Error403Component } from './error403/error403.component'; +import { Error403WithNavbarComponent } from './error403-with-navbar/error403-with-navbar.component'; +import { Error404Component } from './error404/error404.component'; +import { Error404WithNavbarComponent } from './error404-with-navbar/error404-with-navbar.component'; +import { Error500Component } from './error500/error500.component'; +import { Error500WithNavbarComponent } from './error500-with-navbar/error500-with-navbar.component'; +import { RouterModule } from '@angular/router'; + +@NgModule({ + imports: [ + CommonModule, + RouterModule.forChild([ + { + path: 'error400', + component: Error400Component + }, + { + path: 'error400WithNavbar', + component: Error400WithNavbarComponent + }, + { + path: 'error401', + component: Error401Component + }, + { + path: 'error401WithNavbar', + component: Error401WithNavbarComponent + }, + { + path: 'error403', + component: Error403Component + }, + { + path: 'error403WithNavbar', + component: Error403WithNavbarComponent + }, + { + path: 'error404', + component: Error404Component + }, + { + path: 'error404WithNavbar', + component: Error404WithNavbarComponent + }, + { + path: 'error500', + component: Error500Component + }, + { + path: 'error500WithNavbar', + component: Error500WithNavbarComponent + }, + ]) + ], + declarations: [Error400Component, Error400WithNavbarComponent, Error401Component, Error401WithNavbarComponent, + Error403Component, Error403WithNavbarComponent, Error404Component, Error404WithNavbarComponent, Error500Component, + Error500WithNavbarComponent], + exports: [RouterModule] +}) +export class ErrorModule { } diff --git a/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.css b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.html b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.html new file mode 100644 index 0000000..e359cb5 --- /dev/null +++ b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.html @@ -0,0 +1,49 @@ +
+
+
+
+
+
+
+
+
+

400

+

Bad Request

+
+
+
+
+
+ + + + +
+
+ +
+ +
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.spec.ts b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.spec.ts new file mode 100644 index 0000000..6a37312 --- /dev/null +++ b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error400WithNavbarComponent } from './error400-with-navbar.component'; + +describe('Error400WithNavbarComponent', () => { + let component: Error400WithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error400WithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error400WithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.ts b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.ts new file mode 100644 index 0000000..5698236 --- /dev/null +++ b/src/app/content/full-pages/error/error400-with-navbar/error400-with-navbar.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error400-with-navbar', + templateUrl: './error400-with-navbar.component.html', + styleUrls: ['./error400-with-navbar.component.css'] +}) +export class Error400WithNavbarComponent { + + constructor() { } +} diff --git a/src/app/content/full-pages/error/error400/error400.component.css b/src/app/content/full-pages/error/error400/error400.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/error/error400/error400.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/error/error400/error400.component.html b/src/app/content/full-pages/error/error400/error400.component.html new file mode 100644 index 0000000..bc04575 --- /dev/null +++ b/src/app/content/full-pages/error/error400/error400.component.html @@ -0,0 +1,58 @@ +
+
+
+
+
+
+
+
+
+

400

+

Bad Request

+
+
+
+
+ + + + +
+
+
+
+ + Home +
+
+ Search +
+
+
+ +
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error400/error400.component.spec.ts b/src/app/content/full-pages/error/error400/error400.component.spec.ts new file mode 100644 index 0000000..491d6eb --- /dev/null +++ b/src/app/content/full-pages/error/error400/error400.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error400Component } from './error400.component'; + +describe('Error400Component', () => { + let component: Error400Component; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error400Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error400Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error400/error400.component.ts b/src/app/content/full-pages/error/error400/error400.component.ts new file mode 100644 index 0000000..7a29682 --- /dev/null +++ b/src/app/content/full-pages/error/error400/error400.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error400', + templateUrl: './error400.component.html', + styleUrls: ['./error400.component.css'] +}) +export class Error400Component { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.css b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.css new file mode 100644 index 0000000..a28cc3a --- /dev/null +++ b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.css @@ -0,0 +1,3 @@ +html body { + height: max-content !important; +} diff --git a/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.html b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.html new file mode 100644 index 0000000..e32fe99 --- /dev/null +++ b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.html @@ -0,0 +1,49 @@ +
+
+
+
+
+
+
+
+
+

401

+

Unauthorized

+
+
+
+
+
+ + + + +
+
+ +
+ +
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.spec.ts b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.spec.ts new file mode 100644 index 0000000..1a37293 --- /dev/null +++ b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error401WithNavbarComponent } from './error401-with-navbar.component'; + +describe('Error401WithNavbarComponent', () => { + let component: Error401WithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error401WithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error401WithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.ts b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.ts new file mode 100644 index 0000000..f83cfb1 --- /dev/null +++ b/src/app/content/full-pages/error/error401-with-navbar/error401-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error401-with-navbar', + templateUrl: './error401-with-navbar.component.html', + styleUrls: ['./error401-with-navbar.component.css'] +}) +export class Error401WithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error401/error401.component.css b/src/app/content/full-pages/error/error401/error401.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/error/error401/error401.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/error/error401/error401.component.html b/src/app/content/full-pages/error/error401/error401.component.html new file mode 100644 index 0000000..a03e923 --- /dev/null +++ b/src/app/content/full-pages/error/error401/error401.component.html @@ -0,0 +1,58 @@ +
+
+
+
+
+
+
+
+
+

401

+

Error 401 - Unauthorized Access.

+
+
+
+
+ + + + +
+
+
+
+ + Home +
+
+ Search +
+
+
+ +
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error401/error401.component.spec.ts b/src/app/content/full-pages/error/error401/error401.component.spec.ts new file mode 100644 index 0000000..3079f8f --- /dev/null +++ b/src/app/content/full-pages/error/error401/error401.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error401Component } from './error401.component'; + +describe('Error401Component', () => { + let component: Error401Component; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error401Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error401Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error401/error401.component.ts b/src/app/content/full-pages/error/error401/error401.component.ts new file mode 100644 index 0000000..1e7b1ea --- /dev/null +++ b/src/app/content/full-pages/error/error401/error401.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error401', + templateUrl: './error401.component.html', + styleUrls: ['./error401.component.css'] +}) +export class Error401Component { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.css b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.html b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.html new file mode 100644 index 0000000..e716313 --- /dev/null +++ b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.html @@ -0,0 +1,49 @@ +
+
+
+
+
+
+
+
+
+

403

+

Access Denied/Forbidden !

+
+
+
+
+
+ + + + +
+
+ +
+ +
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.spec.ts b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.spec.ts new file mode 100644 index 0000000..f79a18b --- /dev/null +++ b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error403WithNavbarComponent } from './error403-with-navbar.component'; + +describe('Error403WithNavbarComponent', () => { + let component: Error403WithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error403WithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error403WithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.ts b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.ts new file mode 100644 index 0000000..fee5f9d --- /dev/null +++ b/src/app/content/full-pages/error/error403-with-navbar/error403-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error403-with-navbar', + templateUrl: './error403-with-navbar.component.html', + styleUrls: ['./error403-with-navbar.component.css'] +}) +export class Error403WithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error403/error403.component.css b/src/app/content/full-pages/error/error403/error403.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/error/error403/error403.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/error/error403/error403.component.html b/src/app/content/full-pages/error/error403/error403.component.html new file mode 100644 index 0000000..c9796f2 --- /dev/null +++ b/src/app/content/full-pages/error/error403/error403.component.html @@ -0,0 +1,60 @@ + +
+
+
+
+
+
+
+
+
+

403

+

Access Denied/Forbidden !

+
+
+
+
+ + + + +
+
+
+
+ + Home +
+
+ Search +
+
+
+ +
+
+
+ +
+
+
+ diff --git a/src/app/content/full-pages/error/error403/error403.component.spec.ts b/src/app/content/full-pages/error/error403/error403.component.spec.ts new file mode 100644 index 0000000..7a5e807 --- /dev/null +++ b/src/app/content/full-pages/error/error403/error403.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error403Component } from './error403.component'; + +describe('Error403Component', () => { + let component: Error403Component; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error403Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error403Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error403/error403.component.ts b/src/app/content/full-pages/error/error403/error403.component.ts new file mode 100644 index 0000000..c4cb328 --- /dev/null +++ b/src/app/content/full-pages/error/error403/error403.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error403', + templateUrl: './error403.component.html', + styleUrls: ['./error403.component.css'] +}) +export class Error403Component { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.css b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.css new file mode 100644 index 0000000..4aa6b41 --- /dev/null +++ b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.css @@ -0,0 +1,4 @@ +html body { + height: max-content !important; +} + diff --git a/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.html b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.html new file mode 100644 index 0000000..d05c253 --- /dev/null +++ b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.html @@ -0,0 +1,48 @@ +
+
+
+
+
+
+
+
+
+

404

+

Page Not Found !

+
+
+
+
+
+ + + + +
+
+ +
+ +
+
+
+
+
diff --git a/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.spec.ts b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.spec.ts new file mode 100644 index 0000000..a9bd41b --- /dev/null +++ b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error404WithNavbarComponent } from './error404-with-navbar.component'; + +describe('Error404WithNavbarComponent', () => { + let component: Error404WithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error404WithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error404WithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.ts b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.ts new file mode 100644 index 0000000..a2433d3 --- /dev/null +++ b/src/app/content/full-pages/error/error404-with-navbar/error404-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error404-with-navbar', + templateUrl: './error404-with-navbar.component.html', + styleUrls: ['./error404-with-navbar.component.css'] +}) +export class Error404WithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error404/error404.component.css b/src/app/content/full-pages/error/error404/error404.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/error/error404/error404.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/error/error404/error404.component.html b/src/app/content/full-pages/error/error404/error404.component.html new file mode 100644 index 0000000..5b308bc --- /dev/null +++ b/src/app/content/full-pages/error/error404/error404.component.html @@ -0,0 +1,58 @@ +
+
+
+
+
+
+
+
+
+

404

+

Page Not Found !

+
+
+
+
+ + + + +
+
+
+
+ + Home +
+
+ Search +
+
+
+ +
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error404/error404.component.spec.ts b/src/app/content/full-pages/error/error404/error404.component.spec.ts new file mode 100644 index 0000000..8a99bfb --- /dev/null +++ b/src/app/content/full-pages/error/error404/error404.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error404Component } from './error404.component'; + +describe('Error404Component', () => { + let component: Error404Component; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error404Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error404Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error404/error404.component.ts b/src/app/content/full-pages/error/error404/error404.component.ts new file mode 100644 index 0000000..49732a7 --- /dev/null +++ b/src/app/content/full-pages/error/error404/error404.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error404', + templateUrl: './error404.component.html', + styleUrls: ['./error404.component.css'] +}) +export class Error404Component { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.css b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.css new file mode 100644 index 0000000..a28cc3a --- /dev/null +++ b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.css @@ -0,0 +1,3 @@ +html body { + height: max-content !important; +} diff --git a/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.html b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.html new file mode 100644 index 0000000..1caf0aa --- /dev/null +++ b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.html @@ -0,0 +1,49 @@ +
+
+
+
+
+
+
+
+
+

500

+

Internal Server Error

+
+
+
+
+
+ + + + +
+
+ +
+ +
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.spec.ts b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.spec.ts new file mode 100644 index 0000000..b18ec8a --- /dev/null +++ b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error500WithNavbarComponent } from './error500-with-navbar.component'; + +describe('Error500WithNavbarComponent', () => { + let component: Error500WithNavbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error500WithNavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error500WithNavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.ts b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.ts new file mode 100644 index 0000000..5cc9a70 --- /dev/null +++ b/src/app/content/full-pages/error/error500-with-navbar/error500-with-navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error500-with-navbar', + templateUrl: './error500-with-navbar.component.html', + styleUrls: ['./error500-with-navbar.component.css'] +}) +export class Error500WithNavbarComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/error/error500/error500.component.css b/src/app/content/full-pages/error/error500/error500.component.css new file mode 100644 index 0000000..7319464 --- /dev/null +++ b/src/app/content/full-pages/error/error500/error500.component.css @@ -0,0 +1,3 @@ +.content-wrapper { + padding: 0rem !important; +} diff --git a/src/app/content/full-pages/error/error500/error500.component.html b/src/app/content/full-pages/error/error500/error500.component.html new file mode 100644 index 0000000..2869bd4 --- /dev/null +++ b/src/app/content/full-pages/error/error500/error500.component.html @@ -0,0 +1,58 @@ +
+
+
+
+
+
+
+
+
+

500

+

Internal Server Error

+
+
+
+
+ + + + +
+
+
+
+ + Home +
+
+ Search +
+
+
+ +
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/error/error500/error500.component.spec.ts b/src/app/content/full-pages/error/error500/error500.component.spec.ts new file mode 100644 index 0000000..f4dd310 --- /dev/null +++ b/src/app/content/full-pages/error/error500/error500.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Error500Component } from './error500.component'; + +describe('Error500Component', () => { + let component: Error500Component; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Error500Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Error500Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/error/error500/error500.component.ts b/src/app/content/full-pages/error/error500/error500.component.ts new file mode 100644 index 0000000..418f56d --- /dev/null +++ b/src/app/content/full-pages/error/error500/error500.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error500', + templateUrl: './error500.component.html', + styleUrls: ['./error500.component.css'] +}) +export class Error500Component { + + constructor() { } + +} diff --git a/src/app/content/full-pages/full-pages.module.ts b/src/app/content/full-pages/full-pages.module.ts new file mode 100644 index 0000000..55a8ebf --- /dev/null +++ b/src/app/content/full-pages/full-pages.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FullPagesRoutingModule } from './full-pages.routing.module'; +import { ErrorModule } from './error/error.module'; +import { AuthenticationModule } from './authentication/authentication.module'; +import { OthersModule } from './others/others.module'; +import { RouterModule } from '@angular/router'; + + +@NgModule({ + declarations: [], + imports: [ + CommonModule, + FullPagesRoutingModule, + ErrorModule, + AuthenticationModule, + OthersModule, + ], + exports: [RouterModule], +}) +export class FullPagesModule { } diff --git a/src/app/content/full-pages/full-pages.routing.module.ts b/src/app/content/full-pages/full-pages.routing.module.ts new file mode 100644 index 0000000..676a350 --- /dev/null +++ b/src/app/content/full-pages/full-pages.routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = [ + { + path: '', + children: [] + } +]; + +@NgModule({ + imports: [ + RouterModule.forRoot( + routes, + { enableTracing: true } // <-- debugging purposes only + )] +}) +export class FullPagesRoutingModule { } diff --git a/src/app/content/full-pages/others/bg-image/bg-image.component.css b/src/app/content/full-pages/others/bg-image/bg-image.component.css new file mode 100644 index 0000000..70cc7e6 --- /dev/null +++ b/src/app/content/full-pages/others/bg-image/bg-image.component.css @@ -0,0 +1,48 @@ +html body { + height: max-content !important; +} + +:host ::ng-deep .fixed-navbar { + padding-top: 0rem !important; +} + +:host ::ng-deep .countdown { + color: white !important; + font-size: 3rem !important; + display: block !important; +} + +:host ::ng-deep .measurements-text { + font-size: 1.5rem !important; +} + +:host ::ng-deep .countdown .measurements { + padding: 1.5rem !important; + float: left; + border-radius: 0.5rem; +} + +:host ::ng-deep .count-down-timer { + text-align: center; + max-width: 400px; + margin: 20px auto; + color: #fff; + border-radius: 6px; + padding: 10px; + font-family: sans-serif; +} + +:host ::ng-deep .count-down-timer .wrapper .description { + display: grid; + grid-template-columns: repeat(5, calc(25% - 5px)); + grid-column-gap: 10px; + font-size: 1.5rem; + +} + +:host ::ng-deep .count-down-timer .wrapper .times { + display: grid; + grid-template-columns: repeat(5, calc(25% - 5px)); + grid-column-gap: 10px; + font-size: 3.0rem; +} \ No newline at end of file diff --git a/src/app/content/full-pages/others/bg-image/bg-image.component.html b/src/app/content/full-pages/others/bg-image/bg-image.component.html new file mode 100644 index 0000000..e890579 --- /dev/null +++ b/src/app/content/full-pages/others/bg-image/bg-image.component.html @@ -0,0 +1,54 @@ +
+
+
+
+
+ +
+
+
+
+
+
+
WE ARE LAUNCHING SOON.
+ bg-img +
+

Countdown to {{currentTime}}

+
+
+

+

+

+

+
+
+

Days

+

Hours

+

Minutes

+

Seconds

+
+
+
+
+

Our website is under construction.

+
+
+ +
+
+
+
+
+
+
+ + +
+
+
\ No newline at end of file diff --git a/src/app/content/full-pages/others/bg-image/bg-image.component.spec.ts b/src/app/content/full-pages/others/bg-image/bg-image.component.spec.ts new file mode 100644 index 0000000..506d9eb --- /dev/null +++ b/src/app/content/full-pages/others/bg-image/bg-image.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BgImageComponent } from './bg-image.component'; + +describe('BgImageComponent', () => { + let component: BgImageComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BgImageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BgImageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/others/bg-image/bg-image.component.ts b/src/app/content/full-pages/others/bg-image/bg-image.component.ts new file mode 100644 index 0000000..1055dcf --- /dev/null +++ b/src/app/content/full-pages/others/bg-image/bg-image.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit, AfterViewInit, ElementRef, ViewChild } from '@angular/core'; + +@Component({ + selector: 'app-bg-image', + templateUrl: './bg-image.component.html', + styleUrls: ['./bg-image.component.css'] +}) +export class BgImageComponent implements OnInit, AfterViewInit{ + + date: any; + now: any; + targetDate: any = new Date(2023, 5, 11); + targetTime: any = this.targetDate.getTime(); + difference: number; + differenceweek: number; + months: Array = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]; + currentTime: any = `${ + this.months[this.targetDate.getMonth()] + } ${this.targetDate.getDate()}, ${this.targetDate.getFullYear()}`; + + @ViewChild('weeks', { static: true }) weeks: ElementRef; + @ViewChild('days', { static: true }) days: ElementRef; + @ViewChild('hours', { static: true }) hours: ElementRef; + @ViewChild('minutes', { static: true }) minutes: ElementRef; + @ViewChild('seconds', { static: true }) seconds: ElementRef; + + ngOnInit() {} + + ngAfterViewInit() { + setInterval(() => { + this.tickTock(); + this.difference = this.targetTime - this.now; + this.difference = this.difference / (1000 * 60 * 60 * 24); + + !isNaN(this.days.nativeElement.innerText) + ? (this.days.nativeElement.innerText = Math.floor(this.difference)) + : (this.days.nativeElement.innerHTML = ``); + }, 1000); + } + tickTock() { + this.date = new Date(); + this.now = this.date.getTime(); + this.days.nativeElement.innerText = Math.floor(this.difference); + this.hours.nativeElement.innerText = 23 - this.date.getHours(); + this.minutes.nativeElement.innerText = 60 - this.date.getMinutes(); + this.seconds.nativeElement.innerText = 60 - this.date.getSeconds(); + } + +} + diff --git a/src/app/content/full-pages/others/bg-video/bg-video.component.css b/src/app/content/full-pages/others/bg-video/bg-video.component.css new file mode 100644 index 0000000..63ecb09 --- /dev/null +++ b/src/app/content/full-pages/others/bg-video/bg-video.component.css @@ -0,0 +1,23 @@ +html body { + height: max-content !important; +} + +:host ::ng-deep .fixed-navbar { + padding-top: 0rem !important; +} + +:host ::ng-deep .countdown { + color: white !important; + font-size: 3rem !important; + display: block !important; +} + +:host ::ng-deep .measurements-text { + font-size: 1.5rem !important; +} + +:host ::ng-deep .countdown .measurements { + padding: 1.5rem !important; + float: left; + border-radius: 0.5rem; +} diff --git a/src/app/content/full-pages/others/bg-video/bg-video.component.html b/src/app/content/full-pages/others/bg-video/bg-video.component.html new file mode 100644 index 0000000..c37cf34 --- /dev/null +++ b/src/app/content/full-pages/others/bg-video/bg-video.component.html @@ -0,0 +1,37 @@ +
+
+
+
+
+ +
+
+
+
+
+
WE ARE LAUNCHING SOON.
+ bg-img + +
+

Our website is under construction.

+
+
+ +
+
+
+
+
+
+ + +
+
+
diff --git a/src/app/content/full-pages/others/bg-video/bg-video.component.spec.ts b/src/app/content/full-pages/others/bg-video/bg-video.component.spec.ts new file mode 100644 index 0000000..a52aa52 --- /dev/null +++ b/src/app/content/full-pages/others/bg-video/bg-video.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BgVideoComponent } from './bg-video.component'; + +describe('BgVideoComponent', () => { + let component: BgVideoComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BgVideoComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BgVideoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/others/bg-video/bg-video.component.ts b/src/app/content/full-pages/others/bg-video/bg-video.component.ts new file mode 100644 index 0000000..2d826a4 --- /dev/null +++ b/src/app/content/full-pages/others/bg-video/bg-video.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bg-video', + templateUrl: './bg-video.component.html', + styleUrls: ['./bg-video.component.css'] +}) +export class BgVideoComponent { + + text: any = { + Weeks: 'Weeks', + Days: 'Days', + Hours: 'Hours', + Minutes: 'Minutes', + Seconds: 'Seconds', + }; + + constructor() { } + +} diff --git a/src/app/content/full-pages/others/flat/flat.component.css b/src/app/content/full-pages/others/flat/flat.component.css new file mode 100644 index 0000000..70cc7e6 --- /dev/null +++ b/src/app/content/full-pages/others/flat/flat.component.css @@ -0,0 +1,48 @@ +html body { + height: max-content !important; +} + +:host ::ng-deep .fixed-navbar { + padding-top: 0rem !important; +} + +:host ::ng-deep .countdown { + color: white !important; + font-size: 3rem !important; + display: block !important; +} + +:host ::ng-deep .measurements-text { + font-size: 1.5rem !important; +} + +:host ::ng-deep .countdown .measurements { + padding: 1.5rem !important; + float: left; + border-radius: 0.5rem; +} + +:host ::ng-deep .count-down-timer { + text-align: center; + max-width: 400px; + margin: 20px auto; + color: #fff; + border-radius: 6px; + padding: 10px; + font-family: sans-serif; +} + +:host ::ng-deep .count-down-timer .wrapper .description { + display: grid; + grid-template-columns: repeat(5, calc(25% - 5px)); + grid-column-gap: 10px; + font-size: 1.5rem; + +} + +:host ::ng-deep .count-down-timer .wrapper .times { + display: grid; + grid-template-columns: repeat(5, calc(25% - 5px)); + grid-column-gap: 10px; + font-size: 3.0rem; +} \ No newline at end of file diff --git a/src/app/content/full-pages/others/flat/flat.component.html b/src/app/content/full-pages/others/flat/flat.component.html new file mode 100644 index 0000000..d27c568 --- /dev/null +++ b/src/app/content/full-pages/others/flat/flat.component.html @@ -0,0 +1,53 @@ +
+
+
+
+
+ +
+
+
+
+
+
+
WE ARE LAUNCHING SOON.
+ bg-img +
+

Countdown to {{currentTime}}

+
+
+

+

+

+

+
+
+

Days

+

Hours

+

Minutes

+

Seconds

+
+
+
+
+

Our website is under construction.

+
+
+ +
+
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/content/full-pages/others/flat/flat.component.spec.ts b/src/app/content/full-pages/others/flat/flat.component.spec.ts new file mode 100644 index 0000000..f215d0b --- /dev/null +++ b/src/app/content/full-pages/others/flat/flat.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FlatComponent } from './flat.component'; + +describe('FlatComponent', () => { + let component: FlatComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FlatComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FlatComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/others/flat/flat.component.ts b/src/app/content/full-pages/others/flat/flat.component.ts new file mode 100644 index 0000000..3759f2b --- /dev/null +++ b/src/app/content/full-pages/others/flat/flat.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit, AfterViewInit, ElementRef, ViewChild } from '@angular/core'; + +@Component({ + selector: 'app-flat', + templateUrl: './flat.component.html', + styleUrls: ['./flat.component.css'] +}) +export class FlatComponent implements OnInit, AfterViewInit { + + date: any; + now: any; + targetDate: any = new Date(2023, 5, 11); + targetTime: any = this.targetDate.getTime(); + difference: number; + differenceweek: number; + months: Array = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]; + currentTime: any = `${ + this.months[this.targetDate.getMonth()] + } ${this.targetDate.getDate()}, ${this.targetDate.getFullYear()}`; + + @ViewChild('weeks', { static: true }) weeks: ElementRef; + @ViewChild('days', { static: true }) days: ElementRef; + @ViewChild('hours', { static: true }) hours: ElementRef; + @ViewChild('minutes', { static: true }) minutes: ElementRef; + @ViewChild('seconds', { static: true }) seconds: ElementRef; + + ngOnInit() {} + + ngAfterViewInit() { + setInterval(() => { + this.tickTock(); + this.difference = this.targetTime - this.now; + this.difference = this.difference / (1000 * 60 * 60 * 24); + + !isNaN(this.days.nativeElement.innerText) + ? (this.days.nativeElement.innerText = Math.floor(this.difference)) + : (this.days.nativeElement.innerHTML = ``); + }, 1000); + } + tickTock() { + this.date = new Date(); + this.now = this.date.getTime(); + this.days.nativeElement.innerText = Math.floor(this.difference); + this.hours.nativeElement.innerText = 23 - this.date.getHours(); + this.minutes.nativeElement.innerText = 60 - this.date.getMinutes(); + this.seconds.nativeElement.innerText = 60 - this.date.getSeconds(); + } + +} diff --git a/src/app/content/full-pages/others/maintenance/maintenance.component.css b/src/app/content/full-pages/others/maintenance/maintenance.component.css new file mode 100644 index 0000000..a28cc3a --- /dev/null +++ b/src/app/content/full-pages/others/maintenance/maintenance.component.css @@ -0,0 +1,3 @@ +html body { + height: max-content !important; +} diff --git a/src/app/content/full-pages/others/maintenance/maintenance.component.html b/src/app/content/full-pages/others/maintenance/maintenance.component.html new file mode 100644 index 0000000..ef5c73b --- /dev/null +++ b/src/app/content/full-pages/others/maintenance/maintenance.component.html @@ -0,0 +1,47 @@ + + + + +
+
+
+
+
+
+
+
+
+
+ + logo + +
+
+

This page is under maintenance

+

We're sorry for the inconvenience. +
Please check back later.

+
+
+
+ +
+
+
+
+
+
+
+ + + diff --git a/src/app/content/full-pages/others/maintenance/maintenance.component.spec.ts b/src/app/content/full-pages/others/maintenance/maintenance.component.spec.ts new file mode 100644 index 0000000..a09514b --- /dev/null +++ b/src/app/content/full-pages/others/maintenance/maintenance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { MaintenanceComponent } from './maintenance.component'; + +describe('MaintenanceComponent', () => { + let component: MaintenanceComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ MaintenanceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MaintenanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/others/maintenance/maintenance.component.ts b/src/app/content/full-pages/others/maintenance/maintenance.component.ts new file mode 100644 index 0000000..af74331 --- /dev/null +++ b/src/app/content/full-pages/others/maintenance/maintenance.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-maintenance', + templateUrl: './maintenance.component.html', + styleUrls: ['./maintenance.component.css'] +}) +export class MaintenanceComponent { + + constructor() { } + +} diff --git a/src/app/content/full-pages/others/others.module.ts b/src/app/content/full-pages/others/others.module.ts new file mode 100644 index 0000000..75273e8 --- /dev/null +++ b/src/app/content/full-pages/others/others.module.ts @@ -0,0 +1,44 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FlatComponent } from './flat/flat.component'; +import { RouterModule } from '@angular/router'; +import { BgImageComponent } from './bg-image/bg-image.component'; +import { BgVideoComponent } from './bg-video/bg-video.component'; +import { MaintenanceComponent } from './maintenance/maintenance.component'; +import { SearchPageComponent } from './search-page/search-page.component'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { CountdownModule } from 'ngx-countdown'; + +@NgModule({ + imports: [ + CommonModule, + NgbModule, + CountdownModule, + RouterModule.forChild([ + { + path: 'flat', + component: FlatComponent + }, + { + path: 'bgImage', + component: BgImageComponent + }, + { + path: 'bgVideo', + component: BgVideoComponent + }, + { + path: 'maintenance', + component: MaintenanceComponent + }, + { + path: 'searchPage', + component: SearchPageComponent + }, + ]), + ], + declarations: [FlatComponent, BgImageComponent, BgVideoComponent, MaintenanceComponent, SearchPageComponent], + exports: [RouterModule] + }) +export class OthersModule { } + diff --git a/src/app/content/full-pages/others/search-page/search-page.component.css b/src/app/content/full-pages/others/search-page/search-page.component.css new file mode 100644 index 0000000..44e38fb --- /dev/null +++ b/src/app/content/full-pages/others/search-page/search-page.component.css @@ -0,0 +1,14 @@ +.dropdown-menu { + position: absolute; + top: 14px !important; + left: 0px !important; + transform: translate3d(11px, -276px, 0px); +} + +.right_space { + margin-right: 0.5rem !important; +} + +:host ::ng-deep .content-wrapper { + padding: 2.2rem !important; +} diff --git a/src/app/content/full-pages/others/search-page/search-page.component.html b/src/app/content/full-pages/others/search-page/search-page.component.html new file mode 100644 index 0000000..755b959 --- /dev/null +++ b/src/app/content/full-pages/others/search-page/search-page.component.html @@ -0,0 +1,59 @@ +
+
+
+
+
+
+
+
+ Modern Search +
+ +
+ +
+
+
+
+ Modern + Search + + + + Web + + Images + + Videos + Maps + + I'm Feeling Lucky + + +
+
+
+
+ + + + +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/full-pages/others/search-page/search-page.component.spec.ts b/src/app/content/full-pages/others/search-page/search-page.component.spec.ts new file mode 100644 index 0000000..9e7e2e9 --- /dev/null +++ b/src/app/content/full-pages/others/search-page/search-page.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SearchPageComponent } from './search-page.component'; + +describe('SearchPageComponent', () => { + let component: SearchPageComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SearchPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/full-pages/others/search-page/search-page.component.ts b/src/app/content/full-pages/others/search-page/search-page.component.ts new file mode 100644 index 0000000..edf1888 --- /dev/null +++ b/src/app/content/full-pages/others/search-page/search-page.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-search-page', + templateUrl: './search-page.component.html', + styleUrls: ['./search-page.component.css'] +}) +export class SearchPageComponent { + + constructor() { } + +} diff --git a/src/app/content/icons/feather/feather.component.css b/src/app/content/icons/feather/feather.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/icons/feather/feather.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/icons/feather/feather.component.html b/src/app/content/icons/feather/feather.component.html new file mode 100644 index 0000000..90ca713 --- /dev/null +++ b/src/app/content/icons/feather/feather.component.html @@ -0,0 +1,1707 @@ +
+
+
+ +
+
+ +
+
+
+ + + Feather Icons + + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/icons/feather/feather.component.spec.ts b/src/app/content/icons/feather/feather.component.spec.ts new file mode 100644 index 0000000..ad20fca --- /dev/null +++ b/src/app/content/icons/feather/feather.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { FeatherComponent } from './feather.component'; + +describe('FeatherComponent', () => { + let component: FeatherComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ FeatherComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FeatherComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/icons/feather/feather.component.ts b/src/app/content/icons/feather/feather.component.ts new file mode 100644 index 0000000..cacd50c --- /dev/null +++ b/src/app/content/icons/feather/feather.component.ts @@ -0,0 +1,52 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-feather', + templateUrl: './feather.component.html', + styleUrls: ['./feather.component.css'] +}) +export class FeatherComponent implements OnInit { + + @BlockUI('featherIcons') blockUIFeatherIcons: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Feather Icons', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Icons', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Feather Icons', + 'isLink': false + } + ] + }; + } + reloadFeatherIcons() { + this.blockUIFeatherIcons.start('Loading..'); + + setTimeout(() => { + this.blockUIFeatherIcons.stop(); + }, 2500); + } + +} diff --git a/src/app/content/icons/icons.module.spec.ts b/src/app/content/icons/icons.module.spec.ts new file mode 100644 index 0000000..75e7888 --- /dev/null +++ b/src/app/content/icons/icons.module.spec.ts @@ -0,0 +1,13 @@ +import { IconsModule } from './icons.module'; + +describe('IconsModule', () => { + let iconsModule: IconsModule; + + beforeEach(() => { + iconsModule = new IconsModule(); + }); + + it('should create an instance', () => { + expect(iconsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/icons/icons.module.ts b/src/app/content/icons/icons.module.ts new file mode 100644 index 0000000..f66d98f --- /dev/null +++ b/src/app/content/icons/icons.module.ts @@ -0,0 +1,44 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FeatherComponent } from './feather/feather.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { LineAwesomeComponent } from './line-awesome/line-awesome.component'; +import { MeteoconsComponent } from './meteocons/meteocons.component'; +import { SimpleLineIconsComponent } from './simple-line-icons/simple-line-icons.component'; +import { CardModule } from '../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../_layout/blockui/block-template.component'; + +@NgModule({ + imports: [ + CommonModule, + NgbModule, + BreadcrumbModule, + CardModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([{ + path: 'feather', + component: FeatherComponent + }, + { + path: 'line-awesome', + component: LineAwesomeComponent + }, + { + path: 'meteocons', + component: MeteoconsComponent + }, + { + path: 'simple-line-icons', + component: SimpleLineIconsComponent + }, + ]) + ], + declarations: [FeatherComponent, LineAwesomeComponent, MeteoconsComponent, SimpleLineIconsComponent], + exports: [RouterModule] +}) +export class IconsModule { } diff --git a/src/app/content/icons/line-awesome/line-awesome.component.css b/src/app/content/icons/line-awesome/line-awesome.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/icons/line-awesome/line-awesome.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/icons/line-awesome/line-awesome.component.html b/src/app/content/icons/line-awesome/line-awesome.component.html new file mode 100644 index 0000000..0442951 --- /dev/null +++ b/src/app/content/icons/line-awesome/line-awesome.component.html @@ -0,0 +1,3397 @@ +
+
+
+ +
+
+ +
+
+
+ + + Line Awesome + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/icons/line-awesome/line-awesome.component.spec.ts b/src/app/content/icons/line-awesome/line-awesome.component.spec.ts new file mode 100644 index 0000000..5f3ce04 --- /dev/null +++ b/src/app/content/icons/line-awesome/line-awesome.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { LineAwesomeComponent } from './line-awesome.component'; + +describe('LineAwesomeComponent', () => { + let component: LineAwesomeComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LineAwesomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LineAwesomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/icons/line-awesome/line-awesome.component.ts b/src/app/content/icons/line-awesome/line-awesome.component.ts new file mode 100644 index 0000000..4ab9785 --- /dev/null +++ b/src/app/content/icons/line-awesome/line-awesome.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-line-awesome', + templateUrl: './line-awesome.component.html', + styleUrls: ['./line-awesome.component.css'] +}) +export class LineAwesomeComponent implements OnInit { + +@BlockUI('lineAwesome') blockUILineAwesome: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Line Awesome', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Icons', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Line Awesome', + 'isLink': false + } + ] + }; + } + + reloadLineAwesome() { + this.blockUILineAwesome.start('Loading..'); + + setTimeout(() => { + this.blockUILineAwesome.stop(); + }, 2500); + } + +} diff --git a/src/app/content/icons/meteocons/meteocons.component.css b/src/app/content/icons/meteocons/meteocons.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/icons/meteocons/meteocons.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/icons/meteocons/meteocons.component.html b/src/app/content/icons/meteocons/meteocons.component.html new file mode 100644 index 0000000..0adc9ba --- /dev/null +++ b/src/app/content/icons/meteocons/meteocons.component.html @@ -0,0 +1,262 @@ +
+
+
+ +
+
+ +
+
+
+ + + Meteocons + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/icons/meteocons/meteocons.component.spec.ts b/src/app/content/icons/meteocons/meteocons.component.spec.ts new file mode 100644 index 0000000..a6a0055 --- /dev/null +++ b/src/app/content/icons/meteocons/meteocons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { MeteoconsComponent } from './meteocons.component'; + +describe('MeteoconsComponent', () => { + let component: MeteoconsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ MeteoconsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MeteoconsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/icons/meteocons/meteocons.component.ts b/src/app/content/icons/meteocons/meteocons.component.ts new file mode 100644 index 0000000..ebded92 --- /dev/null +++ b/src/app/content/icons/meteocons/meteocons.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-meteocons', + templateUrl: './meteocons.component.html', + styleUrls: ['./meteocons.component.css'] +}) +export class MeteoconsComponent implements OnInit { + +@BlockUI('meteocons') blockUIMeteocons: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Meteocons', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Icons', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Meteocons', + 'isLink': false + } + ] + }; + } + + reloadMeteocons() { + this.blockUIMeteocons.start('Loading..'); + + setTimeout(() => { + this.blockUIMeteocons.stop(); + }, 2500); + } +} diff --git a/src/app/content/icons/simple-line-icons/simple-line-icons.component.css b/src/app/content/icons/simple-line-icons/simple-line-icons.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/icons/simple-line-icons/simple-line-icons.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/icons/simple-line-icons/simple-line-icons.component.html b/src/app/content/icons/simple-line-icons/simple-line-icons.component.html new file mode 100644 index 0000000..836bde5 --- /dev/null +++ b/src/app/content/icons/simple-line-icons/simple-line-icons.component.html @@ -0,0 +1,1161 @@ +
+
+
+ +
+
+ +
+
+
+ + + Simple Line Icons + + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/icons/simple-line-icons/simple-line-icons.component.spec.ts b/src/app/content/icons/simple-line-icons/simple-line-icons.component.spec.ts new file mode 100644 index 0000000..8897411 --- /dev/null +++ b/src/app/content/icons/simple-line-icons/simple-line-icons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SimpleLineIconsComponent } from './simple-line-icons.component'; + +describe('SimpleLineIconsComponent', () => { + let component: SimpleLineIconsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SimpleLineIconsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleLineIconsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/icons/simple-line-icons/simple-line-icons.component.ts b/src/app/content/icons/simple-line-icons/simple-line-icons.component.ts new file mode 100644 index 0000000..edc1844 --- /dev/null +++ b/src/app/content/icons/simple-line-icons/simple-line-icons.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-simple-line-icons', + templateUrl: './simple-line-icons.component.html', + styleUrls: ['./simple-line-icons.component.css'] +}) +export class SimpleLineIconsComponent implements OnInit { + + @BlockUI('simpleLineIcons') blockUISimpleLineIcons: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Simple Line Icons', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Icons', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Simple Line Icons', + 'isLink': false + } + ] + }; + } + + reloadSimpleLineIcons() { + this.blockUISimpleLineIcons.start('Loading..'); + + setTimeout(() => { + this.blockUISimpleLineIcons.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/alerts/alerts.component.css b/src/app/content/ngbbootstrap/alerts/alerts.component.css new file mode 100644 index 0000000..c1109b9 --- /dev/null +++ b/src/app/content/ngbbootstrap/alerts/alerts.component.css @@ -0,0 +1,6 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .btn-close { + font-size: 5px !important; +} \ No newline at end of file diff --git a/src/app/content/ngbbootstrap/alerts/alerts.component.html b/src/app/content/ngbbootstrap/alerts/alerts.component.html new file mode 100644 index 0000000..ca7a6d8 --- /dev/null +++ b/src/app/content/ngbbootstrap/alerts/alerts.component.html @@ -0,0 +1,818 @@ +
+
+
+ +
+ +
+
+
+ + + Basic Alerts + + +

Alert is a component to provide contextual feedback messages for user. + Bootstrap provides styles for the following types : 'success', 'info', 'warning', 'danger', 'primary', 'secondary', 'light' and 'dark' +

+
Primary Alert
+ + + Good Morning! Start your day with some alerts. + +
Secondary Alert
+ + Hello! This is secondary alert - check it out. + +
Success Alert
+ + Well done! You successfully read this important alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit again. + +
Warning Alert
+ + Warning! Better check yourself, you're not looking too good. + +
Info Alert
+ + Heads up! This alert needs your attention, but it's not super important. + +
Light Alert
+ + Hello! This is light alert - check it out. + +
Dark Alert
+ + Hello! This is dark alert - check it out. + +
+
+
+
+ + + Dismissible Alerts + + +

To add dismiss button use input [dismissible]="true" which adds close (X) button to the right.

+
Primary Alert
+ + Good Morning! Start your day with some alerts. + +
Secondary Alert
+ + Hello! This is secondary alert - check it out. + +
Success Alert
+ + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit + again. + +
Warning Alert
+ + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + Heads up! This alert needs your attention, but + it's not super important. + +
Light Alert
+ + Hello! This is light alert - check it out. + +
Dark Alert
+ + Hello! This is dark alert - check it out. + +
+
+
+
+
+ + + +
+
+
+
+
+

Alerts with Links

+
+
+
+

Add .alert-link class to add links to alerts. And use input [routerLink]="" to add url link.

+
Primary Alert
+ + Good Morning! Start your day with some alerts. + +
Secondary Alert
+ + Hello! This is secondary alert - check it out. + +
Success Alert
+ + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit again. + +
Warning Alert
+ + Warning! Better check yourself, you're not looking too + good. + +
Info Alert
+ + Heads up! This alert needs your attention, but + it's not super important. + +
Light Alert
+ + Hello! This is light alert - check it out. + +
Dark Alert
+ + Hello! This is dark alert - check it out. + +
+
+
+
+
+
+
+

Alerts with No Border

+
+
+
+

Add .border-0 class along with .alert class for alerts with no borders. +

+
Primary Alert
+ + Good Morning! Start your day with some alerts. + +
Secondary Alert
+ + Hello! This is secondary alert - check it out. + +
Success Alert
+ + Well done! You successfully read this important alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit again. + +
Warning Alert
+ + Warning! Better check yourself, you're not looking too good. + +
Info Alert
+ + Heads up! This alert needs your attention, but it's not super important. + +
Light Alert
+ + Hello! This is light alert - check it out. + +
Dark Alert
+ + Hello! This is dark alert - check it out. + +
+
+
+
+
+
+ + + +
+
+
+
+
+

Alerts with icons

+
+
+
+

To add left/right icons to the alert, use class .alert-icon-left or + alert-icon-right + with icon class .alert-icon.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some + alerts. + +
Success Alert
+ + + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit + again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, + but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom + colors. + +
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+

Alerts with icons & Arrow

+
+
+
+

To add left/right icons with arrow to the alert, use class .alert-arrow-left or + alert-arrow-right + as required.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some + alerts. + +
Success Alert
+ + + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit + again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, + but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom + colors. + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Solid Alerts

+
+
+
+

To use solid alert, add background color class to the .alert container class. Alerts also support custom color classes from theme color system. To use a custom color, add .bg-* to the .alert class.

+
+
+
Primary Alert
+ + Good Morning! Start your day with some alerts. + +
Success Alert
+ + Well done! You successfully read this important alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit again. + +
+
+
Warning Alert
+ + Warning! Better check yourself, you're not looking too good. + +
Info Alert
+ + Heads up! This alert needs your attention, but it's not super important. + +
Custom Alert
+ + Great! You are using some gorgeous custom colors. + +
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+

Solid Alerts with icons

+
+
+
+

To use solid alert with icons, add class .alert-icon-left or alert-icon-right to .alert container class.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some alerts. + +
Success Alert
+ + + Well done! You successfully read this important alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom colors. + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Solid Alerts with icons & arrow

+
+
+
+

To use solid alert with icons, add class .alert-arrow-left or alert-arrow-right with icon classes to .alert container class.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some alerts. + +
Success Alert
+ + + Well done! You successfully read this important alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom colors. + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Round Alerts

+
+
+
+

To use round alert, add class .round to .alert container class.

+
+
+
Primary Alert
+ + Good Morning! Start your day with some + alerts. + +
Success Alert
+ + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + Oh snap! Change a few things up and submit + again. + +
+
+
Warning Alert
+ + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + Heads up! This alert needs your attention, + but it's not super important. + +
Custom Alert
+ + Great! You are using some gorgeous custom + colors. + +
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+

Round Alerts with icons

+
+
+
+

To use round alert, add class .round to .alert container class. To use + Icons, add class .alert-icon-left or alert-icon-right to + .alert + container class.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some + alerts. + +
Success Alert
+ + + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit + again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, + but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom + colors. + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Round Alerts with icons & arrow

+
+
+
+

To use round alert, add class .round to .alert container class. To add + left/right icons with arrow to the alert, use class .alert-arrow-left or + alert-arrow-right + with icon classes.

+
+
+
Primary Alert
+ + + Good Morning! Start your day with some + alerts. + +
Success Alert
+ + + Well done! You successfully read this important + alert message. + +
Danger Alert
+ + + Oh snap! Change a few things up and submit + again. + +
+
+
Warning Alert
+ + + Warning! Better check yourself, you're not looking + too good. + +
Info Alert
+ + + Heads up! This alert needs your attention, + but it's not super important. + +
Custom Alert
+ + + Great! You are using some gorgeous custom + colors. + +
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+

Alerts with Additional Content

+
+
+
+

Alerts can also contain additional HTML elements like headings and paragraphs.

+
+
+
Primary Alert
+ +

Good Morning!

+

Aww yeah, you successfully read this important alert + message. This example text is going to run a bit longer so that you can see how spacing + within an alert works with this kind of content.

+

Whenever you need to, be sure to use margin utilities to keep things nice and + tidy.

+
+
No Border Success Alert
+ +

Well done!

+

Aww yeah, you successfully read this important alert message. This example text is going to + run a bit longer so that you can see how spacing within an + alert works with this kind of content.

+

Whenever you need to, be sure to use margin utilities to keep things nice and + tidy.

+
+
Solid Danger Alert
+ +

Oh snap!

+

Aww yeah, you successfully read this important alert message. This example text is going to + run a bit longer so that you can see how spacing within an alert works with this kind of + content.

+

Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

+
+
+
+
Warning Alert
+ +

Warning!

+

Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing + within an + alert works with this kind of content.

+

Whenever you need to, be sure to use margin utilities to keep things nice and + tidy.

+
+
No Border Info Alert
+ +

Heads up!

+

Aww yeah, you successfully read this important alert message. This example text is going to + run a bit longer so that you can see how spacing within an + alert works with this kind of content.

+

Whenever you need to, be sure to use margin utilities to keep things nice and + tidy.

+
+
Solid Custom Alert
+ +

Great!

+

Aww yeah, you successfully read this important alert message. This example text is going to + run a bit longer so that you can see how spacing within an alert works with this kind of + content.

+

Whenever you need to, be sure to use margin utilities + to keep things nice and tidy.

+
+
+
+
+
+
+
+
+
+ +
+
+ diff --git a/src/app/content/ngbbootstrap/alerts/alerts.component.spec.ts b/src/app/content/ngbbootstrap/alerts/alerts.component.spec.ts new file mode 100644 index 0000000..a48e8bb --- /dev/null +++ b/src/app/content/ngbbootstrap/alerts/alerts.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { AlertsComponent } from './alerts.component'; + +describe('AlertsComponent', () => { + let component: AlertsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ AlertsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlertsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/alerts/alerts.component.ts b/src/app/content/ngbbootstrap/alerts/alerts.component.ts new file mode 100644 index 0000000..2cf8034 --- /dev/null +++ b/src/app/content/ngbbootstrap/alerts/alerts.component.ts @@ -0,0 +1,133 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-alerts', + templateUrl: './alerts.component.html', + styleUrls: ['./alerts.component.css'] +}) +export class AlertsComponent implements OnInit { + + @BlockUI('basicAlerts') blockUIBasicAlerts: NgBlockUI; + @BlockUI('dismissibleAlerts') blockUIDismissibleAlerts: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + public isPrimaryClosed2 = false; + public isSecondaryClosed2 = false; + public isSuccessClosed2 = false; + public isDangerClosed2 = false; + public isWarningClosed2 = false; + public isInfoClosed2 = false; + public isLightClosed2 = false; + public isDarkClosed2 = false; + + public isPrimaryClosed5 = false; + public isSuccessClosed5 = false; + public isDangerClosed5 = false; + public isWarningClosed5 = false; + public isInfoClosed5 = false; + public isCustomClosed5 = false; + + public isPrimaryClosed6 = false; + public isSuccessClosed6 = false; + public isDangerClosed6 = false; + public isWarningClosed6 = false; + public isInfoClosed6 = false; + public isCustomClosed6 = false; + + public isPrimaryClosed7 = false; + public isSuccessClosed7 = false; + public isDangerClosed7 = false; + public isWarningClosed7 = false; + public isInfoClosed7 = false; + public isCustomClosed7 = false; + + public isPrimaryClosed8 = false; + public isSuccessClosed8 = false; + public isDangerClosed8 = false; + public isWarningClosed8 = false; + public isInfoClosed8 = false; + public isCustomClosed8 = false; + + public isPrimaryClosed9 = false; + public isSuccessClosed9 = false; + public isDangerClosed9 = false; + public isWarningClosed9 = false; + public isInfoClosed9 = false; + public isCustomClosed9 = false; + + public isPrimaryClosed10 = false; + public isSuccessClosed10 = false; + public isDangerClosed10 = false; + public isWarningClosed10 = false; + public isInfoClosed10 = false; + public isCustomClosed10 = false; + + public isPrimaryClosed11 = false; + public isSuccessClosed11 = false; + public isDangerClosed11 = false; + public isWarningClosed11 = false; + public isInfoClosed11 = false; + public isCustomClosed11 = false; + + public isPrimaryClosed12 = false; + public isSuccessClosed12 = false; + public isDangerClosed12 = false; + public isWarningClosed12 = false; + public isInfoClosed12 = false; + public isCustomClosed12 = false; + + public isPrimaryClosed13 = false; + public isSuccessClosed13 = false; + public isDangerClosed13 = false; + public isWarningClosed13 = false; + public isInfoClosed13 = false; + public isCustomClosed13 = false; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Alerts', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Alerts', + 'isLink': false + } + ] + }; + } + + reloadBasicAlerts() { + this.blockUIBasicAlerts.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicAlerts.stop(); + }, 2500); + } + reloadDismissible() { + this.blockUIDismissibleAlerts.start('Loading..'); + + setTimeout(() => { + this.blockUIDismissibleAlerts.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/badges/badges.component.css b/src/app/content/ngbbootstrap/badges/badges.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/ngbbootstrap/badges/badges.component.html b/src/app/content/ngbbootstrap/badges/badges.component.html new file mode 100644 index 0000000..4ccd2a0 --- /dev/null +++ b/src/app/content/ngbbootstrap/badges/badges.component.html @@ -0,0 +1,1425 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Secondary Badge

+
+
+
+

Use the .badge class, followed by.badge-secondaryclass within element to + create secondary badge.

+
Secondary Badge
+
+
+
+
+
+
+
+

Primary Badge

+
+
+
+

Use the .badge class, followed by.badge-primaryclass within element to + create primary badge.

+
Primary Badge
+
+
+
+
+
+
+
+

Success Badge

+
+
+
+

Use the .badge class, followed by.badge-successclass within element to + create success badge.

+
Success Badge
+
+
+
+
+
+
+
+

Danger Badge

+
+
+
+

Use the .badge class, followed by.badge-dangerclass within element to + create danger badge.

+
Danger Badge
+
+
+
+
+
+
+
+

Info Badge

+
+
+
+

Use the .badge class, followed by.badge-infoclass within element to + create info badge.

+
Info Badge
+
+
+
+
+
+
+
+

Warning Badge

+
+
+
+

Use the .badge class, followed by.badge-warningclass within element to + create warning badge.

+
Warning Badge
+
+
+
+
+
+
+
+

Custom Blue Grey Color Badge

+
+
+
+

Use the .badge class, followed by.bg-blue-greyclass within element to + create blue grey badge.

+
Custom Blue Grey Color Badge
+
+
+
+
+
+
+ + + +
+
+
+

Badges with Icons

+
+
+
+
+
+
+

Secondary Badge with Icon

+
+
+
+

Use the .badge class, followed by.badge-secondaryclass within element to + create secondary badge.

+
+ + Secondary Badge +
+
+
+
+
+
+
+
+

Square Primary Badge with Icon

+
+
+
+

Use the .badge class, followed by.badge-square class for square bordered + badge.

+
+ + Primary Badge +
+
+
+
+
+
+
+
+

Round Success Badge with Icon

+
+
+
+

Use the .badge class, followed by.round class for round bordered badge. +

+
+ + Success Badge +
+
+
+
+
+
+
+
+

Danger Badge with Icon

+
+
+
+

Use the .badge class, followed by.badge-dangerclass within element to + create danger badge.

+
+ Danger Badge + +
+
+
+
+
+
+
+
+

Square Info Badge with Icon

+
+
+
+

Use the .badge class, followed by.badge-squareclass for square badge.

+
+ Info Badge + +
+
+
+
+
+
+
+
+

Round Warning Badge with Icon

+
+
+
+

Use the .badge class, followed by.round class for round bordered.

+
+ Warning Badge + +
+
+
+
+
+
+
+ + + +
+
+
+

Badges with Only Icons

+
+
+
+
+
+
+

Secondary Icon Badge

+
+
+
+

Use the .badge class, followed by.badge-secondaryclass within element to + create secondary badge.

+
+ +
+
+
+
+
+
+
+
+

Square Icon Badge

+
+
+
+

Use the .badge class, followed by.badge-squareclass to square bordered + badge.

+
+ +
+
+
+
+
+
+
+
+

Round Icon Badge

+
+
+
+

Use the .badge class, followed by.round class for round warning badge. +

+
+ +
+
+
+
+
+
+
+
+

Danger Icon Badge

+
+
+
+

Use the .badge class, followed by.badge-dangerclass within element to + create danger badge.

+
+ +
+
+
+
+
+
+
+
+

Square Icon Badge

+
+
+
+

Use the .badge class, followed by.badge-square class to square bordered + badge.

+
+ +
+
+
+
+
+
+
+
+

Round Icon Badge

+
+
+
+

Use the .badge class, followed by.round class for round warning badge. +

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

Bordered Badges

+

Use the .badge-bordered with class .badge. Also use .border-COLOR + class to add border and use .COLOR for text color

+
+
+
+
+
+
+

Primary Badge

+
+
+
+
Primary Badge
+
+
+
+
+
+
+
+

Success Badge

+
+
+
+
Success Badge
+
+
+
+
+
+
+
+

Danger Badge

+
+
+
+
Danger Badge
+
+
+
+
+
+
+
+

Info Badge

+
+
+
+
Info Badge
+
+
+
+
+
+
+
+

Warning Badge

+
+
+
+
Warning Badge
+
+
+
+
+
+
+
+

Custom Color Badge

+
+
+
+
Custom Color Badge
+
+
+
+
+
+
+ + + + + +
+
+
+

Bordered Badges with Icons

+
+
+
+
+
+
+

Default Primary Badge

+
+
+
+
+ + Primary Badge +
+
+
+
+
+
+
+
+

Square Success Badge

+
+
+
+
+ + Success Badge +
+
+
+
+
+
+
+
+

Round Danger Badge

+
+
+
+
+ + Danger Badge +
+
+
+
+
+
+
+
+

Default Info Badge

+
+
+
+
+ Info Badge + +
+
+
+
+
+
+
+
+

Square Warning Badge

+
+
+
+
+ Warning Badge + +
+
+
+
+
+
+
+
+

Round Custom Badge

+
+
+
+
+ Custom Color Badge + +
+
+
+
+
+
+
+ + + + + +
+
+
+

Bordered Icon badges

+
+
+
+
+
+
+

Default Primary Badge

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

Square Success Badge

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

Round Danger Badge

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

Default Info Badge

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

Square Warning Badge

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

Round Custom Badge

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

Striped Badges

+

Use the .badge-striped with class .badge for striped styled badges. Also use + .border-left-COLOR or .border-right-COLOR class to add border to left and right. +

+
+
+
+
+
+
+

Primary Badge

+
+
+
+
Primary Badge
+
+
+
+
+
+
+
+

Success Badge

+
+
+
+
Success Badge
+
+
+
+
+
+
+
+

Danger Badge

+
+
+
+
Danger Badge
+
+
+
+
+
+
+
+

Info Badge

+
+
+
+
Info Badge
+
+
+
+
+
+
+
+

Warning Badge

+
+
+
+
Warning Badge
+
+
+
+
+
+
+
+

Custom Color Badge

+
+
+
+
Custom Color Badge
+
+
+
+
+
+
+ + + + + +
+
+
+

Striped Badges With Icons

+
+
+
+
+
+
+

Primary Badge

+
+
+
+
+ + Primary Badge +
+
+
+
+
+
+
+
+

Success Badge

+
+
+
+
+ + Success Badge +
+
+
+
+
+
+
+
+

Danger Badge

+
+
+
+
+ + Danger Badge +
+
+
+
+
+
+
+
+

Info Badge

+
+
+
+
+ Info Badge + +
+
+
+
+
+
+
+
+

Warning Badge

+
+
+
+
+ Warning Badge + +
+
+
+
+
+
+
+
+

Custom Color Badge

+
+
+
+
+ Custom Color Badge + +
+
+
+
+
+
+
+ + + + + +
+
+
+

Bordered Icon badges

+
+
+
+
+
+
+

Default Primary Badge

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

Square Success Badge

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

Round Danger Badge

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

Default Info Badge

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

Square Warning Badge

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

Round Custom Badge

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

Badges With Dropdown

+
+
+
+
+
+
+

Secondary Badge

+
+
+
+
+ Dropdown Badge +
+ + + + + +
+
+
+
+
+
+
+
+
+

Primary Badge

+
+
+
+
+ Dropdown Badge +
+ + + + + +
+
+
+
+
+
+
+
+
+

Success Badge

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

Danger Tag

+
+
+
+
+ Dropdown Tag +
+ + + + + +
+
+
+
+
+
+
+
+
+

Info Tag

+
+
+
+
+ Dropdown Tag +
+ + + + + +
+
+
+
+
+
+
+
+
+

Warning Tag

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

Custom Striped Tag

+
+
+
+
+ Dropdown Tag +
+ + + + + +
+
+
+
+
+
+
+
+
+

Custom Right Striped Tag

+
+
+
+
+ Dropdown Tag +
+ + + + + +
+
+
+
+
+
+
+
+
+

Custom Round Tag

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

Block Badges

+

Use .block class with .badge, to set block badge.

+
+
+
+
+
+
+

Secondary Badge

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

Primary Badge

+
+
+ +
+
+
+
+
+
+

Success Badge

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

Danger Tag

+
+
+
+
+ Link Tag +
+
+
+
+
+
+
+
+

Info Tag

+
+
+ +
+
+
+
+
+
+

Warning Tag

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

Custom Striped Tag

+
+
+
+
+ Link Tag +
+
+
+
+
+
+
+
+

Custom Right Striped Tag

+
+
+ +
+
+
+
+
+
+

Custom Round Tag

+
+
+
+
+ + + +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/badges/badges.component.spec.ts b/src/app/content/ngbbootstrap/badges/badges.component.spec.ts new file mode 100644 index 0000000..f444f70 --- /dev/null +++ b/src/app/content/ngbbootstrap/badges/badges.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BadgesComponent } from './badges.component'; + +describe('BadgesComponent', () => { + let component: BadgesComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BadgesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BadgesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/badges/badges.component.ts b/src/app/content/ngbbootstrap/badges/badges.component.ts new file mode 100644 index 0000000..59eb170 --- /dev/null +++ b/src/app/content/ngbbootstrap/badges/badges.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-badges', + templateUrl: './badges.component.html', + styleUrls: ['./badges.component.css'] +}) +export class BadgesComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Badge', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Badge', + 'isLink': false + } + ] + }; + } +} diff --git a/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.css b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.html b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.html new file mode 100644 index 0000000..86c737b --- /dev/null +++ b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.html @@ -0,0 +1,3794 @@ +
+
+
+ +
+
+ +
+
+
+ + + Basic Buttons + + +
+
+
Buttons
+

Bootstrap includes six predefined button styles, each serving its own + semantic + purpose.

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

Buttons Glow

+ + +
+
+
+
+
+

Use .btn-glow class with any colored button to add button + glow.

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

Buttons Shadow

+ + +
+
+
+
+
+

Use .box-shadow-* class with button to add button shadow. +

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

Square Buttons

+ + +
+
+
+
+
+

Use .square class for square buttons.

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

Round Buttons

+ +
+
+
+
+
+

Use .round class for round buttons.

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

Single button dropdowns

+ + +
+
+
+
+
+
Button dropdowns
+

Turn a button into a dropdown toggle with some basic markup changes.

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

Split Buttons

+ + +
+
+
+
+
+
Split button dropdowns
+

Similarly, create split button dropdowns with the same markup changes, + only with a + separate button.

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

Basic Button group

+ + +
+
+
+
+
+

Group a series of buttons together on a single line with the button + group. Wrap a + series of buttons with .btn in .btn-group.

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

Buttons with Icon

+ + +
+
+
+
+
+

Bootstrap includes six predefined button styles, each serving its own + semantic + purpose.

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

Button dropdowns with icons

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

Split button dropdowns with icon

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

Button group with icon

+ + +
+
+
+
+
+

Button group with icons and text.

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

Icon Buttons

+ + +
+
+
+
+
+

Simple Icon Button

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

Use .btn-icon.btn-pure classes for only icon buttons

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

Icon Button dropdowns

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

Split icon button dropdowns

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

Icon Button group

+ + +
+
+
+
+
+

Icon Button group without text.

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

Combine sets of button groups into Button toolbar for + more complex + components.

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

Sizes

+
+
+
+
+
+

Add .btn-lg or .btn-sm for Fancy larger or + smaller buttons + size.

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

Buttons with Icons in different sizes

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

Button Dropdowns Sizes

+ +
+
+
+
+
+

Button dropdowns work with buttons of all sizes.

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

Buttons with Icons in different sizes

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

Button Group Sizes

+ + +
+
+
+
+
+

Instead of applying button sizing classes to every button + in a group, + just add .btn-group-* + to each .btn-group.

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

Button Group with Icons in different sizes

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

Block level buttons

+ + +
+
+
+ +

Create block level buttons—those that span the full width of a + parent—by adding + .btn-block.

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

Button tags

+ +
+
+
+ +

The .btn classes are designed to be used with the + <button> + element. + However, you can also use these classes on + <a> or + <input> + elements.

+
+ Link + + + +
+
+
+
+
+
+
+ + +
+
+
+

Outline Buttons

+

Replace the default modifier classes with the .btn-outline ones + to remove all + background + images and colors on any button.

+
+
+
+
+
+
+

Outline buttons

+ + +
+
+
+
+
+

Use a class .btn-outline-* to quickly create + a outline + button.

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

Outline Buttons Glow

+ + +
+
+
+
+
+

Use .btn-glow class with any colored button + to add button + glow.

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

Outline Buttons Shadow

+ + +
+
+
+
+
+

Use .box-shadow-* class with button to add + button shadow. +

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

Square buttons

+ + +
+
+
+
+
+

Use a class .square with outline button + class to create + square outline + button.

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

Round buttons

+ + +
+
+
+
+
+

Use a class .round with outline button class + to create round + outline + button.

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

Single outline button dropdowns

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

Split Outline button dropdowns with dropdown + background

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

Split Outline button dropdowns

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

Outline Button group

+ + +
+
+
+
+
+

Outline button group

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

Outline buttons with Icons

+ + +
+
+
+
+
+

Outline Buttons with icon.

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

Split Outline button dropdowns with icon & + dropdown outline +

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

Outline Button group with icon

+
+
+
+
+
+

Outline button group with icons and text.

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

Outline Icon Buttons

+
+
+
+
+
+

Outline Icon Buttons.

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

Outline Icon Button group

+
+
+
+
+
+

Icon Button group without text.

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

Combine sets of button groups into Button + toolbar for + more complex + components.

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

Sizes

+
+
+
+
+
+ +

Add .btn-lg or .btn-sm for + Fancy larger or + smaller buttons + size.

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

Buttons with Icons in different sizes

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

Outline Button Dropdowns Sizes

+
+
+
+
+
+

Button dropdowns work with buttons of all sizes.

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

Icon Buttons in different sizes

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

Button Group Sizes

+
+
+
+
+
+

Instead of applying button sizing classes to every button + in a group, + just add .btn-group-* + to each .btn-group.

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

Button Group with Icons in different sizes

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

Block level buttons

+
+
+
+

Create block level buttons—those that span the full width of a + parent—by adding + .btn-block.

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

Nesting Button group

+
+
+
+
+
+

Place a .btn-group within another + .btn-group + for dropdown + menu buttons.

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

Nesting Button group with outline

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

Vertical variation

+
+
+
+
+
+

Make a set of buttons appear vertically.

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

Vertical variation with different colors

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

Vertical variation with Outlines

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

Vertical variation with Outlines

+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ diff --git a/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.spec.ts b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.spec.ts new file mode 100644 index 0000000..c1483a0 --- /dev/null +++ b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BasicButtonsComponent } from './basic-buttons.component'; + +describe('BasicButtonsComponent', () => { + let component: BasicButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BasicButtonsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.ts b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.ts new file mode 100644 index 0000000..8c5add6 --- /dev/null +++ b/src/app/content/ngbbootstrap/basic-buttons/basic-buttons.component.ts @@ -0,0 +1,60 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-basic-buttons', + templateUrl: './basic-buttons.component.html', + styleUrls: ['./basic-buttons.component.css'] +}) +export class BasicButtonsComponent implements OnInit { + + @BlockUI('states') blockUIStates: NgBlockUI; + @BlockUI('basicButtons') blockUIBasicButtons: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Buttons', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Buttons', + 'isLink': false + } + ] + }; + } + + reloadStates() { + this.blockUIStates.start('Loading..'); + + setTimeout(() => { + this.blockUIStates.stop(); + }, 2500); + } + reloadBasicButtons() { + this.blockUIBasicButtons.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicButtons.stop(); + }, 2500); + } +} diff --git a/src/app/content/ngbbootstrap/callout/callout.component.css b/src/app/content/ngbbootstrap/callout/callout.component.css new file mode 100644 index 0000000..372ff40 --- /dev/null +++ b/src/app/content/ngbbootstrap/callout/callout.component.css @@ -0,0 +1,11 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +.d-flex { + display: center !important; +} + +.align-items-center { + align-items: center!important; +} diff --git a/src/app/content/ngbbootstrap/callout/callout.component.html b/src/app/content/ngbbootstrap/callout/callout.component.html new file mode 100644 index 0000000..9ae31ef --- /dev/null +++ b/src/app/content/ngbbootstrap/callout/callout.component.html @@ -0,0 +1,1406 @@ +
+
+
+ +
+
+ +
+
+
+ + + Basic Callouts + + + + +

Use .bs-callout-COLOR for default callout.

+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot cake lemon + drops gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly beans. + Tiramisu sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert wafer icing + jelly. Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert candy canes halvah + cookie liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie pastry sugar + plum jelly apple + pie cotton candy.

+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping toffee. Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. Cheesecake bear + claw halvah + tiramisu pudding cupcake pie.

+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes cotton candy gummi + bears brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding cake.

+
+ + +
+
+
+
+
+ + +
+
+
+ + + Right Bordered Callouts + + + +

Use .callout-border-right for right bordered callout.

+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert candy canes halvah cookie + liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie pastry sugar plum + jelly apple + pie cotton candy.

+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping toffee. Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. Cheesecake bear claw + halvah + tiramisu pudding cupcake pie.

+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes cotton candy gummi bears + brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding cake.

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

Callout with Transparent Background

+

Use .callout-transparent for callout with transparent + background.

+
+
+
+
+
+
+

Basic Callouts

+
+
+
+
+

Good Morning!

+

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+

Congratulations!

+

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+

Not Bad!

+

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+

Great Job!

+

Biscuit macaroon tootsie roll croissant. Dessert candy canes + halvah cookie + liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie + pastry sugar plum + jelly apple + pie cotton candy.

+
+
+

Are You Sure?

+

Gummies cupcake donut wafer jelly croissant topping toffee. + Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. + Cheesecake bear claw + halvah + tiramisu pudding cupcake pie.

+
+
+

Super cool!

+

Cupcake macaroon chupa chups fruitcake. Candy canes cotton + candy gummi bears + brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa + chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding + cake.

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

Right Bordered Callouts

+
+
+
+
+

Good Morning!

+

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+

Congratulations!

+

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+

Not Bad!

+

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+

Great Job!

+

Biscuit macaroon tootsie roll croissant. Dessert candy canes + halvah cookie + liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie + pastry sugar plum + jelly apple + pie cotton candy.

+
+
+

Are You Sure?

+

Gummies cupcake donut wafer jelly croissant topping toffee. + Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. + Cheesecake bear claw + halvah + tiramisu pudding cupcake pie.

+
+
+

Super cool!

+

Cupcake macaroon chupa chups fruitcake. Candy canes cotton + candy gummi bears + brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa + chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding + cake.

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

Bordered Callout

+

Use .callout-bordered for callout with border.

+
+
+
+
+
+
+

Basic Callouts with Bordered

+
+
+
+
+

Good Morning!

+

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+

Congratulations!

+

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+

Not Bad!

+

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+

Great Job!

+

Biscuit macaroon tootsie roll croissant. Dessert candy canes + halvah cookie + liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie + pastry sugar plum + jelly apple + pie cotton candy.

+
+
+

Are You Sure?

+

Gummies cupcake donut wafer jelly croissant topping toffee. + Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. + Cheesecake bear claw + halvah + tiramisu pudding cupcake pie.

+
+
+

Super cool!

+

Cupcake macaroon chupa chups fruitcake. Candy canes cotton + candy gummi bears + brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa + chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding + cake.

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

Right Bordered Callouts With Bordered and + Transparent background +

+
+
+
+
+

Good Morning!

+

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+

Congratulations!

+

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+

Not Bad!

+

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+

Great Job!

+

Biscuit macaroon tootsie roll croissant. Dessert candy canes + halvah cookie + liquorice. + Candy canes muffin gummies jujubes brownie. Pie cake pie + pastry sugar plum + jelly apple + pie cotton candy.

+
+
+

Are You Sure?

+

Gummies cupcake donut wafer jelly croissant topping toffee. + Chocolate bar + danish gummies + macaroon bear claw oat cake chocolate cake wafer cake. + Cheesecake bear claw + halvah + tiramisu pudding cupcake pie.

+
+
+

Super cool!

+

Cupcake macaroon chupa chups fruitcake. Candy canes cotton + candy gummi bears + brownie + sesame snaps lollipop bonbon marshmallow dessert. Cake chupa + chups candy + canes powder + ice cream tiramisu wafer. Chocolate cake ice cream pudding + cake.

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

Callout With Icon

+
+
+
+
+
+
+

Basic Icon Callouts

+
+
+
+
+
+
+ +
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. + Carrot cake lemon + drops + gummies. Danish oat cake icing jelly icing cookie + gingerbread jelly + beans. + Tiramisu sweet roll gummies cake carrot cake + biscuit.

+
+
+
+
+
+
+ +
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate + cake candy sweet macaroon sugar plum tiramisu carrot + cake. Cupcake + ice cream + gummies. Sugar plum cupcake cotton candy jelly + beans.

+
+
+
+
+
+
+ +
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer + dessert wafer icing + jelly. + Halvah jelly beans dragée oat cake sesame snaps. Pie + carrot cake + liquorice. + Chocolate marzipan chocolate gummi bears.

+
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Bordered with Icons Callouts

+
+
+
+

Use .callout-right for right bordered callout.

+
+
+
+ +
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. + Carrot cake lemon + drops + gummies. Danish oat cake icing jelly icing cookie + gingerbread jelly + beans. + Tiramisu sweet roll gummies cake carrot cake + biscuit.

+
+
+
+
+
+
+ +
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate + cake candy sweet macaroon sugar plum tiramisu carrot + cake. Cupcake + ice cream + gummies. Sugar plum cupcake cotton candy jelly + beans.

+
+
+
+
+
+
+ +
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer + dessert wafer icing + jelly. + Halvah jelly beans dragée oat cake sesame snaps. Pie + carrot cake + liquorice. + Chocolate marzipan chocolate gummi bears.

+
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Callout With Arrow

+

Use class .callout-arrow to use icon with callout.

+
+
+
+
+
+
+

Basic Callouts with Arrow

+
+
+
+
+
+
+ +
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. + Carrot cake lemon + drops + gummies. Danish oat cake icing jelly icing cookie + gingerbread jelly + beans. + Tiramisu sweet roll gummies cake carrot cake + biscuit.

+
+
+
+
+
+
+ +
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate + cake candy sweet macaroon sugar plum tiramisu carrot + cake. Cupcake + ice cream + gummies. Sugar plum cupcake cotton candy jelly + beans.

+
+
+
+
+
+
+ +
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer + dessert wafer icing + jelly. + Halvah jelly beans dragée oat cake sesame snaps. Pie + carrot cake + liquorice. + Chocolate marzipan chocolate gummi bears.

+
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Bordered Callouts with Arrow

+
+
+
+

Use .callout-arrow for callout with right arrow.

+
+
+
+ +
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. + Carrot cake lemon + drops + gummies. Danish oat cake icing jelly icing cookie + gingerbread jelly + beans. + Tiramisu sweet roll gummies cake carrot cake + biscuit.

+
+
+
+
+
+
+ +
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate + cake candy sweet macaroon sugar plum tiramisu carrot + cake. Cupcake + ice cream + gummies. Sugar plum cupcake cotton candy jelly + beans.

+
+
+
+
+
+
+ +
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer + dessert wafer icing + jelly. + Halvah jelly beans dragée oat cake sesame snaps. Pie + carrot cake + liquorice. + Chocolate marzipan chocolate gummi bears.

+
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Round Callout

+

Use class .callout-round for round callout.

+
+
+
+
+
+
+

Round Callout

+
+
+
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+
+
+ +
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+
+
+
+
+ +
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+
+
+
+
+ +
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Round Right Callout

+
+
+
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Square Callout

+

Use class .callout-square for Square callout.

+
+
+
+
+
+
+

Square Callout

+
+
+
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+
+
+ +
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+
+
+
+
+ +
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+
+
+
+
+ +
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

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

Square Right Callout

+
+
+
+
+ Good Morning! +

Soufflé topping bear claw sugar plum gummies jelly. Carrot + cake lemon drops + gummies. + Danish oat cake icing jelly icing cookie gingerbread jelly + beans. Tiramisu + sweet roll + gummies cake carrot cake biscuit.

+
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop sweet. + Chocolate cake + candy sweet macaroon sugar plum tiramisu carrot cake. + Cupcake ice cream + gummies. Sugar + plum cupcake cotton candy jelly beans.

+
+
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert + wafer icing jelly. + Halvah jelly + beans dragée oat cake sesame snaps. Pie carrot cake + liquorice. Chocolate + marzipan + chocolate gummi bears.

+
+
+
+
+ Are You Sure? +

Gummies cupcake donut wafer jelly croissant topping + toffee. Chocolate + bar danish + gummies macaroon bear claw oat cake chocolate cake + wafer cake. + Cheesecake bear + claw halvah tiramisu pudding cupcake pie.

+
+
+ +
+
+
+
+
+
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert + candy canes halvah + cookie + liquorice. Candy canes muffin gummies jujubes + brownie. Pie cake pie + pastry + sugar plum jelly apple pie cotton candy.

+
+
+ +
+
+
+
+
+
+ Super cool!! +

Cupcake macaroon chupa chups fruitcake. Candy canes + cotton candy + gummi bears + brownie sesame snaps lollipop bonbon marshmallow + dessert. Cake chupa + chups + candy canes powder ice cream tiramisu wafer. + Chocolate cake ice + cream pudding + cake.

+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+ diff --git a/src/app/content/ngbbootstrap/callout/callout.component.spec.ts b/src/app/content/ngbbootstrap/callout/callout.component.spec.ts new file mode 100644 index 0000000..9d90d3d --- /dev/null +++ b/src/app/content/ngbbootstrap/callout/callout.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CalloutComponent } from './callout.component'; + +describe('CalloutComponent', () => { + let component: CalloutComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CalloutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CalloutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/callout/callout.component.ts b/src/app/content/ngbbootstrap/callout/callout.component.ts new file mode 100644 index 0000000..39bdaa6 --- /dev/null +++ b/src/app/content/ngbbootstrap/callout/callout.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-callout', + templateUrl: './callout.component.html', + styleUrls: ['./callout.component.css'] +}) +export class CalloutComponent implements OnInit { + + @BlockUI('basicCallouts') blockUIBasicCallouts: NgBlockUI; + @BlockUI('rightBorderedCallouts') blockUIRightBorderedCallouts: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Callout', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Callout', + 'isLink': false + } + ] + }; + } + + reloadBasicCallouts() { + this.blockUIBasicCallouts.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicCallouts.stop(); + }, 2500); + } + reloadRightBorderedCallouts() { + this.blockUIRightBorderedCallouts.start('Loading..'); + + setTimeout(() => { + this.blockUIRightBorderedCallouts.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/carousel/carousel.component.css b/src/app/content/ngbbootstrap/carousel/carousel.component.css new file mode 100644 index 0000000..f0e4231 --- /dev/null +++ b/src/app/content/ngbbootstrap/carousel/carousel.component.css @@ -0,0 +1,8 @@ +:host ::ng-deep img { + max-width: 100% !important; + height: auto !important; +} + +:host ::ng-deep .carousel-item-next:not(.carousel-item-left){ + transform: unset !important; +} diff --git a/src/app/content/ngbbootstrap/carousel/carousel.component.html b/src/app/content/ngbbootstrap/carousel/carousel.component.html new file mode 100644 index 0000000..3b60733 --- /dev/null +++ b/src/app/content/ngbbootstrap/carousel/carousel.component.html @@ -0,0 +1,192 @@ +
+
+
+ +
+
+ + + + + + + + + +
+
+
+ diff --git a/src/app/content/ngbbootstrap/carousel/carousel.component.spec.ts b/src/app/content/ngbbootstrap/carousel/carousel.component.spec.ts new file mode 100644 index 0000000..69fb301 --- /dev/null +++ b/src/app/content/ngbbootstrap/carousel/carousel.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CarouselComponent } from './carousel.component'; + +describe('CarouselComponent', () => { + let component: CarouselComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CarouselComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CarouselComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/carousel/carousel.component.ts b/src/app/content/ngbbootstrap/carousel/carousel.component.ts new file mode 100644 index 0000000..8f5b3fc --- /dev/null +++ b/src/app/content/ngbbootstrap/carousel/carousel.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit } from '@angular/core'; +import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'app-carousel', + templateUrl: './carousel.component.html', + styleUrls: ['./carousel.component.css'] +}) +export class CarouselComponent implements OnInit { + + public breadcrumb: any; + pauseOnHover = true; + + basicArray = ['../../../assets/images/carousel/02.jpg', + '../../../assets/images/carousel/03.jpg', + '../../../assets/images/carousel/01.jpg' + ]; + + optionalArray = ['../../../assets/images/carousel/06.jpg', + '../../../assets/images/carousel/08.jpg', + '../../../assets/images/carousel/05.jpg' + ]; + + intervalOptionalArray = ['../../../assets/images/carousel/10.jpg', + '../../../assets/images/carousel/15.jpg', + '../../../assets/images/carousel/14.jpg' + ]; + + pauseOptionArray = ['../../../assets/images/carousel/03.jpg', + '../../../assets/images/carousel/09.jpg', + '../../../assets/images/carousel/07.jpg' + ]; + + wrapOptionArray = ['../../../assets/images/carousel/02.jpg', + '../../../assets/images/carousel/04.jpg', + '../../../assets/images/carousel/08.jpg' + ]; + + keyboardoptionArray = ['../../../assets/images/carousel/11.jpg', + '../../../assets/images/carousel/06.jpg', + '../../../assets/images/carousel/01.jpg' + ]; + + constructor(config: NgbCarouselConfig) { + + } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Carousel', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Carousel', + 'isLink': false + } + ] + }; + } +} diff --git a/src/app/content/ngbbootstrap/collapse/collapse.component.css b/src/app/content/ngbbootstrap/collapse/collapse.component.css new file mode 100644 index 0000000..cb818ac --- /dev/null +++ b/src/app/content/ngbbootstrap/collapse/collapse.component.css @@ -0,0 +1,23 @@ +:host ::ng-deep .basic-accordation .btn-link { + color: #1e9ff2; +} + +:host ::ng-deep .color-accordation .btn-link { + color: #ffffff; +} + +:host ::ng-deep .basic-accordation .card, +:host ::ng-deep .color-accordation .card { + margin-bottom: 0; +} + +:host ::ng-deep .align_right .card-header { + text-align: right !important; +} + +:host ::ng-deep .card-header .btn { + font-weight: 500; + letter-spacing: .05rem; + font-size: 1.12rem; + padding: 0 !important; +} diff --git a/src/app/content/ngbbootstrap/collapse/collapse.component.html b/src/app/content/ngbbootstrap/collapse/collapse.component.html new file mode 100644 index 0000000..ab70bbf --- /dev/null +++ b/src/app/content/ngbbootstrap/collapse/collapse.component.html @@ -0,0 +1,1124 @@ +
+
+
+ +
+
+ +
+
+
+

Accordion

+
+
+
+
+
+
Basic Accordion
+

Basic accordion toggle.

+
+
+ + + + Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. + Wafer liquorice chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread + chocolate bar tart chupa chups sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake + soufflé toffee marzipan candy canes pie jelly-o. Cotton candy bonbon powder topping carrot cake + cookie caramels lemon drops liquorice. Dessert cookie ice cream toffee apple pie. + + + + + Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. + + + + + Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. + + + + + Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. + + + +
+
+
+
+
Right Aligned Accordion
+

Use .text-right to header for right aligned text to basic accordion toggle.

+
+
+
+ + + + Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels + chocolate cake liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding + jelly beans. Wafer liquorice chocolate bar chocolate bar liquorice. Tootsie roll gingerbread + gingerbread chocolate bar tart chupa chups sugar plum toffee. Carrot cake macaroon sweet danish. + Cupcake soufflé toffee marzipan candy canes pie jelly-o. Cotton candy bonbon powder topping + carrot cake cookie caramels lemon drops liquorice. Dessert cookie ice cream toffee apple pie. + + + + + Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin + jelly marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate + biscuit lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping + carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. + + + + + Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. + + + + + Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps + cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. + + + +
+
+
+
+
+
+
+
Accordion with Basic Color
+

Use class .bg-COLORto accordion toggle for theme heading background color.

+
+
+
+ + + + Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels + chocolate cake liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding + jelly beans. Wafer liquorice chocolate bar chocolate bar liquorice. Tootsie roll gingerbread + gingerbread chocolate bar tart chupa chups sugar plum toffee. Carrot cake macaroon sweet danish. + Cupcake soufflé toffee marzipan candy canes pie jelly-o. Cotton candy bonbon powder topping + carrot cake cookie caramels lemon drops liquorice. Dessert cookie ice cream toffee apple pie. + + + + + Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin + jelly marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate + biscuit lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping + carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. + + + + + Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. + + + + + Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps + cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. + + + +
+
+
+
+
+
Accordion with Color & Border
+

Use class .bg-COLORto accordion toggle for heading background color & + .border-COLOR + for content border color.

+
+
+
+ + + + Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels + chocolate cake liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding + jelly beans. Wafer liquorice chocolate bar chocolate bar liquorice. Tootsie roll gingerbread + gingerbread chocolate bar tart chupa chups sugar plum toffee. Carrot cake macaroon sweet danish. + Cupcake soufflé toffee marzipan candy canes pie jelly-o. Cotton candy bonbon powder topping + carrot cake cookie caramels lemon drops liquorice. Dessert cookie ice cream toffee apple pie. + + + + + Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin + jelly marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate + biscuit lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping + carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. + + + + + Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. + + + + + Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps + cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. + + + +
+
+
+
+
+ + + + + +
+
+
+

Collapse

+
+
+
+
+
+
Basic Collapse
+

It will work as collapsible toggle by default.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
Basic Collapse
+

Use .text-right to header for right aligned text.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
+
+
Collapse with Icon
+

Use class .collapse-icon to set icon collapse.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
Collapse with left Icon
+

Use class .collapse-icon.left to set left icon collapse.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
+
+
Collapsible with Basic Color
+

Use class .bg-COLORto accordion toggle for theme heading background color.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
Collapsible with Color & Border
+

Use class .bg-COLORto collapse toggle for Collapse heading background color & + .border-COLOR + for content border color.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
+
+
Collapsible with Border Color
+

Use class .border-COLORto collapse toggle for Collapse heading border color.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice + cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
Collapsible with section border Color
+

Use class .border-COLORto collapse wrapper for heading and content.

+
+
+ +
+
+
+ Caramels dessert chocolate cake pastry jujubes bonbon. Jelly wafer jelly beans. Caramels chocolate + cake + liquorice cake wafer jelly beans croissant apple pie. Oat cake brownie pudding jelly beans. Wafer + liquorice + chocolate bar chocolate bar liquorice. Tootsie roll gingerbread gingerbread chocolate bar tart + chupa chups + sugar plum toffee. Carrot cake macaroon sweet danish. Cupcake soufflé toffee marzipan candy canes + pie jelly-o. + Cotton candy bonbon powder topping carrot cake cookie caramels lemon drops liquorice. Dessert + cookie ice cream + toffee apple pie. +
+
+
+ +
+
+
+ Sugar plum bear claw oat cake chocolate jelly tiramisu dessert pie. Tiramisu macaroon muffin jelly + marshmallow + cake. Pastry oat cake chupa chups. Caramels marshmallow carrot cake topping donut sesame snaps + toffee tootsie + roll. Lollipop sweet jelly beans oat cake biscuit pastry chocolate cake. Cupcake chocolate biscuit + lemon drops + cotton candy marshmallow oat cake donut. Croissant chocolate cake oat cake brownie topping carrot + cake jelly + beans. Dessert gingerbread marshmallow pudding donut lemon drops cake. Cake topping gummi bears + cake. +
+
+
+ +
+
+
+ Candy cupcake sugar plum oat cake wafer marzipan jujubes lollipop macaroon. Cake dragée jujubes + donut chocolate + bar chocolate cake cupcake chocolate topping. Dessert jelly beans toffee muffin tiramisu sesame + snaps brownie. + Cake halvah pastry soufflé oat cake candy candy canes. Lemon drops gummies gingerbread toffee. + Tart + jelly candy + pastry. Pastry cake jelly beans carrot cake marzipan lollipop muffin. Soufflé jujubes cupcake. + Powder danish + candy carrot cake pastry. Tart marshmallow caramels cake macaroon gummies lollipop. +
+
+
+
+ +
+
+
+ Sesame snaps chocolate lollipop sesame snaps apple pie chocolate cake sweet roll. Dragée candy + canes carrot + cake chupa chups danish cake sugar plum candy. Cake powder biscuit bear claw. Sesame snaps + cotton + candy + cheesecake topping ice cream cookie tiramisu. Liquorice bonbon cookie pie halvah. Cookie toffee + ice cream + cotton candy lollipop fruitcake. Tart cheesecake tiramisu danish marzipan pie pastry chocolate + cake. Pastry + bonbon lollipop oat cake pastry halvah dessert jelly. Toffee caramels croissant apple pie chupa + chups toffee + muffin chupa chups apple pie. +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/collapse/collapse.component.spec.ts b/src/app/content/ngbbootstrap/collapse/collapse.component.spec.ts new file mode 100644 index 0000000..62cd9b3 --- /dev/null +++ b/src/app/content/ngbbootstrap/collapse/collapse.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CollapseComponent } from './collapse.component'; + +describe('CollapseComponent', () => { + let component: CollapseComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CollapseComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CollapseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/collapse/collapse.component.ts b/src/app/content/ngbbootstrap/collapse/collapse.component.ts new file mode 100644 index 0000000..7f7bcaa --- /dev/null +++ b/src/app/content/ngbbootstrap/collapse/collapse.component.ts @@ -0,0 +1,116 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-collapse', + templateUrl: './collapse.component.html', + styleUrls: ['./collapse.component.css'] +}) +export class CollapseComponent implements OnInit { + + public breadcrumb: any; + + public basicAccordation1 = false; + public basicAccordation2 = false; + public basicAccordation3 = false; + public basicAccordation4 = false; + + public rightAlignAccordation1 = false; + public rightAlignAccordation2 = false; + public rightAlignAccordation3 = false; + public rightAlignAccordation4 = false; + + public rightIconAccordation1 = false; + public rightIconAccordation2 = false; + public rightIconAccordation3 = false; + public rightIconAccordation4 = false; + + public leftIconAccordation1 = false; + public leftIconAccordation2 = false; + public leftIconAccordation3 = false; + public leftIconAccordation4 = false; + + public basicColorAccordation1 = false; + public basicColorAccordation2 = false; + public basicColorAccordation3 = false; + public basicColorAccordation4 = false; + + public basicColorBorderAccordation1 = false; + public basicColorBorderAccordation2 = false; + public basicColorBorderAccordation3 = false; + public basicColorBorderAccordation4 = false; + + public basicBorderColorAccordation1 = false; + public basicBorderColorAccordation2 = false; + public basicBorderColorAccordation3 = false; + public basicBorderColorAccordation4 = false; + + public basicSectionBorderColorAccordation1 = false; + public basicSectionBorderColorAccordation2 = false; + public basicSectionBorderColorAccordation3 = false; + public basicSectionBorderColorAccordation4 = false; + + public basicCollapse1 = false; + public basicCollapse2 = false; + public basicCollapse3 = false; + public basicCollapse4 = false; + + public rightAlignCollapse1 = false; + public rightAlignCollapse2 = false; + public rightAlignCollapse3 = false; + public rightAlignCollapse4 = false; + + public rightIconCollapse1 = false; + public rightIconCollapse2 = false; + public rightIconCollapse3 = false; + public rightIconCollapse4 = false; + + public leftIconCollapse1 = false; + public leftIconCollapse2 = false; + public leftIconCollapse3 = false; + public leftIconCollapse4 = false; + + public basicColorCollapse1 = false; + public basicColorCollapse2 = false; + public basicColorCollapse3 = false; + public basicColorCollapse4 = false; + + public basicColorBorderCollapse1 = false; + public basicColorBorderCollapse2 = false; + public basicColorBorderCollapse3 = false; + public basicColorBorderCollapse4 = false; + + public basicBorderColorCollapse1 = false; + public basicBorderColorCollapse2 = false; + public basicBorderColorCollapse3 = false; + public basicBorderColorCollapse4 = false; + + public basicSectionBorderColorCollapse1 = false; + public basicSectionBorderColorCollapse2 = false; + public basicSectionBorderColorCollapse3 = false; + public basicSectionBorderColorCollapse4 = false; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Collapse', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Collapse', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/ngbbootstrap/components.module.spec.ts b/src/app/content/ngbbootstrap/components.module.spec.ts new file mode 100644 index 0000000..6f2deef --- /dev/null +++ b/src/app/content/ngbbootstrap/components.module.spec.ts @@ -0,0 +1,13 @@ +import { ComponentsModule } from './components.module'; + +describe('ComponentsModule', () => { + let componentsModule: ComponentsModule; + + beforeEach(() => { + componentsModule = new ComponentsModule(); + }); + + it('should create an instance', () => { + expect(componentsModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/components.module.ts b/src/app/content/ngbbootstrap/components.module.ts new file mode 100644 index 0000000..086edea --- /dev/null +++ b/src/app/content/ngbbootstrap/components.module.ts @@ -0,0 +1,136 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { AlertsComponent } from './alerts/alerts.component'; +import { RouterModule } from '@angular/router'; +import { CalloutComponent } from './callout/callout.component'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { UiSwitchModule } from 'ngx-ui-switch'; +import { BasicButtonsComponent } from './basic-buttons/basic-buttons.component'; +import { ExtendedButtonsComponent } from './extended-buttons/extended-buttons.component'; +import { TooltipsComponent } from './tooltips/tooltips.component'; +import { DropdownsComponent } from './dropdowns/dropdowns.component'; +import { ListGroupComponent } from './list-group/list-group.component'; +import { PopoversComponent } from './popovers/popovers.component'; +import { CarouselComponent } from './carousel/carousel.component'; +import { CollapseComponent } from './collapse/collapse.component'; +import { BadgesComponent } from './badges/badges.component'; +import { MediaobjectsComponent } from './mediaobjects/mediaobjects.component'; +import { SpinnersComponent } from './spinners/spinners.component'; +import { PaginationComponent } from './pagination/pagination.component'; +import { PillsComponent } from './pills/pills.component'; +import { ModalsComponent } from './modals/modals.component'; +import { ProgressComponent } from './progress/progress.component'; +import { PillBadgesComponent } from './pill-badges/pill-badges.component'; +import { ScrollableComponent } from './scrollable/scrollable.component'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { NavsComponent } from './navs/navs.component'; +import { CardModule } from '../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; +import { MatchHeightModule } from '../partials/general/match-height/match-height.module'; + +@NgModule({ + imports: [ + CommonModule, + NgbModule, + CardModule, + MatchHeightModule, + BreadcrumbModule, + PerfectScrollbarModule, + UiSwitchModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'alerts', + component: AlertsComponent + }, + { + path: 'callout', + component: CalloutComponent + }, + { + path: 'basic-buttons', + component: BasicButtonsComponent + }, + { + path: 'extended-buttons', + component: ExtendedButtonsComponent + }, + { + path: 'tooltips', + component: TooltipsComponent + }, + { + path: 'dropdowns', + component: DropdownsComponent + }, + { + path: 'list-group', + component: ListGroupComponent + }, + { + path: 'popovers', + component: PopoversComponent + }, + { + path: 'carousel', + component: CarouselComponent + }, + { + path: 'collapse', + component: CollapseComponent + }, + { + path: 'modals', + component: ModalsComponent + }, + { + path: 'progress', + component: ProgressComponent + }, + { + path: 'pill-badges', + component: PillBadgesComponent + }, + { + path: 'scrollable', + component: ScrollableComponent + }, + { + path: 'navs', + component: NavsComponent + }, + { + path: 'badges', + component: BadgesComponent + }, + { + path: 'mediaobjects', + component: MediaobjectsComponent + }, + { + path: 'spinners', + component: SpinnersComponent + }, + { + path: 'pagination', + component: PaginationComponent + }, + { + path: 'pills', + component: PillsComponent + } + ]) + ], + declarations: [AlertsComponent, CalloutComponent, BasicButtonsComponent, + ExtendedButtonsComponent, TooltipsComponent, DropdownsComponent, ListGroupComponent, + PopoversComponent, CarouselComponent, CollapseComponent, ModalsComponent, + ProgressComponent, PillBadgesComponent, ScrollableComponent, + NavsComponent, BadgesComponent, MediaobjectsComponent, SpinnersComponent, + PaginationComponent, PillsComponent], + exports: [RouterModule] +}) +export class ComponentsModule { } diff --git a/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.css b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.css new file mode 100644 index 0000000..6be93d8 --- /dev/null +++ b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.css @@ -0,0 +1,5 @@ +@media only screen and (max-width:767px) { + ._left { + left: calc(100% - 120px) !important; + } +} diff --git a/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.html b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.html new file mode 100644 index 0000000..bf7b7b8 --- /dev/null +++ b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.html @@ -0,0 +1,767 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Basic Dropdown

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

Dropdown with divider

+
+ +
+
+
+
+
+

With Disabled Menu

+
+ +
+
+
+
+
+

With active state

+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ diff --git a/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.spec.ts b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.spec.ts new file mode 100644 index 0000000..d59ea39 --- /dev/null +++ b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { DropdownsComponent } from './dropdowns.component'; + +describe('DropdownsComponent', () => { + let component: DropdownsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ DropdownsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DropdownsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.ts b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.ts new file mode 100644 index 0000000..392bd28 --- /dev/null +++ b/src/app/content/ngbbootstrap/dropdowns/dropdowns.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dropdowns', + templateUrl: './dropdowns.component.html', + styleUrls: ['./dropdowns.component.css'] +}) +export class DropdownsComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Dropdowns', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Dropdowns', + 'isLink': false + } + ] + }; + } + + +} diff --git a/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.css b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.css new file mode 100644 index 0000000..41da42e --- /dev/null +++ b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.css @@ -0,0 +1,8 @@ +:host ::ng-deep .gap_fl_btn { + margin: 0 0.3rem; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + diff --git a/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.html b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.html new file mode 100644 index 0000000..4e2c39a --- /dev/null +++ b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.html @@ -0,0 +1,611 @@ +
+
+
+ +
+
+ +
+
+
+

Floating Buttons

+

Floating action buttons are used for a special type of promoted action. They are distinguished by a + circled icon floating above the UI and have special motion behaviors related to morphing, launching, and + the transferring anchor point.

+

Use the class .btn along with class .btn-float.

+
+
+
+
+ + + Floating Buttons + + +
+
+
+ + + + +
+
+
+ +
+
+
+ + + + +
+
+
+
+
+
+
+
+ + + + + +
+
+
+ + + Floating Outline Buttons + + +
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
+
+
+
+ + + + + +
+
+
+

Social Buttons for Bootstrap

+

Buttons with built-in loading indicators, effectively bridging the gap between action and feedback.

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

Social Media Buttons Size

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

Social Media Outline Buttons Size

+
+
+
+ +
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.spec.ts b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.spec.ts new file mode 100644 index 0000000..46ee4ee --- /dev/null +++ b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ExtendedButtonsComponent } from './extended-buttons.component'; + +describe('ExtendedButtonsComponent', () => { + let component: ExtendedButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ExtendedButtonsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ExtendedButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.ts b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.ts new file mode 100644 index 0000000..e3b6a8f --- /dev/null +++ b/src/app/content/ngbbootstrap/extended-buttons/extended-buttons.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-extended-buttons', + templateUrl: './extended-buttons.component.html', + styleUrls: ['./extended-buttons.component.css'] +}) +export class ExtendedButtonsComponent implements OnInit { + + @BlockUI('floatingButtons') blockUIFloatingButtons: NgBlockUI; + @BlockUI('floatingOutlineButtons') blockUIFloatingOutlineButtons: NgBlockUI; + + public breadcrumb: any; + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Buttons Extended', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Buttons Extended', + 'isLink': false + } + ] + }; + } + + reloadFloatingButtons() { + this.blockUIFloatingButtons.start('Loading..'); + + setTimeout(() => { + this.blockUIFloatingButtons.stop(); + }, 2500); + } + reloadFloatingOutlineButtons() { + this.blockUIFloatingOutlineButtons.start('Loading..'); + + setTimeout(() => { + this.blockUIFloatingOutlineButtons.stop(); + }, 2500); + } + + +} diff --git a/src/app/content/ngbbootstrap/list-group/list-group.component.css b/src/app/content/ngbbootstrap/list-group/list-group.component.css new file mode 100644 index 0000000..60c8273 --- /dev/null +++ b/src/app/content/ngbbootstrap/list-group/list-group.component.css @@ -0,0 +1,9 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .list-group-item { + margin-bottom: 0px !important; +} +:host ::ng-deep hr { + height: 0px !important; +} \ No newline at end of file diff --git a/src/app/content/ngbbootstrap/list-group/list-group.component.html b/src/app/content/ngbbootstrap/list-group/list-group.component.html new file mode 100644 index 0000000..ee416a4 --- /dev/null +++ b/src/app/content/ngbbootstrap/list-group/list-group.component.html @@ -0,0 +1,533 @@ +
+
+
+ +
+
+ +
+
+
+ + + Simple ListGroup + + +

The most basic list group is simply an unordered list with list items, and the proper classes. + Build upon it with the options that follow, or your own CSS as needed.

+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
+
+
+
+
+ + + Disabled items + + +

Add .disabled to a .list-group-item to gray it out to appear disabled.

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

With Labels and Badges

+
+
+
+ + + Badges + + +

Add bagdes to any list group item to show unread counts, activity, etc.

+
    +
  • + 5 + Cras justo odio +
  • +
  • + 2 + Dapibus ac facilisis in +
  • +
  • + 1 + Morbi leo risus +
  • +
+
+
+
+
+ + + Labels + + +

Add labels to any list group item to show notifications, message,etc.

+
    +
  • + Warning + Cras justo odio +
  • +
  • + info + Dapibus ac facilisis in +
  • +
  • + danger + Morbi leo risus +
  • +
+
+
+
+
+
+
+
+ + + +
+
+
+

With Icons

+

Left Icons and Right Icons need icon class before and after text of list group.

+
+
+
+
+
+
+

Left Icons

+
+
+
+
    +
  • + + + + Cras justo odio +
  • +
  • + + + + Dapibus ac facilisis in +
  • +
  • + + + + Morbi leo risus +
  • +
+
+
+
+
+ +
+
+
+

Right Icons

+
+
+
+
    +
  • + + + + Cras justo odio +
  • +
  • + + + + Dapibus ac facilisis in +
  • +
  • + + + + Morbi leo risus +
  • +
+
+
+
+
+
+
+ + + + + +
+
+
+

With Background Color Option

+

Use class .bg-COLOR for background color.

+
+
+
+
+
+
+

Blue Grey Background Color

+
+
+
+
    +
  • + Cras justo odio +
  • +
  • + Dapibus ac facilisis in +
  • +
  • + Morbi leo risus +
  • +
+
+
+
+
+
+
+
+

Grey Background with Right Icons

+
+
+
+
    +
  • + + + + Cras justo odio +
  • +
  • + + + + Dapibus ac facilisis in +
  • +
  • + + + + Morbi leo risus +
  • +
+
+
+
+
+
+
+ + + + + +
+
+
+

Anchors and buttons

+

Use anchors or buttons to create actionable list group items with hover, disabled, and active states by + adding .list-group-item-action. This separate class contains a few overrides to add compatibility for + <a>s and <button>s, as well as the hover and focus states.

+
Be sure to not use the standard .btn + classes here.
+
+
+
+ +
+
+
+

Buttons

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

Custom ListGroups

+
+
+ +
+ + + +
+
+
+

ListGroups with Media

+
+
+
+ +
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/list-group/list-group.component.spec.ts b/src/app/content/ngbbootstrap/list-group/list-group.component.spec.ts new file mode 100644 index 0000000..e6658af --- /dev/null +++ b/src/app/content/ngbbootstrap/list-group/list-group.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ListGroupComponent } from './list-group.component'; + +describe('ListGroupComponent', () => { + let component: ListGroupComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ListGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/list-group/list-group.component.ts b/src/app/content/ngbbootstrap/list-group/list-group.component.ts new file mode 100644 index 0000000..bc5fd0f --- /dev/null +++ b/src/app/content/ngbbootstrap/list-group/list-group.component.ts @@ -0,0 +1,80 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-list-group', + templateUrl: './list-group.component.html', + styleUrls: ['./list-group.component.css'] +}) +export class ListGroupComponent implements OnInit { + + @BlockUI('simpleListGroup') blockUISimpleListGroup: NgBlockUI; + @BlockUI('disabledItems') blockUIDisabledItems: NgBlockUI; + @BlockUI('badges') blockUIBadges: NgBlockUI; + @BlockUI('labels') blockUILabels: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'List Group', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'List Group', + 'isLink': false + } + ] + }; + } + + reloadSimpleListGroup() { + this.blockUISimpleListGroup.start('Loading..'); + + setTimeout(() => { + this.blockUISimpleListGroup.stop(); + }, 2500); + } + + reloadDisabledItems() { + this.blockUIDisabledItems.start('Loading..'); + + setTimeout(() => { + this.blockUIDisabledItems.stop(); + }, 2500); + } + + reloadBadges() { + this.blockUIBadges.start('Loading..'); + + setTimeout(() => { + this.blockUIBadges.stop(); + }, 2500); + } + + reloadLabels() { + this.blockUILabels.start('Loading..'); + + setTimeout(() => { + this.blockUILabels.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.css b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.html b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.html new file mode 100644 index 0000000..6f282b0 --- /dev/null +++ b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.html @@ -0,0 +1,2735 @@ +
+
+
+ +
+
+ +
+
+
+

Default Media Object

+

The default media allow to float a media object (images, video, audio) to the left or right of a content + block.

+
+
+
+
+ + + Left Aligned Media Objects + + +
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+ + + Left Media With Right Text + + +
+
+ + Generic placeholder image + +
+

Oat cake

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+

Jelly chocolate cake

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+

Pudding marshmallow

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+

Right Aligned Media Objects

+
+
+
+
+
+
+

Chocolate sweet

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+ + Generic placeholder image + +
+
+
+

Sugar plum jelly

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+ + Generic placeholder image + +
+
+
+

Gingerbread sugar

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+
+

Right Media With Right Text

+
+
+
+
+
+
+

Chupa chups candy

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Chocolate pudding

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+
+

Cotton candy jelly

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Bordered Media Object

+

Wrap media list using .media-bordered class for bordered Media Object.

+
+
+
+
+
+
+

Left Aligned Media Bordered

+
+
+
+
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Bordered Media

+
+
+
+
+
+
+

Chupa chups candy

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Chocolate pudding

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+
+

Cotton candy jelly

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Media Object with Header

+

Use class .media-head inside .media class.

+
+
+
+
+
+
+

Media with Header

+
+
+
+
+
+

Header Section

+
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+

Another Header Section

+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Media With Header

+
+
+
+
+
+

Header Section

+
+
+
+

Chupa chups candy

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Chocolate pudding

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+

Another Header Section

+
+
+
+

Cotton candy jelly

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Round Media Object

+

Add .rounded-circle class to image for round media object.

+
+
+
+
+
+
+

Left Round Media Objects

+
+
+
+
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Right Round Media

+
+
+
+
+
+
+

Oat cake

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Jelly chocolate cake

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+
+

Pudding marshmallow

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Bordered Round Media Object

+

Wrap media list using .media-bordered class for bordered Media Object.

+
+
+
+
+
+
+

Bordered Round Media Objects

+
+
+
+
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Bordered Round Media With Right Align

+
+
+
+
+
+
+

Oat cake

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Jelly chocolate cake

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+
+

Pudding marshmallow

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Round Media Object with Header

+

Use class .media-head inside .media class.

+
+
+
+
+
+
+

Round Media with Header

+
+
+
+
+
+

Header Section

+
+
+ + Generic placeholder image + +
+

Cookie candy

+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+

Tootsie roll dessert

+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+

Another Header

+
+
+ + Generic placeholder image + +
+

Lemon drops ice cream

+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Right Header

+
+
+
+
+
+

Heading Section

+
+
+
+

Oat cake

+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Generic placeholder image + +
+
+
+

Jelly chocolate cake

+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + Generic placeholder image + +
+
+

Another Heading

+
+
+
+

Pudding marshmallow

+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Media Title Options

+

Find different options for media title.

+
+
+
+
+
+
+

Simple Title

+
+
+
+
+
+ + Generic placeholder image + +
+
Cookie candy
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
Tootsie roll dessert
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
Lemon drops ice cream
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Simple Title

+
+
+
+
+
+ + Generic placeholder image + +
+
Oat cake
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
Jelly chocolate cake
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
Pudding marshmallow
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Linked Title

+
+
+
+
+
+ + Generic placeholder image + +
+ + Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+ + Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+ + Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Linked Title

+
+
+
+
+
+ + Generic placeholder image + +
+ + Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+ + Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+ + Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Title Using Headings

+
+
+
+
+
+ + Generic placeholder image + +
+
Cookie candy
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
Tootsie roll dessert
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
Lemon drops ice cream
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Headings

+
+
+
+
+
+ + Generic placeholder image + +
+
Oat cake
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
Jelly chocolate cake
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
Pudding marshmallow
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Linked Headings

+
+
+
+
+
+ + Generic placeholder image + +
+
Cookie candy
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
Tootsie roll dessert
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
Lemon drops ice cream
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Linked Headings

+
+
+
+
+
+ + Generic placeholder image + +
+
Oat cake
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
Jelly chocolate cake
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
Pudding marshmallow
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Colored Title

+
+
+
+
+
+ + Generic placeholder image + +
+
Cookie candy
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
Tootsie roll dessert
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
Lemon drops ice cream
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Colored Title

+
+
+
+
+
+ + Generic placeholder image + +
+
Oat cake
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
Jelly chocolate cake
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
Pudding marshmallow
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+

Media Text Option

+

Use class .text-muted for muted media text.

+
+
+
+
+
+
+

Muted Text

+
+
+
+
+
+ + Generic placeholder image + +
+
Cookie candy
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake + wafer bonbon gummi bears apple pie. Brownie lemon drops chocolate cake donut croissant cotton + candy. +
+
+
+ + Generic placeholder image + +
+
Tootsie roll dessert
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. + Jelly jelly-o bear claw bear claw halvah. Biscuit icing pastry tootsie roll gingerbread + croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
Lemon drops ice cream
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears + cotton candy cheesecake tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Round Media With Muted Text

+
+
+
+
+
+ + Generic placeholder image + +
+
Oat cake
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. + Candy sweet cake. Tiramisu cookie toffee donut. Chocolate pie croissant gummi bears muffin + dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
Jelly chocolate cake
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o + biscuit. Fruitcake jelly beans marzipan sesame snaps.Jelly beans cake chocolate cake gummi + bears lollipop. +
+
+
+ + Generic placeholder image + +
+
Pudding marshmallow
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear + claw ice cream sugar plum biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+

Linked Media List

+

Wrap .media with .media-linked and use <a> tag which + contains .media-link to wrap image, title & text.

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

Media Alignment

+

The images or other media can be aligned top, middle, or bottom. The default is top aligned.

+

For left align, use class .media-left, For Right align, use class .media-right. +

+

Now, for vertical alignment. For Top alignment, use .align-self-start class. For Middle + alignment, use .align-self-center and For Bottom alignment, use .align-self-end + with left or right aligned class.

+
+
+
+
+
+
+

Media Aligned Left

+
+
+
+
+
+ + Generic placeholder image + +
+
Top Aligned Media
+ Chocolate bar apple pie lollipop pastry candy canes. Candy soufflé brownie toffee tootsie roll. + Brownie lemon drops chocolate cake donut croissant cotton candy ice cream.
+ Chocolate pudding jelly beans powder carrot cake pastry. Sweet candy dragée cake brownie + cheesecake jelly beans tart lemon drops. Liquorice cake fruitcake dragée sesame snaps candy + canes biscuit pastry.
+ Cookie caramels brownie carrot cake macaroon brownie pastry. Donut powder croissant tootsie roll + cake cupcake. Cake tart icing jelly-o ice cream tootsie roll bear claw toffee brownie. Sugar + plum danish muffin gummi bears. +
+
+
+ + Generic placeholder image + +
+
Middle Aligned Media
+ Dragée topping chocolate dragée icing gingerbread. Ice cream jujubes pie sweet roll sweet roll + marshmallow powder. Cotton candy dessert apple pie chocolate cake dessert lemon drops topping + gingerbread biscuit.
+ Sugar plum tootsie roll sweet gummi bears soufflé cake gummies lollipop jelly beans. Gummies + sugar plum apple pie apple pie cake bear claw. Jelly beans gingerbread biscuit lollipop.
+ Topping halvah wafer croissant jelly tootsie roll. Candy jujubes gummi bears sweet roll dessert. + Apple pie jelly gummies tiramisu macaroon tiramisu oat cake. Apple pie tiramisu cake chocolate + cake topping danish sweet apple pie sugar plum. +
+
+
+ + Generic placeholder image + +
+
Bottom Aligned Media
+ Sweet sesame snaps dragée chocolate tiramisu cotton candy sweet roll bonbon dessert. Chocolate + cake tiramisu dragée. Carrot cake pudding marshmallow fruitcake carrot cake.
+ Cotton candy pastry chocolate bar. Apple pie sesame snaps macaroon muffin cookie toffee bonbon + gummies candy canes. Soufflé chocolate bar soufflé tart fruitcake muffin. Macaroon sweet roll + apple pie jelly beans powder pudding.
+ Brownie cupcake bonbon sweet lemon drops. Lollipop danish jelly beans cotton candy marshmallow + brownie. Brownie pastry tiramisu candy oat cake tiramisu halvah cookie tart. Cotton candy danish + gingerbread powder liquorice. +
+
+
+
+
+
+
+
+
+
+

Right Aligned Media

+
+
+
+
+
+
+
Top Aligned Media
+ Gummi bears marshmallow sweet roll. Chocolate bar halvah candy tart tart chocolate tart muffin. + Cheesecake chocolate bar gummi bears. Cookie topping chocolate biscuit jujubes.
+ Cheesecake muffin danish candy chocolate sweet roll candy jelly powder. Chocolate marzipan + dragée. Biscuit oat cake jelly beans brownie donut ice cream biscuit. Soufflé soufflé dessert + cotton candy chupa chups lemon drops.
+ Tiramisu jujubes powder jujubes pie cheesecake liquorice lollipop lollipop. Cheesecake muffin + liquorice. Soufflé caramels cupcake. Dessert cake chocolate bar gummi bears marshmallow bonbon + halvah cake. +
+ + Generic placeholder image + +
+
+
+
Middle Aligned Media
+ Powder jelly topping pastry chocolate icing bonbon powder. Lollipop brownie sugar plum sugar + plum carrot cake donut. Pastry sugar plum apple pie sesame snaps.
+ Tart brownie gummi bears pie cheesecake cake. Tootsie roll lemon drops oat cake muffin danish + halvah cookie chocolate croissant. Apple pie oat cake liquorice sesame snaps. Jelly-o jelly-o + dragée topping. Sugar plum danish muffin gummi bears.
+ Biscuit halvah tiramisu tiramisu. Chocolate lemon drops cake halvah gingerbread topping. Oat + cake gummies cheesecake halvah marshmallow jelly beans apple pie gingerbread. Dessert cookie + chocolate cake. +
+ + Generic placeholder image + +
+
+
+
Bottom Aligned Media
+ Ice cream lemon drops marshmallow sweet carrot cake marshmallow candy macaroon cupcake. Tart + carrot cake fruitcake. Marzipan liquorice gummies oat cake.
+ Danish jelly beans dessert sweet roll chupa chups candy canes gummies jujubes soufflé. + Cheesecake sweet roll candy muffin halvah dessert candy soufflé. Donut cupcake caramels + pastry.Candy carrot cake liquorice chocolate bar gummi bears brownie donut.
+ Bonbon sweet roll croissant candy canes sesame snaps chocolate cake jujubes cookie. Caramels + gummi bears fruitcake jelly beans gummies candy canes. Sugar plum fruitcake tootsie roll pastry + chupa chups. Marshmallow marshmallow carrot cake gingerbread tart tootsie roll macaroon cookie + topping. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Nested Media List

+

With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists). +

+
+
+
+
+
+
+

Media Aligned Left

+
+
+
+
+
+ + Generic placeholder image + +
+
Cotton candy
+ Cookie caramels brownie carrot cake macaroon brownie pastry. Donut powder croissant tootsie roll + cake cupcake. Cake tart icing jelly-o ice cream tootsie roll bear claw toffee brownie. +
+ + Generic placeholder image + +
+
Chupa chups cookie
+ Dragée topping chocolate dragée icing gingerbread. Ice cream jujubes pie sweet roll sweet + roll marshmallow powder. Cotton candy dessert apple pie chocolate cake dessert lemon drops + topping +
+ + Generic placeholder image + +
+
Marshmallow cake
+ Sweet sesame snaps dragée chocolate tiramisu cotton candy sweet roll bonbon dessert. + Chocolate cake tiramisu dragée. Carrot cake pudding marshmallow gingerbread powder + liquorice. +
+
+
+
+
+
+
+ + Generic placeholder image + +
+
Fruitcake soufflé
+ Brownie jujubes caramels candy canes soufflé chocolate cake. Sesame snaps chocolate bar donut + topping cake halvah chocolate bar pie. Jelly jelly-o brownie jujubes pastry pastry gummies. +
+
+
+
+
+
+
+
+
+
+

Right Aligned Media

+
+
+
+
+
+
+
Bonbon sweet roll
+ Gummi bears marshmallow sweet roll. Chocolate bar halvah candy tart tart chocolate tart muffin. + Cheesecake chocolate bar gummi bears. Cookie topping chocolate biscuit jujubes. +
+
+
Sweet roll tootsie
+ Tart brownie gummi bears pie cheesecake cake. Tootsie roll lemon drops oat cake muffin + danish halvah cookie chocolate croissant. Apple pie oat cake liquorice sesame snaps. Jelly-o + dragée topping. +
+
+
Pie marzipan
+ Ice cream lemon drops marshmallow sweet carrot cake marshmallow candy macaroon cupcake. + Tart carrot cake fruitcake. Marzipan liquorice gummies oat cake. Donut cupcake caramels + pastry. +
+ + Generic placeholder image + +
+
+ + Generic placeholder image + +
+
+ + Generic placeholder image + +
+
+
+
Cupcake bonbon
+ Fruitcake donut chocolate bar. Jelly beans cake cotton candy cotton candy jelly beans bonbon + halvah. Marzipan lemon drops oat cake candy canes jelly cake powder sweet roll. +
+ + Generic placeholder image + +
+
+
+
+
+
+
+
+ + + + +
+
+
+

Media Object with Notation Text

+

Add some custom text to media body. This text can be date, time, any short info, notification, etc.

+
+
+
+
+
+
+

Left Inline With Title

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Cookie candy + 2 weeks ago +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
+ Tootsie roll dessert + Yesterday, 12:00 pm +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
+ Lemon drops ice cream + 2 days ago +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Notation Text in Right

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Oat cake + 1 week ago, 6:20 pm +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
+ Jelly chocolate cake + 3 hours ago +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
+ Pudding marshmallow + Yesterday, 11:10 am +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Notation Text Below Title

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Cookie candy +
+
+ 3 days ago | 11 comments +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
+ Tootsie roll dessert +
+
+ Yesterday, 10:00 am | 3 comments +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
+ Lemon drops ice cream +
+
+ 2 days ago | 1 comment +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

Notation Text after Text

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Oat cake +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + Updated Version +
+
+
+
+ + Generic placeholder image + +
+
+ Jelly chocolate cake +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + From New York | 1 day ago +
+
+
+
+ + Generic placeholder image + +
+
+ Pudding marshmallow +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + + 2 Unread mails +
+
+
+
+
+
+
+
+
+
+
+
+
+

Notation Link Text

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Cookie candy +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. + +
+
+
+ + Generic placeholder image + +
+
+ Tootsie roll dessert +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. + +
+
+
+ + Generic placeholder image + +
+
+ Lemon drops ice cream +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. + +
+
+
+
+
+
+
+
+
+
+

Notation Icon Links

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Oat cake +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. + +
+
+
+ + Generic placeholder image + +
+
+ Jelly chocolate cake +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. + +
+
+
+ + Generic placeholder image + +
+
+ Pudding marshmallow +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+

More Examples

+

Some more examples using media objects to know how to use it.

+
+
+
+
+
+
+

With Labels

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Cookie candy + CEO +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + +
+
+ Tootsie roll dessert + Bug Reporter +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + +
+
+ Lemon drops ice cream + Director +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

With Badges

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Oat cake + 68 +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + +
+
+ Jelly chocolate cake + 28 +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + +
+
+ Pudding marshmallow + 33 +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+
+
+
+
+
+
+
+
+
+

Labeled Icon

+
+
+
+
+
+ + + + + +
+
+ Cookie candy +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + + + + +
+
+ Tootsie roll dessert +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + + + + +
+
+ Lemon drops ice cream +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

With Dropdown, Icon, Icon List

+
+
+
+
+
+ + Generic placeholder image + +
+
+ Oat cake +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+ + + + + +
+
+ + Generic placeholder image + +
+
+ Jelly chocolate cake +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+ + + + + +
+
+ + Generic placeholder image + +
+
+ Pudding marshmallow +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+ + + + + +
+
+
+
+
+
+
+
+
+
+
+

Status Indicator

+
+
+
+
+
+ + Generic placeholder image + + +
+
+ Cookie candy +
+ Cookie candy dragée marzipan gingerbread pie pudding. Brownie fruitcake wafer bonbon gummi bears + apple pie. Brownie lemon drops chocolate cake donut croissant cotton candy. +
+
+
+ + Generic placeholder image + + +
+
+ Tootsie roll dessert +
+ Tootsie roll dessert tart candy canes ice cream gingerbread cookie. Jelly jelly-o bear claw bear + claw halvah. Biscuit icing pastry tootsie roll gingerbread croissant chupa chups. +
+
+
+ + Generic placeholder image + + +
+
+ Icing brownie pudding +
+ Tiramisu ice cream gummies jelly beans. Fruitcake sugar plum sesame snaps bonbon pudding soufflé + powder. Jelly beans gummies candy cotton candy gummi bears jelly beans. +
+
+
+ + Generic placeholder image + + +
+
+ Lemon drops ice cream +
+ Lemon drops ice cream chocolate cake marzipan ice cream. Gummi bears cotton candy cheesecake + tootsie roll. Candy sweet cake. Tiramisu cookie toffee donut. +
+
+
+
+
+
+
+
+
+
+

With Notification

+
+
+
+
+
+ + Generic placeholder image + 6 + +
+
+ Oat cake +
+ Oat cake topping oat cake jelly soufflé donut jelly-o tootsie roll. Candy sweet cake. Tiramisu + cookie toffee donut. Chocolate pie croissant gummi bears muffin dessert chocolate. +
+
+
+ + Generic placeholder image + 9 + +
+
+ Jelly chocolate cake +
+ Jelly chocolate cake lemon drops halvah dragée caramels jelly-o biscuit. Fruitcake jelly beans + marzipan sesame snaps.Jelly beans cake chocolate cake gummi bears lollipop. +
+
+
+ + Generic placeholder image + 3 + +
+
+ Pudding marshmallow +
+ Pudding marshmallow cheesecake. Chocolate cake apple pie jelly-o bear claw ice cream sugar plum + biscuit. Lemon drops brownie biscuit jelly-o biscuit gummies. +
+
+
+ + Generic placeholder image + 7 + +
+
+ Sweet marzipan +
+ Bonbon cake tiramisu topping toffee candy canes. Sweet marzipan sugar plum chocolate caramels + liquorice. Gummi bears toffee liquorice. Chocolate muffin fruitcake. +
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.spec.ts b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.spec.ts new file mode 100644 index 0000000..b3a5a1b --- /dev/null +++ b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { MediaobjectsComponent } from './mediaobjects.component'; + +describe('MediaobjectsComponent', () => { + let component: MediaobjectsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ MediaobjectsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MediaobjectsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.ts b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.ts new file mode 100644 index 0000000..0194876 --- /dev/null +++ b/src/app/content/ngbbootstrap/mediaobjects/mediaobjects.component.ts @@ -0,0 +1,62 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-mediaobjects', + templateUrl: './mediaobjects.component.html', + styleUrls: ['./mediaobjects.component.css'] +}) + +export class MediaobjectsComponent implements OnInit { + + @BlockUI('leftAlignedMediaObjects') blockUILeftAlignedMediaObjects: NgBlockUI; + @BlockUI('leftMediaWithRightText') blockUILeftMediaWithRightText: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Media Objects', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Media Objects', + 'isLink': false + } + ] + }; + } + + reloadLeftAlignedMediaObjects() { + this.blockUILeftAlignedMediaObjects.start('Loading..'); + + setTimeout(() => { + this.blockUILeftAlignedMediaObjects.stop(); + }, 2500); + } + + reloadLeftMediaWithRightText() { + this.blockUILeftMediaWithRightText.start('Loading..'); + setTimeout(() => { + this.blockUILeftMediaWithRightText.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/modals/modals.component.css b/src/app/content/ngbbootstrap/modals/modals.component.css new file mode 100644 index 0000000..2b9be4c --- /dev/null +++ b/src/app/content/ngbbootstrap/modals/modals.component.css @@ -0,0 +1,10 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + outline: none !important; +} +::ng-deep ngb-modal-backdrop { + z-index: 1050 !important; +} diff --git a/src/app/content/ngbbootstrap/modals/modals.component.html b/src/app/content/ngbbootstrap/modals/modals.component.html new file mode 100644 index 0000000..0c88e26 --- /dev/null +++ b/src/app/content/ngbbootstrap/modals/modals.component.html @@ -0,0 +1,3197 @@ +
+
+
+ +
+
+ +
+
+
+ + + Basic Modals + + +
+
+
+
Default Modal
+

Toggle a modal via ng-bootstrap by clicking the button above.

+ + + + + + + + + +
+
+
+
+
Modal With Icons
+

With some icons and success alert to give success message.

+ + + + + + + + + +
+
+
+
+
Disable Keyboard
+

By Default, closes the modal when escape key is pressed. Disable keyboard + interaction using keyboard: false.

+ + + + + + + + + +
+
+
+
+
Disable Backdrop
+

Disable backdrop element using backdrop: 'static', it includes a modal-backdrop + element. + Alternatively, + specify static for a backdrop which doesn't close the modal on click.

+ + + + + + + + + +
+
+
+
+
Modal Show
+

Manually opens a modal. Returns to the caller before the modal has actually been + shown.

+ + + + + + + + + +
+
+
+
+
Disable Animation
+

For modals that simply appear rather than fade in to view, set windowClass:"" + in modal config.

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

Form Components

+
+
+
+
+
+
+
Login Form
+

Created Simple Login Form.

+ + + + + + + +
+
+
+
+
Form with Icons
+

Login Form With Icon.

+ + + + + + + +
+
+
+
+
Bootstrap Input Style Form
+

Bootstrap Form using Floating Label fields.

+ + + + + + + +
+
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ diff --git a/src/app/content/ngbbootstrap/modals/modals.component.spec.ts b/src/app/content/ngbbootstrap/modals/modals.component.spec.ts new file mode 100644 index 0000000..82c8ffb --- /dev/null +++ b/src/app/content/ngbbootstrap/modals/modals.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ModalsComponent } from './modals.component'; + +describe('ModalsComponent', () => { + let component: ModalsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ModalsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ModalsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/modals/modals.component.ts b/src/app/content/ngbbootstrap/modals/modals.component.ts new file mode 100644 index 0000000..f5e7d77 --- /dev/null +++ b/src/app/content/ngbbootstrap/modals/modals.component.ts @@ -0,0 +1,266 @@ +import { Component, OnInit } from '@angular/core'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-modals', + templateUrl: './modals.component.html', + styleUrls: ['./modals.component.css'] +}) +export class ModalsComponent implements OnInit { + + @BlockUI('basicModals') blockUIBasicModals: NgBlockUI; + @BlockUI('modalThemes') blockUIModalThemes: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor(private modalService: NgbModal) { + } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Modal', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Modal', + 'isLink': false + } + ] + }; + } + + openDefaultModel(DefaultModelContent) { + this.modalService.open(DefaultModelContent, { windowClass: 'animated fadeInDown' }); + } + openModelIcon(modalIconContent) { + this.modalService.open(modalIconContent, { windowClass: 'animated fadeInDown' }); + } + openDisableKeyboard(disableKeyboardContent) { + this.modalService.open(disableKeyboardContent, { windowClass: 'animated fadeInDown', keyboard: false }); + } + openDisableBackDrop(DisableBackDropContent) { + this.modalService.open(DisableBackDropContent, { windowClass: 'animated fadeInDown', backdrop: 'static' }); + } + OpenShowModel(OpenShowModelContent) { + this.modalService.open(OpenShowModelContent, { windowClass: 'animated fadeInDown' }); + } + OpenDisableAnimation(DisableAnimationContent) { + this.modalService.open(DisableAnimationContent); + } + PrimaryModel(PrimaryModelContent) { + this.modalService.open(PrimaryModelContent, { windowClass: 'animated fadeInDown' }); + } + SuccessModel(SuccessModelContent) { + this.modalService.open(SuccessModelContent, { windowClass: 'animated fadeInDown' }); + } + DangerModel(DangerModelContent) { + this.modalService.open(DangerModelContent, { windowClass: 'animated fadeInDown' }); + } + InfoModel(InfoModelContent) { + this.modalService.open(InfoModelContent, { windowClass: 'animated fadeInDown' }); + } + WarningModel(WarningModelContent) { + this.modalService.open(WarningModelContent, { windowClass: 'animated fadeInDown' }); + } + BorderModel(BorderModelContent) { + this.modalService.open(BorderModelContent, { windowClass: 'animated fadeInDown' }); + } + SmallModel(SmallModelContent) { + this.modalService.open(SmallModelContent, { windowClass: 'animated fadeInDown', size: 'sm' }); + } + DefaultSizeModel(DefaultSizeModelContent) { + this.modalService.open(DefaultSizeModelContent, { windowClass: 'animated fadeInDown' }); + } + LargeModel(LargeModelContent) { + this.modalService.open(LargeModelContent, { windowClass: 'animated fadeInDown', size: 'lg' }); + } + openDefaultHeadingModel(DefaultHeadingModelContent) { + this.modalService.open(DefaultHeadingModelContent, { windowClass: 'animated fadeInDown' }); + } + openSubtitleModel(SubtitleModelContent) { + this.modalService.open(SubtitleModelContent, { windowClass: 'animated fadeInDown' }); + } + openH1Model(H1ModelContent) { + this.modalService.open(H1ModelContent, { windowClass: 'animated fadeInDown' }); + } + openH2Model(H2ModelContent) { + this.modalService.open(H2ModelContent, { windowClass: 'animated fadeInDown' }); + } + openH3Model(H3ModelContent) { + this.modalService.open(H3ModelContent, { windowClass: 'animated fadeInDown' }); + } + openH4Model(H4ModelContent) { + this.modalService.open(H4ModelContent, { windowClass: 'animated fadeInDown' }); + } + openH5Model(H5ModelContent) { + this.modalService.open(H5ModelContent, { windowClass: 'animated fadeInDown' }); + } + openH6Model(H6ModelContent) { + this.modalService.open(H6ModelContent, { windowClass: 'animated fadeInDown' }); + } + openLoginForm(LoginFormContent) { + this.modalService.open(LoginFormContent, { windowClass: 'animated fadeInDown' }); + } + openLoginFormIcon(LoginFormIconContent) { + this.modalService.open(LoginFormIconContent, { windowClass: 'animated fadeInDown' }); + } + openBootstrapInputForm(BootstrapInputFormContent) { + this.modalService.open(BootstrapInputFormContent, { windowClass: 'animated fadeInDown' }); + } + openBounceAnimation(BounceContent) { + this.modalService.open(BounceContent, { windowClass: 'animated bounce' }); + } + openFlashAnimation(FlashContent) { + this.modalService.open(FlashContent, { windowClass: 'animated flash' }); + } + openPulseAnimation(PulseContent) { + this.modalService.open(PulseContent, { windowClass: 'animated pulse' }); + } + openRubberBandAnimation(RubberBandContent) { + this.modalService.open(RubberBandContent, { windowClass: 'animated rubberBand' }); + } + openShakeAnimation(ShakeContent) { + this.modalService.open(ShakeContent, { windowClass: 'animated shake' }); + } + openRollInAnimation(RollInContent) { + this.modalService.open(RollInContent, { windowClass: 'animated rollIn' }); + } + openSwingAnimation(SwingContent) { + this.modalService.open(SwingContent, { windowClass: 'animated swing' }); + } + openTadaAnimation(TadaContent) { + this.modalService.open(TadaContent, { windowClass: 'animated tada' }); + } + openWobbleAnimation(WobbleContent) { + this.modalService.open(WobbleContent, { windowClass: 'animated wobble' }); + } + openJelloAnimation(JelloContent) { + this.modalService.open(JelloContent, { windowClass: 'animated jello' }); + } + BounceInAnimation(BounceInContent) { + this.modalService.open(BounceInContent, { windowClass: 'animated bounceIn' }); + } + BounceInDownAnimation(BounceInDownContent) { + this.modalService.open(BounceInDownContent, { windowClass: 'animated bounceInDown' }); + } + BounceInLeftAnimation(BounceInLeftContent) { + this.modalService.open(BounceInLeftContent, { windowClass: 'animated bounceInLeft' }); + } + BounceInRightAnimation(BounceInRightContent) { + this.modalService.open(BounceInRightContent, { windowClass: 'animated bounceInRight' }); + } + BounceInUpAnimation(BounceInUpContent) { + this.modalService.open(BounceInUpContent, { windowClass: 'animated bounceInUp' }); + } + FadeInAnimation(FadeInContent) { + this.modalService.open(FadeInContent, { windowClass: 'animated FadeIn' }); + } + FadeInDownAnimation(FadeInDownContent) { + this.modalService.open(FadeInDownContent, { windowClass: 'animated fadeInDown' }); + } + FadeInDownBigAnimation(FadeInDownBigContent) { + this.modalService.open(FadeInDownBigContent, { windowClass: 'animated fadeInDownBig' }); + } + FadeInLeftAnimation(FadeInLeftContent) { + this.modalService.open(FadeInLeftContent, { windowClass: 'animated fadeInLeft' }); + } + FadeInLeftBigAnimation(FadeInLeftBigContent) { + this.modalService.open(FadeInLeftBigContent, { windowClass: 'animated fadeInLeftBig' }); + } + FadeInRightAnimation(FadeInRightContent) { + this.modalService.open(FadeInRightContent, { windowClass: 'animated fadeInRight' }); + } + FadeInRightBigAnimation(FadeInRightBigContent) { + this.modalService.open(FadeInRightBigContent, { windowClass: 'animated fadeInRightBig' }); + } + FadeInUpAnimation(FadeInUpContent) { + this.modalService.open(FadeInUpContent, { windowClass: 'animated fadeInUp' }); + } + FadeInUpBigAnimation(FadeInUpBigContent) { + this.modalService.open(FadeInUpBigContent, { windowClass: 'animated fadeInUpBig' }); + } + FlipInXAnimation(FlipInXContent) { + this.modalService.open(FlipInXContent, { windowClass: 'animated flipInX' }); + } + FlipInYAnimation(FlipInYContent) { + this.modalService.open(FlipInYContent, { windowClass: 'animated flipInY' }); + } + LightSpeedInAnimation(LightSpeedInContent) { + this.modalService.open(LightSpeedInContent, { windowClass: 'animated lightSpeedIn' }); + } + RotateInAnimation(RotateInContent) { + this.modalService.open(RotateInContent, { windowClass: 'animated rotateIn' }); + } + RotateInDownLeftAnimation(RotateInDownLeftContent) { + this.modalService.open(RotateInDownLeftContent, { windowClass: 'animated rotateInDownLeft' }); + } + RotateInDownRightAnimation(RotateInDownRightContent) { + this.modalService.open(RotateInDownRightContent, { windowClass: 'animated rotateInDownRight' }); + } + RotateInUpLeftAnimation(RotateInUpLeftContent) { + this.modalService.open(RotateInUpLeftContent, { windowClass: 'animated rotateInUpLeft' }); + } + RotateInUpRightAnimation(RotateInUpRightContent) { + this.modalService.open(RotateInUpRightContent, { windowClass: 'animated rotateInUpRight' }); + } + ZoomInAnimation(ZoomInContent) { + this.modalService.open(ZoomInContent, { windowClass: 'animated zoomIn' }); + } + ZoomInDownAnimation(ZoomInDownContent) { + this.modalService.open(ZoomInDownContent, { windowClass: 'animated zoomInDown' }); + } + ZoomInLeftAnimation(ZoomInLeftContent) { + this.modalService.open(ZoomInLeftContent, { windowClass: 'animated zoomInLeft' }); + } + ZoomInRightAnimation(ZoomInRightContent) { + this.modalService.open(ZoomInRightContent, { windowClass: 'animated zoomInRight' }); + } + zoomInUpAnimation(zoomInUpContent) { + this.modalService.open(zoomInUpContent, { windowClass: 'animated zoomInUp' }); + } + slideInUpAnimation(slideInUpContent) { + this.modalService.open(slideInUpContent, { windowClass: 'animated slideInUp' }); + } + SlideInLeftAnimation(SlideInLeftContent) { + this.modalService.open(SlideInLeftContent, { windowClass: 'animated slideInLeft' }); + } + SlideInRightAnimation(SlideInRightContent) { + this.modalService.open(SlideInRightContent, { windowClass: 'animated slideInRight' }); + } + SlideInDownAnimation(SlideInDownContent) { + this.modalService.open(SlideInDownContent, { windowClass: 'animated slideInDown' }); + } + + reloadBasicModals() { + this.blockUIBasicModals.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicModals.stop(); + }, 2500); + } + + reloadModalThemes() { + this.blockUIModalThemes.start('Loading..'); + + setTimeout(() => { + this.blockUIModalThemes.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/navs/navs.component.css b/src/app/content/ngbbootstrap/navs/navs.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/ngbbootstrap/navs/navs.component.html b/src/app/content/ngbbootstrap/navs/navs.component.html new file mode 100644 index 0000000..a6293d0 --- /dev/null +++ b/src/app/content/ngbbootstrap/navs/navs.component.html @@ -0,0 +1,573 @@ +
+
+
+ +
+
+ +
+
+
+

If you are using navs to provide a navigation bar, be sure to add a role="navigation" to the most logical + parent container of the <ul>, or wrap a <nav> element around the + whole navigation.

+
+
+
+
+
+
+

Base nav

+
+
+
+ +

Roll your own navigation style by extending the base .nav component. All Bootstrap’s + nav components are built on top of this by specifying additional styles.

+
+
+
+
+
+
+
+

Nav with Border

+
+
+
+ +

To wrap with border, use .wrap-border class.

+
+
+
+
+
+
+
+
+
+

Nav with Square Border

+
+
+
+ +

To wrap with square border, use .square-border class with .wrap-border + class.

+
+
+
+
+
+
+
+

Nav with Divider

+
+
+
+ +

To add divider, use .dropdown-divider class to <li>

+
+
+
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ diff --git a/src/app/content/ngbbootstrap/navs/navs.component.spec.ts b/src/app/content/ngbbootstrap/navs/navs.component.spec.ts new file mode 100644 index 0000000..2d282b8 --- /dev/null +++ b/src/app/content/ngbbootstrap/navs/navs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { NavsComponent } from './navs.component'; + +describe('NavsComponent', () => { + let component: NavsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ NavsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NavsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/navs/navs.component.ts b/src/app/content/ngbbootstrap/navs/navs.component.ts new file mode 100644 index 0000000..a19aa17 --- /dev/null +++ b/src/app/content/ngbbootstrap/navs/navs.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-navs', + templateUrl: './navs.component.html', + styleUrls: ['./navs.component.css'] +}) +export class NavsComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Navs', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Navs', + 'isLink': false + } + ] + }; + } + +} + diff --git a/src/app/content/ngbbootstrap/pagination/pagination.component.css b/src/app/content/ngbbootstrap/pagination/pagination.component.css new file mode 100644 index 0000000..572373d --- /dev/null +++ b/src/app/content/ngbbootstrap/pagination/pagination.component.css @@ -0,0 +1,13 @@ +:host ::ng-deep .round-pagination .page-item:first-child .page-link { + border-top-left-radius: 1.25rem !important; + border-bottom-left-radius: 1.25rem !important; +} + +:host ::ng-deep .round-pagination .page-item:last-child .page-link { + border-top-right-radius: 1.25rem !important; + border-bottom-right-radius: 1.25rem !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/pagination/pagination.component.html b/src/app/content/ngbbootstrap/pagination/pagination.component.html new file mode 100644 index 0000000..582c091 --- /dev/null +++ b/src/app/content/ngbbootstrap/pagination/pagination.component.html @@ -0,0 +1,365 @@ +
+
+
+ +
+
+ +
+
+
+ + + Default Pagination + + +

Provide pagination links for your site or app with the multi-page pagination component.

+
+
+
Basic Pagination
+ +

Default pagination without next previous.

+
+
+
Pagination with Next/Prev Arrows
+ +

Default pagination with next previous icons.

+
+
+
+
+
Separated Pagination with Next/Prev Arrows
+ +

For Separated pagination, use class + .pagination-separate + with Next Previous Icons.

+
+
+
Flat Pagination
+ +

Flat pagination need class .pagination-flat to + .pagination class.

+
+
+
+
+
Flat Pagination with Next/Prev Arrows
+ +

Flat pagination need class .pagination-flat to + .pagination class.

+
+
+
With boundary link
+ +

Flat pagination need class .pagination-flat to + .pagination class.

+
+
+ +
+
+
+
+
+ + + +
+
+
+ + + Pagination Round Style + + +
+
+
Round Pagination
+
+
    + +
+

Round Style pagination use .round-pagination to .pagination + class. +

+
+
+
+
Round Style Pagination with Next/Prev Arrows
+
+ +

Round Style pagination use .round-pagination to .pagination + class + with Previous Next Icons.

+
+
+
+
+
+
Separated Round Styled Pagination
+
+ +

Separated Round Style pagination use .round-pagination & + .pagination-separate to .pagination class.

+
+
+
+
Separated Round Styled Pagination with Next/Prev Arrows
+
+ +

Separated Round Style pagination use .round-pagination & + .pagination-separate to .pagination class with Previous Next + Icons. +

+
+
+
+
+
+
Separated Flat Round Styled Pagination
+
+ +

Separated Flat Round Styled pagination need class .pagination-flat with + round and + separated styled classes.

+
+
+
+
Separated Flat Round Styled Pagination with Next/Prev Arrows
+
+ +

Separated Flat Round Styled pagination need class .pagination-flat with + round and + separated styled classes & previous next icons.

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

Curved Pagination Border Style

+
+
+
+
+
+
Separated Curve Styled Pagination
+
+ +

Separated Curved pagination need class .pagination-curved with separated class. +

+
+
+
+
Separated Curved Styled Pagination with Next/Prev Arrows
+
+ +

Separated Curved pagination need class .pagination-curved with separated class + & Previous Next Icons.

+
+
+
+
+
+
Saperated Curved Flat Styled Pagination
+
+ +

Saperated Curved Flat pagination need class .pagination-flat with + .pagination-separate.pagination-curved classes.

+
+
+
+
Saperated Curved Flat Styled Pagination with Next/Prev Arrows
+
+ +

Saperated Curved Flat pagination need class .pagination-flat with + .pagination-separate.pagination-curved classes with Previous Next Icons.

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

Pagination Positions

+
+
+
+

Use wrapper classes for pagination. To align left, use class .justify-content-start. + To align center, use class .justify-content-center. To align right, use class + .justify-content-end.

+
+
+
Left Align
+ +
+
+
Center Align
+ +
+
+
Right Align
+ +
+
+
+
+
+
+
+
+ + + +
+
+
+

Pagination Sizes

+

Use class .pagination-lg for large size pagination & use .pagination-sm for + small size pagination. For Default size no classes required.

+
+
+
+
+
+
+

Pagination Sizes With Border

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/pagination/pagination.component.spec.ts b/src/app/content/ngbbootstrap/pagination/pagination.component.spec.ts new file mode 100644 index 0000000..0e70eb3 --- /dev/null +++ b/src/app/content/ngbbootstrap/pagination/pagination.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PaginationComponent } from './pagination.component'; + +describe('PaginationComponent', () => { + let component: PaginationComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PaginationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PaginationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/pagination/pagination.component.ts b/src/app/content/ngbbootstrap/pagination/pagination.component.ts new file mode 100644 index 0000000..6320b7e --- /dev/null +++ b/src/app/content/ngbbootstrap/pagination/pagination.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + + +@Component({ + selector: 'app-pagination', + templateUrl: './pagination.component.html', + styleUrls: ['./pagination.component.css'] +}) +export class PaginationComponent implements OnInit { + + @BlockUI('defaultPagination') blockUIDefaultPagination: NgBlockUI; + @BlockUI('paginationRoundStyle') blockUIPaginationRoundStyle: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Pagination', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Pagination', + 'isLink': false + } + ] + }; + } + + reloadDefaultPagination() { + this.blockUIDefaultPagination.start('Loading..'); + + setTimeout(() => { + this.blockUIDefaultPagination.stop(); + }, 2500); + } + + reloadPaginationRoundStyle() { + this.blockUIPaginationRoundStyle.start('Loading..'); + + setTimeout(() => { + this.blockUIPaginationRoundStyle.stop(); + }, 2500); + } + +} diff --git a/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.css b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.css new file mode 100644 index 0000000..456bdd4 --- /dev/null +++ b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.css @@ -0,0 +1,6 @@ +.badge[class*=badge-].dropdown-toggle::after { + position: unset !important; + top: unset !important; + right: unset !important; + font-size: 1rem; +} \ No newline at end of file diff --git a/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.html b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.html new file mode 100644 index 0000000..e79a9ba --- /dev/null +++ b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.html @@ -0,0 +1,1060 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Secondary Pill Badges

+
+
+
+

Use the .badge class, followed by.badge-pill with + .badge-secondaryclass + within element to create default pill badge.

+
59
+
+
+
+
+
+
+
+

Primary Pill Badges

+
+
+
+

Use the .badge class, followed by.badge-pill with + .badge-primaryclass + within element to create primary pill badge.

+
43
+
+
+
+
+
+
+
+

Success Pill Badges

+
+
+
+

Use the .badge class, followed by.badge-pill with + .badge-successclass + within element to create success pill badge.

+
25
+
+
+
+
+
+
+
+

Danger Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-dangerclass + within element to create danger pill badge.

+
78
+
+
+
+
+
+
+
+

Info Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-infoclass + within element to create info pill badge.

+
57
+
+
+
+
+
+
+
+

Warning Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-warningclass + within element to create warning pill badge.

+
68
+
+
+
+
+
+
+
+

Custom Blue Grey Color Pill Badges

+
+
+
+

Use the .badge class, followed by.bg-blue-greyclass within element to + create blue grey label.

+
63
+
+
+
+
+
+
+ + + +
+
+
+

Pill Badges With Glow effect

+
+
+
+
+
+
+

Secondary Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
59
+
+
+
+
+
+
+
+

Primary Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
41
+
+
+
+
+
+
+
+

Success Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
25
+
+
+
+
+
+
+
+

Danger Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
78
+
+
+
+
+
+
+
+

Info Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
57
+
+
+
+
+
+
+
+

Warning Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
68
+
+
+
+
+
+
+
+

Custom Blue Grey Color Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-pill with + .badge-glowclass + within element to create glow styled pill badge.

+
63
+
+
+
+
+
+
+ + + +
+
+
+

Square Pill Badges

+

For square pill badges, use .badge-square class with .badge class.

+
+
+
+
+
+
+

Secondary Square Pill

+
+
+
+
+ 15 +
+
+
+
+
+
+
+
+

Square Primary Pill

+
+
+
+
+ 21 +
+
+
+
+
+
+
+
+

Square Success Pill

+
+
+
+
+ 36 +
+
+
+
+
+
+
+ + + +
+
+
+

Pill Badges with Icons

+
+
+
+
+
+
+

Secondary Icon Pill

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

Primary Icon Pill

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

Success Icon Pill

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

Square Danger Icon Pill

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

Square Info Icon pill badge

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

Square Warning Icon Label

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

Pill Badges with Dropdown

+
+
+
+
+
+
+

Secondary Pill with Dropdown

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

Primary Pill with Dropdown

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

Success Pill with Dropdown

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

Square Danger Pill with Dropdown

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

Square Info Pill with Dropdown

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

Square Warning Pill with Dropdown

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

Bordered Pill Badges

+
+
+
+
+
+
+

Primary Pill Badges

+
+
+
+

Use the .badge class, followed by.badge-border with + .badge-primaryclass + within element to create primary pill badge.

+
43
+
+
+
+
+
+
+
+

Success Pill Badges

+
+
+
+

Use the .badge class, followed by.badge-border with + .badge-successclass + within element to create success pill badge.

+
25
+
+
+
+
+
+
+
+

Danger Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-dangerclass + within element to create danger pill badge.

+
78
+
+
+
+
+
+
+
+

Info Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-infoclass + within element to create info pill badge.

+
57
+
+
+
+
+
+
+
+

Warning Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-warningclass + within element to create warning pill badge.

+
68
+
+
+
+
+
+
+
+

Custom Brown Color Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .bg-blueclass + within element to create blue pill badge.

+
34
+
+
+
+
+
+
+ + + + + +
+
+
+

Pill Badges With Glow effect

+
+
+
+
+
+
+

Primary Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
41
+
+
+
+
+
+
+
+

Success Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
25
+
+
+
+
+
+
+
+

Danger Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
78
+
+
+
+
+
+
+
+

Info Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
57
+
+
+
+
+
+
+
+

Warning Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
68
+
+
+
+
+
+
+
+

Custom Brown Color Pill Badges

+
+
+
+

Use the .badge class, followed by .badge-border with + .badge-glowclass + within element to create glow styled pill badge.

+
34
+
+
+
+
+
+
+ + + + + +
+
+
+

Square Pill

+

For square pill badges, use .badge-square class with .badge class.

+
+
+
+
+
+
+

Danger Square Pill

+
+
+
+
+ 15 +
+
+
+
+
+
+
+
+

Square Primary Pill

+
+
+
+
+ 21 +
+
+
+
+
+
+
+
+

Square Success Pill

+
+
+
+
+ 36 +
+
+
+
+
+
+
+ + + + + +
+
+
+

Bordered Pill Badges with Icons

+
+
+
+
+
+
+

Pink Icon Pill

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

Primary Icon Pill

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

Success Icon Pill

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

Square Danger Icon Pill

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

Square Info Icon pill badge

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

Square Warning Icon Label

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

Bordered Pill Badges with Dropdown

+
+
+
+
+
+
+

Pill with Dropdown

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

Danger Pill with Dropdown

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

Success Pill with Dropdown

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

Square Purple Pill with Dropdown

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

Square Info Pill with Dropdown

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

Square Warning Pill with Dropdown

+
+
+
+
+ +
+ + + + + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.spec.ts b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.spec.ts new file mode 100644 index 0000000..06da934 --- /dev/null +++ b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PillBadgesComponent } from './pill-badges.component'; + +describe('PillBadgesComponent', () => { + let component: PillBadgesComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PillBadgesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PillBadgesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.ts b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.ts new file mode 100644 index 0000000..7e8c4fd --- /dev/null +++ b/src/app/content/ngbbootstrap/pill-badges/pill-badges.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-pill-badges', + templateUrl: './pill-badges.component.html', + styleUrls: ['./pill-badges.component.css'] +}) +export class PillBadgesComponent implements OnInit { + + public breadcrumb: any; + placement = 'top-left'; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Pill Badges', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Pill Badges', + 'isLink': false + } + ] + }; + } +} diff --git a/src/app/content/ngbbootstrap/pills/pills.component.css b/src/app/content/ngbbootstrap/pills/pills.component.css new file mode 100644 index 0000000..d5f9df6 --- /dev/null +++ b/src/app/content/ngbbootstrap/pills/pills.component.css @@ -0,0 +1,142 @@ +:host ::ng-deep .vertical .nav-pills{ + float: left; + border-bottom: 0; + border-radius: 0; + display: table; + } + /* .nav-link { + display: block; + padding: 0.5rem 1rem; + }*/ + :host ::ng-deep .dropdownicon .nav-item i { + margin-left: 3.5rem; + } + + :host ::ng-deep .icon .nav-item i { + margin-right: 3.5rem; + } + + :host ::ng-deep .ml-1.badge-success { + margin-left: 4rem !important; + } + :host ::ng-deep .badge-warning { + margin-left: 0rem !important; + + } + :host ::ng-deep .badge-warning.badge-glow { + margin-right: 1.8rem !important; + + } + :host ::ng-deep .nav .nav-item .nav-link { + display : -webkit-inline-box; + display : -webkit-inline-flex; + display : -moz-inline-box; + display : -ms-inline-flexbox; + } + :host ::ng-deep .nav .nav-item i { + -webkit-align-self : center; + -ms-flex-item-align : center; + align-self : center; + } + :host ::ng-deep .nav .dropdown-divider { + margin : 0.5rem 0; + } + :host ::ng-deep .nav .modern-nav-toggle { + padding : 25px 0; + } + :host ::ng-deep .nav.nav-pills .nav-item .nav-link i.float-right:before { + position : relative; + top : 7px; + left : 7px; + } + :host ::ng-deep .nav.nav-pills .nav-item .nav-link .badge.float-right { + position : relative; + top : 1px; + left : 3px; + } + :host ::ng-deep .nav.nav-pills .nav-item .nav-link.dropdown-toggle::after { + top : -1px; + } + :host ::ng-deep .nav.nav-pills.nav-justified { + width : 100%; + } + :host ::ng-deep .nav.nav-pills.nav-justified .nav-item { + float : none; + } + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link { + text-align : center; + margin-bottom : 5px; + } + :host ::ng-deep .nav.nav-pills.nav-justified > .dropdown .dropdown-menu { + top : auto; + left : auto; + } + @media (min-width: 576px) { + :host ::ng-deep .nav.nav-pills.nav-justified .nav-item { + display : table-cell; + /* width : 1%; */ + } + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link { + margin-bottom : 0; + } + } + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link { + margin-right : 0; + border-radius : 0.25rem; + } + @media (min-width: 576px) { + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link.active, .nav.nav-pills.nav-justified .nav-link.active:hover, .nav.nav-pills.nav-justified .nav-link.active:focus { + border-bottom-color : transparent; + } + } + /* :host ::ng-deep .nav.nav-pills.nav-justified .nav-link { + display : -webkit-box; + } */ + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link.active { + border : none; + } + :host ::ng-deep .nav.nav-pills.nav-justified .nav-link.active:hover, .nav.nav-pills.nav-justified .nav-link.active:focus { + border : none; + } + :host ::ng-deep .nav.nav-pills.nav-pill-bordered .nav-item { + border : 1px solid #D3D3D3; + border-radius : 0.25rem; + } + :host ::ng-deep .nav.nav-pills.nav-pill-with-active-bordered .nav-item a.nav-link { + border : 1px solid #D3D3D3; + border-radius : 0.25rem; + background-color : #FFFFFF; + color : #55595C; + } + :host ::ng-deep .nav.nav-pills.nav-pill-with-active-bordered .nav-item a.nav-link.active { + border : 1px solid #666EE8; + color : #666EE8; + } + :host ::ng-deep .nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link { + color : #55595C; + } + :host ::ng-deep .nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link.active { + border : 1px solid #666EE8; + border-radius : 0.25rem; + color : #666EE8; + background-color : #FFFFFF; + } + :host ::ng-deep .nav.nav-pills.nav-pill-toolbar.nav-stacked .nav-item ~ .nav-item a.nav-link { + border-left : 1px solid #D3D3D3; + border-top : 0; + } + :host ::ng-deep .nav.nav-pills.nav-pill-toolbar.nav-stacked .nav-item:first-child a.nav-link { + + border-radius : 0.25rem 0.25rem 0 0; + + } + :host ::ng-deep .card { + margin-bottom: 1.875rem; + border: none; + -webkit-box-shadow: 0 1px 15px 1px rgba(62, 57, 107, .07); + box-shadow: 0 1px 15px 1px rgba(62, 57, 107, .07); +} +:host ::ng-deep .nav { + border-radius: .25rem; + margin-bottom: 12px; +} diff --git a/src/app/content/ngbbootstrap/pills/pills.component.html b/src/app/content/ngbbootstrap/pills/pills.component.html new file mode 100644 index 0000000..4a23d1a --- /dev/null +++ b/src/app/content/ngbbootstrap/pills/pills.component.html @@ -0,0 +1,725 @@ +
+
+
+ +
+
+ +
+
+
+
+
+

Basic Pills

+
+
+
+

Takes the basic nav pills from above and adds the .nav-pills class to generate a + pilled interface.

+ +
+
+
+
+
+ +
+
+
+

Bordered Pills

+
+
+
+

Use .nav-pill-bordered class to .nav-pills for bordered type pills.

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

Bordered Pills with Active Border

+
+
+
+

Use .nav-pill-with-active-bordered class to .nav-pills for bordered type + pills.

+ +
+
+
+
+
+ +
+
+
+

Active Border Pills

+
+
+
+

Use .nav-active-bordered-pill class to .nav-pills for bordered type + pills.

+ +
+
+
+
+
+
+
+
+
+

Toolbar Pills

+
+
+
+

Use .nav-pill-toolbar class to .nav-pills for bordered type pills.

+ +
+
+
+
+
+
+
+

Basic Justified Pills

+
+
+
+

Use .nav-justified class to set Pills justified.

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

Stacked Pills

+
+
+
+
+
+
+

Basic Stacked Pills

+
+
+
+

Use .flex-column class with .nav.nav-pills to stack them vertically. Each + .nav-link becomes block-level, allowing for larger hit areas via mouse or tap.

+ +
+
+
+
+ +
+
+
+

Stacked Pills Toolbar

+
+
+
+

Use .nav-pill-toolbar class to .flex-column for bordered type pills.

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

Pills Elements

+
+
+
+
+
+
+

Pills with Left Icon

+
+
+
+

Use font icons before pill name to get pills with icon.

+ +
+
+
+
+ +
+
+
+

Pills with Right Icon

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

Pills with Only Icon

+
+
+
+

Use font icons as pill name to get Icon pills.

+ + +
+
+
+
+ +
+
+
+

Pills with Label

+
+
+
+

You can also use .badge.badge-COLOR classes to add label to pill.

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

Pills with Label

+
+
+
+

You can also use .badge.badge-pill.badge-glow.badge-COLOR classes to add label + pill(badge) to pill.

+ +
+
+
+
+ +
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/pills/pills.component.spec.ts b/src/app/content/ngbbootstrap/pills/pills.component.spec.ts new file mode 100644 index 0000000..88d7097 --- /dev/null +++ b/src/app/content/ngbbootstrap/pills/pills.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PillsComponent } from './pills.component'; + +describe('PillsComponent', () => { + let component: PillsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PillsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PillsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/pills/pills.component.ts b/src/app/content/ngbbootstrap/pills/pills.component.ts new file mode 100644 index 0000000..84de344 --- /dev/null +++ b/src/app/content/ngbbootstrap/pills/pills.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-pills', + templateUrl: './pills.component.html', + styleUrls: ['./pills.component.css'] +}) +export class PillsComponent implements OnInit { + + public breadcrumb: any; + currentOrientation = 'vertical'; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Pills', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Pills', + 'isLink': false + } + ] + }; + } +} diff --git a/src/app/content/ngbbootstrap/popovers/popovers.component.css b/src/app/content/ngbbootstrap/popovers/popovers.component.css new file mode 100644 index 0000000..dc4ab4f --- /dev/null +++ b/src/app/content/ngbbootstrap/popovers/popovers.component.css @@ -0,0 +1,7 @@ +:host ::ng-deep .basicRightPopover { + width: 744px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/popovers/popovers.component.html b/src/app/content/ngbbootstrap/popovers/popovers.component.html new file mode 100644 index 0000000..c01a19a --- /dev/null +++ b/src/app/content/ngbbootstrap/popovers/popovers.component.html @@ -0,0 +1,375 @@ +
+
+
+ +
+
+ +
+
+
+ + + Static demo + + +

Four options are available: top, right, bottom, and left aligned.

+
+
+
Basic Top Popover
+
+
+
Popover on Top
+
+

Ice cream tootsie roll tiramisu tootsie roll toffee dragée sugar plum cake. Liquorice jelly + jujubes. Powder danish tart apple pie dessert cheesecake tiramisu soufflé bonbon. Carrot cake + wafer toffee.

+
+
+

Add placement="top" to add top popover.

+
+
+
Basic Right Popover
+
+
+
Popover on Right
+
+

Ice cream tootsie roll tiramisu tootsie roll toffee dragée sugar plum cake. Liquorice jelly + jujubes. Powder danish tart apple pie dessert cheesecake tiramisu soufflé bonbon. Carrot cake + wafer toffee.

+
+
+

Add placement="right" to add right popover.

+
+
+
Basic Bottom Popover
+
+
+
Popover on Bottom
+
+

Ice cream tootsie roll tiramisu tootsie roll toffee dragée sugar plum cake. Liquorice jelly + jujubes. Powder danish tart apple pie dessert cheesecake tiramisu soufflé bonbon. Carrot cake + wafer toffee.

+
+
+

Add placement="bottom" to add bottom popover.

+
+
+
Basic Left Popover
+
+
+
Popover on Left
+
+

Ice cream tootsie roll tiramisu tootsie roll toffee dragée sugar plum cake. Liquorice jelly + jujubes. Powder danish tart apple pie dessert cheesecake tiramisu soufflé bonbon. Carrot cake + wafer toffee.

+
+
+

Add placement="left" to add left popover.

+
+
+
+
+
+
+
+ + + +
+
+
+ + + Popover Positions + + +

Four options are available: top, right, bottom, and left aligned.

+
+
+
Basic Top Popover
+
+ +
+

Add placement="top" to add top popover.

+
+
+
Basic Right Popover
+
+ +
+

Add placement="right" to add right popover.

+
+
+
Basic Bottom Popover
+
+ +
+

Add placement="bottom" to add bottom popover.

+
+
+
Basic Left Popover
+
+ +
+

Add placement="left" to add left popover.

+
+
+
+
+
+
+
+ + + +
+
+
+ + + Popover Events + + +
+
+
Shown Event
+
+ +
+

This event is fired when the popover has been made visible to the user.

+
+
+
Hidden Event
+
+ +
+

This event is fired when the popover has finished being hidden from the + user.

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

Popover Methods

+
+
+
+

This is considered a “manual” triggering of the popover.Popovers whose both title and content are + zero-length are never displayed.

+
+
+
Show
+
+ +
+

Reveals an element’s popover. Returns to the caller before the + popover has actually been shown.

+
+
+
Hide
+
+ +
+

Hides an element’s popover. Returns to the caller before the popover + has actually been hidden.

+
+
+
Toggle
+
+ +
+

Toggles an element’s popover. Returns to the caller before the + popover has actually been shown or hidden.

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

Popover Triggers

+
+
+
+

Popover is triggered using - click | hover | focus | manual options. You may pass multiple + triggers; separate them with a space. "manual" cannot be combined with any other trigger.

+
+
+
Hover
+
+ +
+

Use triggers="hover" for hover trigger.

+
+
+
Click
+
+ +
+

Use triggers="click" for click trigger. This is a + default trigger.

+
+
+
Focus
+
+ +
+

Use triggers="focus" for focus trigger.

+
+
+
Manual
+
+ +
+

Use triggers="manual" for manual trigger. You can + do show/hide using js

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

Popover Options

+
+
+
+
+
+
Supports HTML
+
+ This is HTML Popover + Tart macaroon marzipan I love soufflé
apple pie
wafer. + Chocolate bar jelly caramels jujubes chocolate cake gummies.
+ +
+

Useng-template for HTML supported trigger.

+
+
+
Popover Template
+
+ +
+

Base HTML to use when creating the popover. The popover's title will + be injected into the .popoverTitle. .arrow will become the + popover's arrow.The outermost wrapper element should have the .popover class.

+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/popovers/popovers.component.spec.ts b/src/app/content/ngbbootstrap/popovers/popovers.component.spec.ts new file mode 100644 index 0000000..5453bac --- /dev/null +++ b/src/app/content/ngbbootstrap/popovers/popovers.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PopoversComponent } from './popovers.component'; + +describe('PopoversComponent', () => { + let component: PopoversComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PopoversComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PopoversComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/popovers/popovers.component.ts b/src/app/content/ngbbootstrap/popovers/popovers.component.ts new file mode 100644 index 0000000..ebcf295 --- /dev/null +++ b/src/app/content/ngbbootstrap/popovers/popovers.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-popovers', + templateUrl: './popovers.component.html', + styleUrls: ['./popovers.component.css'] +}) +export class PopoversComponent implements OnInit { + + @BlockUI('staticDemo') blockUIStaticDemo: NgBlockUI; + @BlockUI('popoverPositions') blockUIPopoverPositions: NgBlockUI; + @BlockUI('popoverEvents') blockUIPopoverEvents: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Popovers', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Popovers', + 'isLink': false + } + ] + }; + } + + popoverShowEvent() { + alert('Show event fired.'); + } + + popoverShownEvent() { + alert('Shown event fired.'); + } + + popoverHideEvent() { + alert('Hide event fired.'); + } + + popoverHiddenEvent() { + alert('Hidden event fired.'); + } + + doAlert() { + console.log(''); + } + + reloadStaticDemo() { + this.blockUIStaticDemo.start('Loading..'); + + setTimeout(() => { + this.blockUIStaticDemo.stop(); + }, 2500); + } + + reloadPopoverPositions() { + this.blockUIPopoverPositions.start('Loading..'); + + setTimeout(() => { + this.blockUIPopoverPositions.stop(); + }, 2500); + } + + reloadPopoverEvents() { + this.blockUIPopoverEvents.start('Loading..'); + + setTimeout(() => { + this.blockUIPopoverEvents.stop(); + }, 2500); + } + + } diff --git a/src/app/content/ngbbootstrap/progress/progress.component.css b/src/app/content/ngbbootstrap/progress/progress.component.css new file mode 100644 index 0000000..c48e1bf --- /dev/null +++ b/src/app/content/ngbbootstrap/progress/progress.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/progress/progress.component.html b/src/app/content/ngbbootstrap/progress/progress.component.html new file mode 100644 index 0000000..69bc046 --- /dev/null +++ b/src/app/content/ngbbootstrap/progress/progress.component.html @@ -0,0 +1,274 @@ +
+
+
+ +
+
+ +
+
+
+ + + Basic Progress + + +
Reticulating splines… 0%
+
+ +
+ +
Reticulating splines… 25%
+
+ +
+ +
Reticulating splines… 50%
+
+ +
+ +
Reticulating splines… 75%
+
+ +
+ +
Reticulating splines… 100%
+
+ +
+
+
+
+
+
+ + + +
+
+
+ + + Colored Progress + + +

Progress bars use some of the same button and alert classes for consistent styles.

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

Labeled Progress

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

Striped Progress

+ +
+
+
+

Uses a gradient to create a striped effect.

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

Animated Progress

+ +
+
+
+

Progressbar with animated effect.

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

Progress Sizes

+
+
+
+

Different height sizes using inline styles. For Default progress, No size class needed.

+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ diff --git a/src/app/content/ngbbootstrap/progress/progress.component.spec.ts b/src/app/content/ngbbootstrap/progress/progress.component.spec.ts new file mode 100644 index 0000000..21cbcf3 --- /dev/null +++ b/src/app/content/ngbbootstrap/progress/progress.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ProgressComponent } from './progress.component'; + +describe('ProgressComponent', () => { + let component: ProgressComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ProgressComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProgressComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/progress/progress.component.ts b/src/app/content/ngbbootstrap/progress/progress.component.ts new file mode 100644 index 0000000..3ddd479 --- /dev/null +++ b/src/app/content/ngbbootstrap/progress/progress.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-progress', + templateUrl: './progress.component.html', + styleUrls: ['./progress.component.css'] +}) +export class ProgressComponent implements OnInit { + + @BlockUI('basicProgress') blockUIBasicProgress: NgBlockUI; + @BlockUI('coloredProgress') blockUIColoredProgress: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Progress', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Progress', + 'isLink': false + } + ] + }; + } + + reloadBasicProgress() { + this.blockUIBasicProgress.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicProgress.stop(); + }, 2500); + } + + reloadColoredProgress() { + this.blockUIColoredProgress.start('Loading..'); + + setTimeout(() => { + this.blockUIColoredProgress.stop(); + }, 2500); + } +} diff --git a/src/app/content/ngbbootstrap/scrollable/scrollable.component.css b/src/app/content/ngbbootstrap/scrollable/scrollable.component.css new file mode 100644 index 0000000..5152c5b --- /dev/null +++ b/src/app/content/ngbbootstrap/scrollable/scrollable.component.css @@ -0,0 +1,11 @@ +:host ::ng-deep .always-visible .ps__rail-x { + opacity: 0.6 !important; +} + +:host ::ng-deep .always-visible .ps__rail-y { + opacity: 0.6 !important; +} + +vertical-scroll { + overflow: auto !important; +} diff --git a/src/app/content/ngbbootstrap/scrollable/scrollable.component.html b/src/app/content/ngbbootstrap/scrollable/scrollable.component.html new file mode 100644 index 0000000..98e4846 --- /dev/null +++ b/src/app/content/ngbbootstrap/scrollable/scrollable.component.html @@ -0,0 +1,464 @@ +
+
+
+ +
+
+
+

Scrolling children inside perfect-scrollbar

+

You can natively scroll children inside perfect-scrollbar with the mouse-wheel. Scrolling automatically + works if the child is a textarea. All other elements need to have the ps-child class.

+
+ + +
+ +
+ +
+
+
+

Vertical Scroll

+
+
+
+
+

+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via workplace + diversity and empowerment.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end of the + day, going forward, a new normal that has evolved from generation X is on the runway heading + towards a streamlined cloud solution. User generated content in real-time will have multiple + touch points for offshoring.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology immersion + along the information highway will close the loop on focusing solely on the bottom line.

+ +

Podcasting operational change management inside of workflows to establish a framework. Taking + seamless key performance indicators offline to maximise the long tail. Keeping your eye on the + ball while performing a deep dive on the start-up mentality to derive convergence on + cross-platform integration.

+ +

Collaboratively administrate empowered markets via plug-and-play networks. Dynamically + procrastinate B2C users after installed base benefits. Dramatically visualize customer directed + convergence without revolutionary ROI.

+
+
+
+
+
+ + +
+
+
+

Horizontal Scroll

+
+
+
+
+

+
+
+
+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via + workplace diversity and empowerment.

+
+
+

Bring to the table win-win survival strategies to ensure proactive domination. At the end + of the day, going forward, a new normal that has evolved from generation X is on the runway + heading towards a streamlined cloud solution. User generated content in real-time will have + multiple touch points for offshoring.

+
+
+

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology + immersion along the information highway will close the loop on focusing solely on the + bottom line.

+
+
+

Podcasting operational change management inside of workflows to establish a framework. + Taking seamless key performance indicators offline to maximise the long tail. Keeping your + eye on the ball while performing a deep dive on the start-up mentality to derive + convergence on cross-platform integration.

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

Both Side Scroll

+
+
+
+
+

+
+
+ girl +
+
+
+
+
+
+
+ + + +
+ +
+ +
+
+
+

Wheel Speed : 1

+
+
+
+
+

This example demonstrate the default scroll speed for the mouse wheel scroll. Default wheel + speed is 1. Chage perfectScrollbar option to achieve desired wheel speed.

+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via workplace + diversity and empowerment.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end of the + day, going forward, a new normal that has evolved from generation X is on the runway heading + towards a streamlined cloud solution. User generated content in real-time will have multiple + touch points for offshoring.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology immersion + along the information highway will close the loop on focusing solely on the bottom line.

+ +

Podcasting operational change management inside of workflows to establish a framework. Taking + seamless key performance indicators offline to maximise the long tail. Keeping your eye on the + ball while performing a deep dive on the start-up mentality to derive convergence on + cross-platform integration.

+ +

Collaboratively administrate empowered markets via plug-and-play networks. Dynamically + procrastinate B2C users after installed base benefits. Dramatically visualize customer directed + convergence without revolutionary ROI.

+
+
+
+
+
+ + +
+
+
+

Wheel Speed : 10

+
+
+
+
+

This example demonstrate the higher scroll speed for the mouse wheel scroll. Default wheel speed + is 1. In this example perfectScrollbar option is set to 10.

+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via workplace + diversity and empowerment.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end of the + day, going forward, a new normal that has evolved from generation X is on the runway heading + towards a streamlined cloud solution. User generated content in real-time will have multiple + touch points for offshoring.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology immersion + along the information highway will close the loop on focusing solely on the bottom line.

+ +

Podcasting operational change management inside of workflows to establish a framework. Taking + seamless key performance indicators offline to maximise the long tail. Keeping your eye on the + ball while performing a deep dive on the start-up mentality to derive convergence on + cross-platform integration.

+ +

Collaboratively administrate empowered markets via plug-and-play networks. Dynamically + procrastinate B2C users after installed base benefits. Dramatically visualize customer directed + convergence without revolutionary ROI.

+
+
+
+
+
+ + +
+
+
+

Wheel Speed : 0.1

+
+
+
+
+

This example demonstrate the lower scroll speed for the mouse wheel scroll. Default wheel speed + is 1. In this example perfectScrollbar option is set to 0.1.

+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via workplace + diversity and empowerment.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end of the + day, going forward, a new normal that has evolved from generation X is on the runway heading + towards a streamlined cloud solution. User generated content in real-time will have multiple + touch points for offshoring.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology immersion + along the information highway will close the loop on focusing solely on the bottom line.

+ +

Podcasting operational change management inside of workflows to establish a framework. Taking + seamless key performance indicators offline to maximise the long tail. Keeping your eye on the + ball while performing a deep dive on the start-up mentality to derive convergence on + cross-platform integration.

+ +

Collaboratively administrate empowered markets via plug-and-play networks. Dynamically + procrastinate B2C users after installed base benefits. Dramatically visualize customer directed + convergence without revolutionary ROI.

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

Always Visible Scroll

+
+
+
+
+

Add class .always-visible to the wrapper element to make the scrollbar always + visible. Srollbars are shown on hover and hidden by default.

+
+
+
+
+
+

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via + workplace diversity and empowerment.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end + of the day, going forward, a new normal that has evolved from generation X is on the runway + heading towards a streamlined cloud solution. User generated content in real-time will have + multiple touch points for offshoring.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology + immersion along the information highway will close the loop on focusing solely on the + bottom line.

+
+
+

Bring to the table win-win survival strategies to ensure proactive domination. At the end + of the day, going forward, a new normal that has evolved from generation X is on the runway + heading towards a streamlined cloud solution. User generated content in real-time will have + multiple touch points for offshoring.

+ +

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via + workplace diversity and empowerment.

+ +

Podcasting operational change management inside of workflows to establish a framework. + Taking seamless key performance indicators offline to maximise the long tail. Keeping your + eye on the ball while performing a deep dive on the start-up mentality to derive + convergence on cross-platform integration.

+
+
+

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology + immersion along the information highway will close the loop on focusing solely on the + bottom line.

+ +

Podcasting operational change management inside of workflows to establish a framework. + Taking seamless key performance indicators offline to maximise the long tail. Keeping your + eye on the ball while performing a deep dive on the start-up mentality to derive + convergence on cross-platform integration.

+ +

Bring to the table win-win survival strategies to ensure proactive domination. At the end + of the day, going forward, a new normal that has evolved from generation X is on the runway + heading towards a streamlined cloud solution. User generated content in real-time will have + multiple touch points for offshoring.

+
+
+

Podcasting operational change management inside of workflows to establish a framework. + Taking seamless key performance indicators offline to maximise the long tail. Keeping your + eye on the ball while performing a deep dive on the start-up mentality to derive + convergence on cross-platform integration.

+ +

Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. + Override the digital divide with additional click throughs from DevOps. Nano technology + immersion along the information highway will close the loop on focusing solely on the + bottom line.

+ +

Leverage agile frameworks to provide a stack synopsis for high level overviews. Iterative + approaches to corporate strategy foster collaborative thinking to further the overall value + proposition. Organically grow the holistic world view of disruptive innovation via + workplace diversity and empowerment.

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

Minimum Scrollbar Length

+
+
+
+
+

Add option minScrollbarLength to set the minimum scrollbar length. In this example + we have set minimum scrollbar length to 200px.

+
+
+ girl +
+
+
+
+
+ + +
+
+
+

Scrollbar With Margins

+
+
+
+
+

Add class .large-margin to the wrapper to have large margins on both sides.

+
+
+ girl +
+
+
+
+
+
+
+ + + +
+ +
+ +
+
+
+

Default Handlers

+
+
+
+
+

This example supports all the handlers. Here is the list of all supported handlers : + 'click-rail', + 'drag-scrollbar', 'keyboard', 'wheel', + 'touch'. Use handlers option.

+
+
+ girl +
+
+
+
+
+ + +
+
+
+

No Keyboard

+
+
+
+
+

This example supports all the handlers except keyboard. Here is the list of all supported + handlers : 'click-rail', 'drag-scrollbar', 'wheel', + 'touch'. Use noKeyboard option.

+
+
+ girl +
+
+
+
+
+ + +
+
+
+

Click and Drag

+
+
+
+
+

This example supports only two handlers. Here is the list of supported handlers : + 'click-rail', + 'drag-scrollbar'. Use clickDrag option.

+
+
+ girl +
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/scrollable/scrollable.component.spec.ts b/src/app/content/ngbbootstrap/scrollable/scrollable.component.spec.ts new file mode 100644 index 0000000..0eb6236 --- /dev/null +++ b/src/app/content/ngbbootstrap/scrollable/scrollable.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ScrollableComponent } from './scrollable.component'; + +describe('ScrollableComponent', () => { + let component: ScrollableComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ScrollableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ScrollableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/scrollable/scrollable.component.ts b/src/app/content/ngbbootstrap/scrollable/scrollable.component.ts new file mode 100644 index 0000000..86eb594 --- /dev/null +++ b/src/app/content/ngbbootstrap/scrollable/scrollable.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { + PerfectScrollbarConfigInterface, + PerfectScrollbarComponent, PerfectScrollbarDirective +} from 'ngx-perfect-scrollbar'; + +@Component({ + selector: 'app-scrollable', + templateUrl: './scrollable.component.html', + styleUrls: ['./scrollable.component.css'] +}) +export class ScrollableComponent implements OnInit { + + public breadcrumb: any; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: false}; + + public speed1: PerfectScrollbarConfigInterface = { wheelSpeed: 1 , wheelPropagation: false }; + + public speed10: PerfectScrollbarConfigInterface = { wheelSpeed: 10 , wheelPropagation: false }; + + public speed: PerfectScrollbarConfigInterface = { wheelSpeed: 0.1 , wheelPropagation: false }; + + public visibleScroll: PerfectScrollbarConfigInterface = {wheelPropagation: false}; + + public minScrollbarLength: PerfectScrollbarConfigInterface = { minScrollbarLength: 200 , wheelPropagation: false }; + + public margins: PerfectScrollbarConfigInterface = { scrollXMarginOffset: 40, scrollYMarginOffset: 90 , wheelPropagation: false }; + + public handlers: PerfectScrollbarConfigInterface = { wheelPropagation: false, + handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'] }; + + public noKeyboard: PerfectScrollbarConfigInterface = {wheelPropagation: false, + handlers: ['click-rail', 'drag-thumb', 'wheel', 'touch'] }; + + public clickDrag: PerfectScrollbarConfigInterface = {wheelPropagation: false, + handlers: ['click-rail', 'drag-thumb'] }; + + + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Scrollable', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Scrollable', + 'isLink': false + } + ] + }; + } + + +} diff --git a/src/app/content/ngbbootstrap/spinners/spinners.component.css b/src/app/content/ngbbootstrap/spinners/spinners.component.css new file mode 100644 index 0000000..0f76392 --- /dev/null +++ b/src/app/content/ngbbootstrap/spinners/spinners.component.css @@ -0,0 +1,1499 @@ +.loader-white div +{ + background-color: #fff !important; +} + +.loader-white.ball-clip-rotate div +{ + border-color: #fff !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-white.ball-clip-rotate-pulse div:first-child +{ + background: #fff !important; +} + +.loader-white.ball-clip-rotate-pulse div:last-child +{ + border-color: #fff transparent #fff transparent !important; + background: transparent !important; +} + +.loader-white.ball-clip-rotate-multiple div +{ + border-color: transparent #fff transparent #fff !important; + background-color: transparent !important; +} + +.loader-white.ball-rotate div:before, +.loader-white.ball-rotate div:after +{ + background-color: #fff !important; +} + +.loader-white.ball-triangle-path div +{ + border-color: #fff !important; + background-color: transparent !important; +} + +.loader-white.ball-scale-ripple div +{ + border-color: #fff !important; + background-color: transparent !important; +} + +.loader-white.ball-scale-ripple-multiple div +{ + border-color: #fff !important; + background-color: transparent !important; +} + +.loader-white.triangle-skew-spin div +{ + border-bottom-color: #fff !important; + background-color: transparent !important; +} + +.loader-white.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #fff), to(#fff)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #fff 30%, #fff 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #fff 30%, #fff 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #fff 30%, #fff 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #fff), to(#fff)); + background-image: linear-gradient(transparent 0%, transparent 70%, #fff 30%, #fff 100%); +} + +.loader-white.fading-circle div +{ + background-color: transparent !important; +} +.loader-white.fading-circle div:before +{ + background-color: #fff !important; +} + +.loader-white.folding-cube div +{ + background-color: transparent !important; +} +.loader-white.folding-cube div:before +{ + background-color: #fff !important; +} + +.loader-black div +{ + background-color: #000 !important; +} + +.loader-black.ball-clip-rotate div +{ + border-color: #000 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-black.ball-clip-rotate-pulse div:first-child +{ + background: #000 !important; +} + +.loader-black.ball-clip-rotate-pulse div:last-child +{ + border-color: #000 transparent #000 transparent !important; + background: transparent !important; +} + +.loader-black.ball-clip-rotate-multiple div +{ + border-color: transparent #000 transparent #000 !important; + background-color: transparent !important; +} + +.loader-black.ball-rotate div:before, +.loader-black.ball-rotate div:after +{ + background-color: #000 !important; +} + +.loader-black.ball-triangle-path div +{ + border-color: #000 !important; + background-color: transparent !important; +} + +.loader-black.ball-scale-ripple div +{ + border-color: #000 !important; + background-color: transparent !important; +} + +.loader-black.ball-scale-ripple-multiple div +{ + border-color: #000 !important; + background-color: transparent !important; +} + +.loader-black.triangle-skew-spin div +{ + border-bottom-color: #000 !important; + background-color: transparent !important; +} + +.loader-black.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #000), to(#000)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #000 30%, #000 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #000 30%, #000 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #000 30%, #000 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #000), to(#000)); + background-image: linear-gradient(transparent 0%, transparent 70%, #000 30%, #000 100%); +} + +.loader-black.fading-circle div +{ + background-color: transparent !important; +} +.loader-black.fading-circle div:before +{ + background-color: #000 !important; +} + +.loader-black.folding-cube div +{ + background-color: transparent !important; +} +.loader-black.folding-cube div:before +{ + background-color: #000 !important; +} + +.loader-primary div +{ + background-color: #666ee8 !important; +} + +.loader-primary.ball-clip-rotate div +{ + border-color: #666ee8 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-primary.ball-clip-rotate-pulse div:first-child +{ + background: #666ee8 !important; +} + +.loader-primary.ball-clip-rotate-pulse div:last-child +{ + border-color: #666ee8 transparent #666ee8 transparent !important; + background: transparent !important; +} + +.loader-primary.ball-clip-rotate-multiple div +{ + border-color: transparent #666ee8 transparent #666ee8 !important; + background-color: transparent !important; +} + +.loader-primary.ball-rotate div:before, +.loader-primary.ball-rotate div:after +{ + background-color: #666ee8 !important; +} + +.loader-primary.ball-triangle-path div +{ + border-color: #666ee8 !important; + background-color: transparent !important; +} + +.loader-primary.ball-scale-ripple div +{ + border-color: #666ee8 !important; + background-color: transparent !important; +} + +.loader-primary.ball-scale-ripple-multiple div +{ + border-color: #666ee8 !important; + background-color: transparent !important; +} + +.loader-primary.triangle-skew-spin div +{ + border-bottom-color: #666ee8 !important; + background-color: transparent !important; +} + +.loader-primary.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #666ee8), to(#666ee8)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #666ee8 30%, #666ee8 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #666ee8 30%, #666ee8 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #666ee8 30%, #666ee8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #666ee8), to(#666ee8)); + background-image: linear-gradient(transparent 0%, transparent 70%, #666ee8 30%, #666ee8 100%); +} + +.loader-primary.fading-circle div +{ + background-color: transparent !important; +} +.loader-primary.fading-circle div:before +{ + background-color: #666ee8 !important; +} + +.loader-primary.folding-cube div +{ + background-color: transparent !important; +} +.loader-primary.folding-cube div:before +{ + background-color: #666ee8 !important; +} + +.loader-success div +{ + background-color: #28d094 !important; +} + +.loader-success.ball-clip-rotate div +{ + border-color: #28d094 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-success.ball-clip-rotate-pulse div:first-child +{ + background: #28d094 !important; +} + +.loader-success.ball-clip-rotate-pulse div:last-child +{ + border-color: #28d094 transparent #28d094 transparent !important; + background: transparent !important; +} + +.loader-success.ball-clip-rotate-multiple div +{ + border-color: transparent #28d094 transparent #28d094 !important; + background-color: transparent !important; +} + +.loader-success.ball-rotate div:before, +.loader-success.ball-rotate div:after +{ + background-color: #28d094 !important; +} + +.loader-success.ball-triangle-path div +{ + border-color: #28d094 !important; + background-color: transparent !important; +} + +.loader-success.ball-scale-ripple div +{ + border-color: #28d094 !important; + background-color: transparent !important; +} + +.loader-success.ball-scale-ripple-multiple div +{ + border-color: #28d094 !important; + background-color: transparent !important; +} + +.loader-success.triangle-skew-spin div +{ + border-bottom-color: #28d094 !important; + background-color: transparent !important; +} + +.loader-success.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #28d094), to(#28d094)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #28d094 30%, #28d094 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #28d094 30%, #28d094 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #28d094 30%, #28d094 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #28d094), to(#28d094)); + background-image: linear-gradient(transparent 0%, transparent 70%, #28d094 30%, #28d094 100%); +} + +.loader-success.fading-circle div +{ + background-color: transparent !important; +} +.loader-success.fading-circle div:before +{ + background-color: #28d094 !important; +} + +.loader-success.folding-cube div +{ + background-color: transparent !important; +} +.loader-success.folding-cube div:before +{ + background-color: #28d094 !important; +} + +.loader-info div +{ + background-color: #1e9ff2 !important; +} + +.loader-info.ball-clip-rotate div +{ + border-color: #1e9ff2 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-info.ball-clip-rotate-pulse div:first-child +{ + background: #1e9ff2 !important; +} + +.loader-info.ball-clip-rotate-pulse div:last-child +{ + border-color: #1e9ff2 transparent #1e9ff2 transparent !important; + background: transparent !important; +} + +.loader-info.ball-clip-rotate-multiple div +{ + border-color: transparent #1e9ff2 transparent #1e9ff2 !important; + background-color: transparent !important; +} + +.loader-info.ball-rotate div:before, +.loader-info.ball-rotate div:after +{ + background-color: #1e9ff2 !important; +} + +.loader-info.ball-triangle-path div +{ + border-color: #1e9ff2 !important; + background-color: transparent !important; +} + +.loader-info.ball-scale-ripple div +{ + border-color: #1e9ff2 !important; + background-color: transparent !important; +} + +.loader-info.ball-scale-ripple-multiple div +{ + border-color: #1e9ff2 !important; + background-color: transparent !important; +} + +.loader-info.triangle-skew-spin div +{ + border-bottom-color: #1e9ff2 !important; + background-color: transparent !important; +} + +.loader-info.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #1e9ff2), to(#1e9ff2)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #1e9ff2 30%, #1e9ff2 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #1e9ff2 30%, #1e9ff2 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #1e9ff2 30%, #1e9ff2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #1e9ff2), to(#1e9ff2)); + background-image: linear-gradient(transparent 0%, transparent 70%, #1e9ff2 30%, #1e9ff2 100%); +} + +.loader-info.fading-circle div +{ + background-color: transparent !important; +} +.loader-info.fading-circle div:before +{ + background-color: #1e9ff2 !important; +} + +.loader-info.folding-cube div +{ + background-color: transparent !important; +} +.loader-info.folding-cube div:before +{ + background-color: #1e9ff2 !important; +} + +.loader-warning div +{ + background-color: #ff9149 !important; +} + +.loader-warning.ball-clip-rotate div +{ + border-color: #ff9149 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-warning.ball-clip-rotate-pulse div:first-child +{ + background: #ff9149 !important; +} + +.loader-warning.ball-clip-rotate-pulse div:last-child +{ + border-color: #ff9149 transparent #ff9149 transparent !important; + background: transparent !important; +} + +.loader-warning.ball-clip-rotate-multiple div +{ + border-color: transparent #ff9149 transparent #ff9149 !important; + background-color: transparent !important; +} + +.loader-warning.ball-rotate div:before, +.loader-warning.ball-rotate div:after +{ + background-color: #ff9149 !important; +} + +.loader-warning.ball-triangle-path div +{ + border-color: #ff9149 !important; + background-color: transparent !important; +} + +.loader-warning.ball-scale-ripple div +{ + border-color: #ff9149 !important; + background-color: transparent !important; +} + +.loader-warning.ball-scale-ripple-multiple div +{ + border-color: #ff9149 !important; + background-color: transparent !important; +} + +.loader-warning.triangle-skew-spin div +{ + border-bottom-color: #ff9149 !important; + background-color: transparent !important; +} + +.loader-warning.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ff9149), to(#ff9149)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #ff9149 30%, #ff9149 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #ff9149 30%, #ff9149 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #ff9149 30%, #ff9149 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ff9149), to(#ff9149)); + background-image: linear-gradient(transparent 0%, transparent 70%, #ff9149 30%, #ff9149 100%); +} + +.loader-warning.fading-circle div +{ + background-color: transparent !important; +} +.loader-warning.fading-circle div:before +{ + background-color: #ff9149 !important; +} + +.loader-warning.folding-cube div +{ + background-color: transparent !important; +} +.loader-warning.folding-cube div:before +{ + background-color: #ff9149 !important; +} + +.loader-danger div +{ + background-color: #ff4961 !important; +} + +.loader-danger.ball-clip-rotate div +{ + border-color: #ff4961 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-danger.ball-clip-rotate-pulse div:first-child +{ + background: #ff4961 !important; +} + +.loader-danger.ball-clip-rotate-pulse div:last-child +{ + border-color: #ff4961 transparent #ff4961 transparent !important; + background: transparent !important; +} + +.loader-danger.ball-clip-rotate-multiple div +{ + border-color: transparent #ff4961 transparent #ff4961 !important; + background-color: transparent !important; +} + +.loader-danger.ball-rotate div:before, +.loader-danger.ball-rotate div:after +{ + background-color: #ff4961 !important; +} + +.loader-danger.ball-triangle-path div +{ + border-color: #ff4961 !important; + background-color: transparent !important; +} + +.loader-danger.ball-scale-ripple div +{ + border-color: #ff4961 !important; + background-color: transparent !important; +} + +.loader-danger.ball-scale-ripple-multiple div +{ + border-color: #ff4961 !important; + background-color: transparent !important; +} + +.loader-danger.triangle-skew-spin div +{ + border-bottom-color: #ff4961 !important; + background-color: transparent !important; +} + +.loader-danger.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ff4961), to(#ff4961)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #ff4961 30%, #ff4961 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #ff4961 30%, #ff4961 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #ff4961 30%, #ff4961 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ff4961), to(#ff4961)); + background-image: linear-gradient(transparent 0%, transparent 70%, #ff4961 30%, #ff4961 100%); +} + +.loader-danger.fading-circle div +{ + background-color: transparent !important; +} +.loader-danger.fading-circle div:before +{ + background-color: #ff4961 !important; +} + +.loader-danger.folding-cube div +{ + background-color: transparent !important; +} +.loader-danger.folding-cube div:before +{ + background-color: #ff4961 !important; +} + +.loader-red div +{ + background-color: #f44336 !important; +} + +.loader-red.ball-clip-rotate div +{ + border-color: #f44336 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-red.ball-clip-rotate-pulse div:first-child +{ + background: #f44336 !important; +} + +.loader-red.ball-clip-rotate-pulse div:last-child +{ + border-color: #f44336 transparent #f44336 transparent !important; + background: transparent !important; +} + +.loader-red.ball-clip-rotate-multiple div +{ + border-color: transparent #f44336 transparent #f44336 !important; + background-color: transparent !important; +} + +.loader-red.ball-rotate div:before, +.loader-red.ball-rotate div:after +{ + background-color: #f44336 !important; +} + +.loader-red.ball-triangle-path div +{ + border-color: #f44336 !important; + background-color: transparent !important; +} + +.loader-red.ball-scale-ripple div +{ + border-color: #f44336 !important; + background-color: transparent !important; +} + +.loader-red.ball-scale-ripple-multiple div +{ + border-color: #f44336 !important; + background-color: transparent !important; +} + +.loader-red.triangle-skew-spin div +{ + border-bottom-color: #f44336 !important; + background-color: transparent !important; +} + +.loader-red.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #f44336), to(#f44336)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #f44336 30%, #f44336 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #f44336 30%, #f44336 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #f44336 30%, #f44336 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #f44336), to(#f44336)); + background-image: linear-gradient(transparent 0%, transparent 70%, #f44336 30%, #f44336 100%); +} + +.loader-red.fading-circle div +{ + background-color: transparent !important; +} +.loader-red.fading-circle div:before +{ + background-color: #f44336 !important; +} + +.loader-red.folding-cube div +{ + background-color: transparent !important; +} +.loader-red.folding-cube div:before +{ + background-color: #f44336 !important; +} + +.loader-pink div +{ + background-color: #e91e63 !important; +} + +.loader-pink.ball-clip-rotate div +{ + border-color: #e91e63 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-pink.ball-clip-rotate-pulse div:first-child +{ + background: #e91e63 !important; +} + +.loader-pink.ball-clip-rotate-pulse div:last-child +{ + border-color: #e91e63 transparent #e91e63 transparent !important; + background: transparent !important; +} + +.loader-pink.ball-clip-rotate-multiple div +{ + border-color: transparent #e91e63 transparent #e91e63 !important; + background-color: transparent !important; +} + +.loader-pink.ball-rotate div:before, +.loader-pink.ball-rotate div:after +{ + background-color: #e91e63 !important; +} + +.loader-pink.ball-triangle-path div +{ + border-color: #e91e63 !important; + background-color: transparent !important; +} + +.loader-pink.ball-scale-ripple div +{ + border-color: #e91e63 !important; + background-color: transparent !important; +} + +.loader-pink.ball-scale-ripple-multiple div +{ + border-color: #e91e63 !important; + background-color: transparent !important; +} + +.loader-pink.triangle-skew-spin div +{ + border-bottom-color: #e91e63 !important; + background-color: transparent !important; +} + +.loader-pink.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #e91e63), to(#e91e63)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #e91e63 30%, #e91e63 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #e91e63 30%, #e91e63 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #e91e63 30%, #e91e63 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #e91e63), to(#e91e63)); + background-image: linear-gradient(transparent 0%, transparent 70%, #e91e63 30%, #e91e63 100%); +} + +.loader-pink.fading-circle div +{ + background-color: transparent !important; +} +.loader-pink.fading-circle div:before +{ + background-color: #e91e63 !important; +} + +.loader-pink.folding-cube div +{ + background-color: transparent !important; +} +.loader-pink.folding-cube div:before +{ + background-color: #e91e63 !important; +} + +.loader-purple div +{ + background-color: #9c27b0 !important; +} + +.loader-purple.ball-clip-rotate div +{ + border-color: #9c27b0 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-purple.ball-clip-rotate-pulse div:first-child +{ + background: #9c27b0 !important; +} + +.loader-purple.ball-clip-rotate-pulse div:last-child +{ + border-color: #9c27b0 transparent #9c27b0 transparent !important; + background: transparent !important; +} + +.loader-purple.ball-clip-rotate-multiple div +{ + border-color: transparent #9c27b0 transparent #9c27b0 !important; + background-color: transparent !important; +} + +.loader-purple.ball-rotate div:before, +.loader-purple.ball-rotate div:after +{ + background-color: #9c27b0 !important; +} + +.loader-purple.ball-triangle-path div +{ + border-color: #9c27b0 !important; + background-color: transparent !important; +} + +.loader-purple.ball-scale-ripple div +{ + border-color: #9c27b0 !important; + background-color: transparent !important; +} + +.loader-purple.ball-scale-ripple-multiple div +{ + border-color: #9c27b0 !important; + background-color: transparent !important; +} + +.loader-purple.triangle-skew-spin div +{ + border-bottom-color: #9c27b0 !important; + background-color: transparent !important; +} + +.loader-purple.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #9c27b0), to(#9c27b0)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #9c27b0 30%, #9c27b0 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #9c27b0 30%, #9c27b0 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #9c27b0 30%, #9c27b0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #9c27b0), to(#9c27b0)); + background-image: linear-gradient(transparent 0%, transparent 70%, #9c27b0 30%, #9c27b0 100%); +} + +.loader-purple.fading-circle div +{ + background-color: transparent !important; +} +.loader-purple.fading-circle div:before +{ + background-color: #9c27b0 !important; +} + +.loader-purple.folding-cube div +{ + background-color: transparent !important; +} +.loader-purple.folding-cube div:before +{ + background-color: #9c27b0 !important; +} + +.loader-blue div +{ + background-color: #2196f3 !important; +} + +.loader-blue.ball-clip-rotate div +{ + border-color: #2196f3 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-blue.ball-clip-rotate-pulse div:first-child +{ + background: #2196f3 !important; +} + +.loader-blue.ball-clip-rotate-pulse div:last-child +{ + border-color: #2196f3 transparent #2196f3 transparent !important; + background: transparent !important; +} + +.loader-blue.ball-clip-rotate-multiple div +{ + border-color: transparent #2196f3 transparent #2196f3 !important; + background-color: transparent !important; +} + +.loader-blue.ball-rotate div:before, +.loader-blue.ball-rotate div:after +{ + background-color: #2196f3 !important; +} + +.loader-blue.ball-triangle-path div +{ + border-color: #2196f3 !important; + background-color: transparent !important; +} + +.loader-blue.ball-scale-ripple div +{ + border-color: #2196f3 !important; + background-color: transparent !important; +} + +.loader-blue.ball-scale-ripple-multiple div +{ + border-color: #2196f3 !important; + background-color: transparent !important; +} + +.loader-blue.triangle-skew-spin div +{ + border-bottom-color: #2196f3 !important; + background-color: transparent !important; +} + +.loader-blue.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #2196f3), to(#2196f3)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #2196f3 30%, #2196f3 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #2196f3 30%, #2196f3 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #2196f3 30%, #2196f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #2196f3), to(#2196f3)); + background-image: linear-gradient(transparent 0%, transparent 70%, #2196f3 30%, #2196f3 100%); +} + +.loader-blue.fading-circle div +{ + background-color: transparent !important; +} +.loader-blue.fading-circle div:before +{ + background-color: #2196f3 !important; +} + +.loader-blue.folding-cube div +{ + background-color: transparent !important; +} +.loader-blue.folding-cube div:before +{ + background-color: #2196f3 !important; +} + +.loader-cyan div +{ + background-color: #00bcd4 !important; +} + +.loader-cyan.ball-clip-rotate div +{ + border-color: #00bcd4 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-cyan.ball-clip-rotate-pulse div:first-child +{ + background: #00bcd4 !important; +} + +.loader-cyan.ball-clip-rotate-pulse div:last-child +{ + border-color: #00bcd4 transparent #00bcd4 transparent !important; + background: transparent !important; +} + +.loader-cyan.ball-clip-rotate-multiple div +{ + border-color: transparent #00bcd4 transparent #00bcd4 !important; + background-color: transparent !important; +} + +.loader-cyan.ball-rotate div:before, +.loader-cyan.ball-rotate div:after +{ + background-color: #00bcd4 !important; +} + +.loader-cyan.ball-triangle-path div +{ + border-color: #00bcd4 !important; + background-color: transparent !important; +} + +.loader-cyan.ball-scale-ripple div +{ + border-color: #00bcd4 !important; + background-color: transparent !important; +} + +.loader-cyan.ball-scale-ripple-multiple div +{ + border-color: #00bcd4 !important; + background-color: transparent !important; +} + +.loader-cyan.triangle-skew-spin div +{ + border-bottom-color: #00bcd4 !important; + background-color: transparent !important; +} + +.loader-cyan.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #00bcd4), to(#00bcd4)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #00bcd4 30%, #00bcd4 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #00bcd4 30%, #00bcd4 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #00bcd4 30%, #00bcd4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #00bcd4), to(#00bcd4)); + background-image: linear-gradient(transparent 0%, transparent 70%, #00bcd4 30%, #00bcd4 100%); +} + +.loader-cyan.fading-circle div +{ + background-color: transparent !important; +} +.loader-cyan.fading-circle div:before +{ + background-color: #00bcd4 !important; +} + +.loader-cyan.folding-cube div +{ + background-color: transparent !important; +} +.loader-cyan.folding-cube div:before +{ + background-color: #00bcd4 !important; +} + +.loader-teal div +{ + background-color: #009688 !important; +} + +.loader-teal.ball-clip-rotate div +{ + border-color: #009688 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-teal.ball-clip-rotate-pulse div:first-child +{ + background: #009688 !important; +} + +.loader-teal.ball-clip-rotate-pulse div:last-child +{ + border-color: #009688 transparent #009688 transparent !important; + background: transparent !important; +} + +.loader-teal.ball-clip-rotate-multiple div +{ + border-color: transparent #009688 transparent #009688 !important; + background-color: transparent !important; +} + +.loader-teal.ball-rotate div:before, +.loader-teal.ball-rotate div:after +{ + background-color: #009688 !important; +} + +.loader-teal.ball-triangle-path div +{ + border-color: #009688 !important; + background-color: transparent !important; +} + +.loader-teal.ball-scale-ripple div +{ + border-color: #009688 !important; + background-color: transparent !important; +} + +.loader-teal.ball-scale-ripple-multiple div +{ + border-color: #009688 !important; + background-color: transparent !important; +} + +.loader-teal.triangle-skew-spin div +{ + border-bottom-color: #009688 !important; + background-color: transparent !important; +} + +.loader-teal.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #009688), to(#009688)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #009688 30%, #009688 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #009688 30%, #009688 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #009688 30%, #009688 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #009688), to(#009688)); + background-image: linear-gradient(transparent 0%, transparent 70%, #009688 30%, #009688 100%); +} + +.loader-teal.fading-circle div +{ + background-color: transparent !important; +} +.loader-teal.fading-circle div:before +{ + background-color: #009688 !important; +} + +.loader-teal.folding-cube div +{ + background-color: transparent !important; +} +.loader-teal.folding-cube div:before +{ + background-color: #009688 !important; +} + +.loader-yellow div +{ + background-color: #ffeb3b !important; +} + +.loader-yellow.ball-clip-rotate div +{ + border-color: #ffeb3b !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-yellow.ball-clip-rotate-pulse div:first-child +{ + background: #ffeb3b !important; +} + +.loader-yellow.ball-clip-rotate-pulse div:last-child +{ + border-color: #ffeb3b transparent #ffeb3b transparent !important; + background: transparent !important; +} + +.loader-yellow.ball-clip-rotate-multiple div +{ + border-color: transparent #ffeb3b transparent #ffeb3b !important; + background-color: transparent !important; +} + +.loader-yellow.ball-rotate div:before, +.loader-yellow.ball-rotate div:after +{ + background-color: #ffeb3b !important; +} + +.loader-yellow.ball-triangle-path div +{ + border-color: #ffeb3b !important; + background-color: transparent !important; +} + +.loader-yellow.ball-scale-ripple div +{ + border-color: #ffeb3b !important; + background-color: transparent !important; +} + +.loader-yellow.ball-scale-ripple-multiple div +{ + border-color: #ffeb3b !important; + background-color: transparent !important; +} + +.loader-yellow.triangle-skew-spin div +{ + border-bottom-color: #ffeb3b !important; + background-color: transparent !important; +} + +.loader-yellow.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ffeb3b), to(#ffeb3b)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #ffeb3b 30%, #ffeb3b 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #ffeb3b 30%, #ffeb3b 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #ffeb3b 30%, #ffeb3b 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ffeb3b), to(#ffeb3b)); + background-image: linear-gradient(transparent 0%, transparent 70%, #ffeb3b 30%, #ffeb3b 100%); +} + +.loader-yellow.fading-circle div +{ + background-color: transparent !important; +} +.loader-yellow.fading-circle div:before +{ + background-color: #ffeb3b !important; +} + +.loader-yellow.folding-cube div +{ + background-color: transparent !important; +} +.loader-yellow.folding-cube div:before +{ + background-color: #ffeb3b !important; +} + +.loader-amber div +{ + background-color: #ffc107 !important; +} + +.loader-amber.ball-clip-rotate div +{ + border-color: #ffc107 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-amber.ball-clip-rotate-pulse div:first-child +{ + background: #ffc107 !important; +} + +.loader-amber.ball-clip-rotate-pulse div:last-child +{ + border-color: #ffc107 transparent #ffc107 transparent !important; + background: transparent !important; +} + +.loader-amber.ball-clip-rotate-multiple div +{ + border-color: transparent #ffc107 transparent #ffc107 !important; + background-color: transparent !important; +} + +.loader-amber.ball-rotate div:before, +.loader-amber.ball-rotate div:after +{ + background-color: #ffc107 !important; +} + +.loader-amber.ball-triangle-path div +{ + border-color: #ffc107 !important; + background-color: transparent !important; +} + +.loader-amber.ball-scale-ripple div +{ + border-color: #ffc107 !important; + background-color: transparent !important; +} + +.loader-amber.ball-scale-ripple-multiple div +{ + border-color: #ffc107 !important; + background-color: transparent !important; +} + +.loader-amber.triangle-skew-spin div +{ + border-bottom-color: #ffc107 !important; + background-color: transparent !important; +} + +.loader-amber.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ffc107), to(#ffc107)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #ffc107 30%, #ffc107 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #ffc107 30%, #ffc107 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #ffc107 30%, #ffc107 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #ffc107), to(#ffc107)); + background-image: linear-gradient(transparent 0%, transparent 70%, #ffc107 30%, #ffc107 100%); +} + +.loader-amber.fading-circle div +{ + background-color: transparent !important; +} +.loader-amber.fading-circle div:before +{ + background-color: #ffc107 !important; +} + +.loader-amber.folding-cube div +{ + background-color: transparent !important; +} +.loader-amber.folding-cube div:before +{ + background-color: #ffc107 !important; +} + +.loader-blue-grey div +{ + background-color: #607d8b !important; +} + +.loader-blue-grey.ball-clip-rotate div +{ + border-color: #607d8b !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-blue-grey.ball-clip-rotate-pulse div:first-child +{ + background: #607d8b !important; +} + +.loader-blue-grey.ball-clip-rotate-pulse div:last-child +{ + border-color: #607d8b transparent #607d8b transparent !important; + background: transparent !important; +} + +.loader-blue-grey.ball-clip-rotate-multiple div +{ + border-color: transparent #607d8b transparent #607d8b !important; + background-color: transparent !important; +} + +.loader-blue-grey.ball-rotate div:before, +.loader-blue-grey.ball-rotate div:after +{ + background-color: #607d8b !important; +} + +.loader-blue-grey.ball-triangle-path div +{ + border-color: #607d8b !important; + background-color: transparent !important; +} + +.loader-blue-grey.ball-scale-ripple div +{ + border-color: #607d8b !important; + background-color: transparent !important; +} + +.loader-blue-grey.ball-scale-ripple-multiple div +{ + border-color: #607d8b !important; + background-color: transparent !important; +} + +.loader-blue-grey.triangle-skew-spin div +{ + border-bottom-color: #607d8b !important; + background-color: transparent !important; +} + +.loader-blue-grey.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #607d8b), to(#607d8b)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #607d8b 30%, #607d8b 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #607d8b 30%, #607d8b 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #607d8b 30%, #607d8b 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #607d8b), to(#607d8b)); + background-image: linear-gradient(transparent 0%, transparent 70%, #607d8b 30%, #607d8b 100%); +} + +.loader-blue-grey.fading-circle div +{ + background-color: transparent !important; +} +.loader-blue-grey.fading-circle div:before +{ + background-color: #607d8b !important; +} + +.loader-blue-grey.folding-cube div +{ + background-color: transparent !important; +} +.loader-blue-grey.folding-cube div:before +{ + background-color: #607d8b !important; +} + +.loader-grey-blue div +{ + background-color: #1b2942 !important; +} + +.loader-grey-blue.ball-clip-rotate div +{ + border-color: #1b2942 !important; + border-bottom-color: transparent !important; + background-color: transparent !important; +} + +.loader-grey-blue.ball-clip-rotate-pulse div:first-child +{ + background: #1b2942 !important; +} + +.loader-grey-blue.ball-clip-rotate-pulse div:last-child +{ + border-color: #1b2942 transparent #1b2942 transparent !important; + background: transparent !important; +} + +.loader-grey-blue.ball-clip-rotate-multiple div +{ + border-color: transparent #1b2942 transparent #1b2942 !important; + background-color: transparent !important; +} + +.loader-grey-blue.ball-rotate div:before, +.loader-grey-blue.ball-rotate div:after +{ + background-color: #1b2942 !important; +} + +.loader-grey-blue.ball-triangle-path div +{ + border-color: #1b2942 !important; + background-color: transparent !important; +} + +.loader-grey-blue.ball-scale-ripple div +{ + border-color: #1b2942 !important; + background-color: transparent !important; +} + +.loader-grey-blue.ball-scale-ripple-multiple div +{ + border-color: #1b2942 !important; + background-color: transparent !important; +} + +.loader-grey-blue.triangle-skew-spin div +{ + border-bottom-color: #1b2942 !important; + background-color: transparent !important; +} + +.loader-grey-blue.semi-circle-spin div +{ + background-color: transparent !important; + background-image: -webkit-gradient(linear, right top, right bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #1b2942), to(#1b2942)); + background-image: -webkit-linear-gradient(transparent 0%, transparent 70%, #1b2942 30%, #1b2942 100%); + background-image: -moz-linear-gradient(transparent 0%, transparent 70%, #1b2942 30%, #1b2942 100%); + background-image: -o-linear-gradient(transparent 0%, transparent 70%, #1b2942 30%, #1b2942 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(70%, transparent), color-stop(30%, #1b2942), to(#1b2942)); + background-image: linear-gradient(transparent 0%, transparent 70%, #1b2942 30%, #1b2942 100%); +} + +.loader-grey-blue.fading-circle div +{ + background-color: transparent !important; +} +.loader-grey-blue.fading-circle div:before +{ + background-color: #1b2942 !important; +} + +.loader-grey-blue.folding-cube div +{ + background-color: transparent !important; +} +.loader-grey-blue.folding-cube div:before +{ + background-color: #1b2942 !important; +} +.mb-1, .my-1 { + margin-bottom: 1rem !important; + margin-left: 0.3rem; +} diff --git a/src/app/content/ngbbootstrap/spinners/spinners.component.html b/src/app/content/ngbbootstrap/spinners/spinners.component.html new file mode 100644 index 0000000..d8619ef --- /dev/null +++ b/src/app/content/ngbbootstrap/spinners/spinners.component.html @@ -0,0 +1,868 @@ +
+
+
+ +
+
+ +
+
+
+

Spinners with Icons

+

Use .spinner class to icon for spin effect.

+
+
+
+
+
+
+

Loading Spinner Option 1

+
+
+
+

Using .la-refresh spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 2

+
+
+
+

Using .la-asterisk spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 3

+
+
+
+

Using .la-recycle spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 4

+
+
+
+

Using .la-futbol-o spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 5

+
+
+
+

Using .la-gear spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 6

+
+
+
+

Using .la-circle-o-notch spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 7

+
+
+
+

Using .la-rotate-left spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 8

+
+
+
+

Using .la-star-o spinner Icon class.

+ + +
+
+
+
+
+
+
+

Loading Spinner Option 9

+
+
+
+

Using .la-spinner spinner Icon class.

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

Loaders.css

+

Delightful and performance-focused pure css loading animations.

+
+
+
+
+
+
+

Ball Pulse

+
+
+
+

Using .ball-pulse class for Ball Pulse Loader.

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

Grid Ball Pulse

+
+
+
+

Using .ball-pulse class for Grid Ball Pulse Loader.

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

Ball Clip Rotate

+
+
+
+

Using .ball-clip-rotate class for Ball Clip Rotate Loader.

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

Square Spin

+
+
+
+

Using .square-spin class for Square Spin Loader.

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

Loading Spinner Option 15

+
+
+
+

Using .ball-clip-rotate-multiple class for Multiple Ball Clip Rotate Loader.

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

Ball Pulse Rise

+
+
+
+

Using .ball-pulse-rise class for Ball Pulse Rise Loader.

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

Ball Rotate

+
+
+
+

Using .ball-rotate class for Ball Rotate Loader.

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

Cube Transition

+
+
+
+

Using .cube-transition class for Cube Transition Loader.

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

Ball Zig Zag

+
+
+
+

Using .ball-zig-zag class for Ball Zig Zag Loader.

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

Ball Zig Zag Deflact

+
+
+
+

Using .ball-zig-zag-deflect class for Ball Zig Zag Deflact Loader.

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

Ball Trianle Path

+
+
+
+

Using .ball-triangle-path class for Ball Trianle Path Loader.

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

Ball Scale

+
+
+
+

Using .ball-scale class for Ball Scale Loader.

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

Line Scale

+
+
+
+

Using .line-scale class for Ball Pulse Loader.

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

Line Scale Party

+
+
+
+

Using .line-scale-party class for Line Scale Party Loader.

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

Ball Scale Multiple

+
+
+
+

Using .ball-scale-multiple class for Ball Scale Multiple Loader.

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

Ball Pulse Sync

+
+
+
+

Using .ball-pulse-sync class for Ball Pulse Sync Loader.

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

Ball Beat

+
+
+
+

Using .ball-beat class for Ball Beat Loader.

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

Line Scale Pulse Out

+
+
+
+

Using .line-scale-pulse-out class for Line Scale Pulse Out Loader.

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

Line Scale Pulse Out Rapid

+
+
+
+

Using .line-scale-pulse-out-rapid class for Line Scale Pulse Out Rapid Loader.

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

Ball Scale Ripple

+
+
+
+

Using .ball-scale-ripple class for Ball Scale Ripple Loader.

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

Ball Spin Fade Loader

+
+
+
+

Using .ball-spin-fade-loader class for Ball Spin Fade Loader Loader.

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

Line Spin Fade Loader

+
+
+
+

Using .line-spin-fade-loader class for Line Spin Fade Loader Loader.

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

Tiangle Skew Spin

+
+
+
+

Using .triangle-skew-spin class for Tiangle Skew Spin Loader.

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

Semi Circle Spin

+
+
+
+

Using .semi-circle-spin class for Semi Circle Spin Loader.

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

Ball Grid Beat

+
+
+
+

Using .ball-grid-beat class for Ball Grid Beat Loader.

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

Ball Scale Random

+
+
+
+

Using .ball-scale-random class for Ball Scale Random Loader.

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

Double Bounce

+
+
+
+

Using .double-bounce class for Double Bounce Loader.

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

Chasing Dots

+
+
+
+

Using .chasing-dots class for Chasing Dots Loader.

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

Fading Circle

+
+
+
+

Using .fading-circle class for Fading Circle Loader.

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

Folding Cube

+
+
+
+

Using .folding-cube class for Folding Cube Loader.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/spinners/spinners.component.spec.ts b/src/app/content/ngbbootstrap/spinners/spinners.component.spec.ts new file mode 100644 index 0000000..1d9b27a --- /dev/null +++ b/src/app/content/ngbbootstrap/spinners/spinners.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SpinnersComponent } from './spinners.component'; + +describe('SpinnersComponent', () => { + let component: SpinnersComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SpinnersComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SpinnersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/spinners/spinners.component.ts b/src/app/content/ngbbootstrap/spinners/spinners.component.ts new file mode 100644 index 0000000..fc47554 --- /dev/null +++ b/src/app/content/ngbbootstrap/spinners/spinners.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-spinners', + templateUrl: './spinners.component.html', + styleUrls: ['./spinners.component.css'] +}) +export class SpinnersComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Spinners', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Spinners', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/ngbbootstrap/tooltips/tooltips.component.css b/src/app/content/ngbbootstrap/tooltips/tooltips.component.css new file mode 100644 index 0000000..716e4de --- /dev/null +++ b/src/app/content/ngbbootstrap/tooltips/tooltips.component.css @@ -0,0 +1,23 @@ +:host ::ng-deep .background-color .tooltip-inner { + background-color: #E83E8C; +} +:host ::ng-deep .background-color .arrow::before { + border-top-color: #E83E8C; +} + +:host ::ng-deep .text-color .tooltip-inner { + color: #1E9FF2; +} + +:host ::ng-deep .background-text .tooltip-inner{ + color: black; + background-color: #FF4961 +} + +:host ::ng-deep .rightTooltipPosition{ + width : 120px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/ngbbootstrap/tooltips/tooltips.component.html b/src/app/content/ngbbootstrap/tooltips/tooltips.component.html new file mode 100644 index 0000000..eae8833 --- /dev/null +++ b/src/app/content/ngbbootstrap/tooltips/tooltips.component.html @@ -0,0 +1,418 @@ +
+
+
+ +
+
+ +
+
+
+ + + Static demo + + +

Four options are available: top, right, bottom, and left aligned.

+
+
+
Basic Top Tooltip
+ +

Add placement="top" to add top tooltip.

+
+
+
Basic Right Tooltip
+ +

Add placement="right" to add right tooltip.

+
+
+
Basic Bottom Tooltip
+ +

Add placement="bottom" to add bottom tooltip.

+
+
+
Basic Left Tooltip
+ +

Add placement="left" to add left tooltip.

+
+
+
+
+
+
+
+ + +
+
+
+ + + Tooltip Positions + + +

Four options are available: top, right, bottom, and left aligned.

+
+
+
Basic Top Tooltip
+
+ +
+

Add placement="top" to add top tooltip.

+
+
+
Basic Right Tooltip
+
+ +
+

Add placement="right" to add right tooltip. +

+
+
+
Basic Bottom Tooltip
+
+ +
+

Add placement="bottom" to add bottom tooltip. +

+
+
+
Basic Left Tooltip
+
+ +
+

Add placement="left" to add left tooltip.

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

Tooltip Events

+
+
+
+
+
+
Shown Event
+
+ +
+

This event is fired when the tooltip has been made + visible to the + user.

+
+
+
Hidden Event
+
+ +
+

This event is fired when the tooltip has finished being + hidden from + the user.

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

Tooltip Methods

+
+
+
+

This is considered a “manual” triggering of the tooltip. Tooltips with zero-length + titles are + never + displayed.

+
+
+
Show
+
+ +
+

Reveals an element’s tooltip. Returns to the caller + before the + tooltip + has actually been shown.

+
+
+
Hide
+
+ +
+

Hides an element’s tooltip. Returns to the caller before + the tooltip + has actually been hidden.

+
+
+
Toggle
+
+ +
+

Toggles an element’s tooltip. Returns to the caller + before the + tooltip + has actually been shown or hidden.

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

Tooltip Triggers

+
+
+
+

Tooltip is triggered using - click | hover | focus | manual options. You may pass + multiple + triggers; separate them with a space. "manual" cannot be combined with any other + trigger.

+
+
+
Click
+
+ +
+

Use triggers="click" for click trigger. +

+
+
+
Focus
+
+ +
+

Use triggers="focus" for focus trigger. +

+
+
+
Hover
+
+ +
+

Use triggers="hover" for hover trigger. + This is a + default trigger.

+
+
+
Manual
+
+ +
+

Use triggers="manual" for manual + trigger.

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

Tooltip Options

+
+
+
+
+
+
Supports HTML
+
+ This is HTML tooltip + +
+

Useng-template for HTML supported trigger.

+
+
+
Tooltip Template
+
+ +
+

Base HTML to use when creating the tooltip. The + tooltip's title will + be injected into the .tooltip-inner. .tooltip-arrow will + become the + tooltip's arrow.The outermost wrapper element should have the + .tooltip class.

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

Tooltip Color Options

+
+
+
+
+
+
Custom Tooltip Backround Color
+
+ +
+

Use tooltipClass for Custom + tooltip. You + can change tooltip color using custom class.

+
+
+
Custom Tooltip Text Color
+
+ +
+

Use tooltipClass for Custom + tooltip. You + can change tooltip text color using custom class.

+
+
+
Custom Tooltip Background & Text Color
+
+ +
+

Use tooltipClass for Custom + bordered + colored tooltip. You can change tooltip background and text color using custom class.

+
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/ngbbootstrap/tooltips/tooltips.component.spec.ts b/src/app/content/ngbbootstrap/tooltips/tooltips.component.spec.ts new file mode 100644 index 0000000..52b4fde --- /dev/null +++ b/src/app/content/ngbbootstrap/tooltips/tooltips.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TooltipsComponent } from './tooltips.component'; + +describe('TooltipsComponent', () => { + let component: TooltipsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TooltipsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TooltipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/ngbbootstrap/tooltips/tooltips.component.ts b/src/app/content/ngbbootstrap/tooltips/tooltips.component.ts new file mode 100644 index 0000000..d7b2ac1 --- /dev/null +++ b/src/app/content/ngbbootstrap/tooltips/tooltips.component.ts @@ -0,0 +1,83 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-tooltips', + templateUrl: './tooltips.component.html', + styleUrls: ['./tooltips.component.css'] +}) +export class TooltipsComponent implements OnInit { + + @BlockUI('staticDemo') blockUIStaticDemo: NgBlockUI; + @BlockUI('tooltipPositions') blockUITooltipPositions: NgBlockUI; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Tooltip', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Component', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Tooltip', + 'isLink': false + } + ] + }; + } + + tooltipShowEvent() { + alert('Show event fired.'); + } + + tooltipShownEvent() { + alert('Shown event fired.'); + } + + tooltipHideEvent() { + alert('Hide event fired.'); + } + + tooltipHiddenEvent() { + alert('Hidden event fired.'); + } + + doAlert() { + console.log(''); + } + + reloadStaticDemo() { + this.blockUIStaticDemo.start('Loading..'); + + setTimeout(() => { + this.blockUIStaticDemo.stop(); + }, 2500); + } + + reloadTooltipPositions() { + this.blockUITooltipPositions.start('Loading..'); + + setTimeout(() => { + this.blockUITooltipPositions.stop(); + }, 2500); + } + + +} diff --git a/src/app/content/pages/dropzone/dropzone.component.css b/src/app/content/pages/dropzone/dropzone.component.css new file mode 100644 index 0000000..f4d5b3c --- /dev/null +++ b/src/app/content/pages/dropzone/dropzone.component.css @@ -0,0 +1,31 @@ +* { + font-family: Lato; + } + + ngx-dropzone, + .custom-dropzone { + margin: 20px; + } + + :host ::ng-deep .dropzone { + max-width: fit-content !important; +} +:host ::ng-deep .dropzone1 { + position: unset !important; + overflow-wrap: break-word; +} +:host ::ng-deep .dz-default { + font-size: 2rem; + color: #666ee8 !important; + text-align: center; +} + +:host ::ng-deep ._dropzone{ + border: 2px dashed #666ee8; +} +:host ::ng-deep .custom-dropzone { + height: 250px; + background: #333; + color: #fff; + border: 5px dashed #666ee8 !important; +} \ No newline at end of file diff --git a/src/app/content/pages/dropzone/dropzone.component.html b/src/app/content/pages/dropzone/dropzone.component.html new file mode 100644 index 0000000..c8531ae --- /dev/null +++ b/src/app/content/pages/dropzone/dropzone.component.html @@ -0,0 +1,127 @@ +
+
+
+ +
+
+ +
+
+
+ + + Single File Upload + + +

This example uploads a single file using ngx-dropzone. + User can either click on the dropzone area and select single files or just drop all selected files + in the dropzone area. This example is the most basic setup for dropzone.

+
+
+

The default dropzone.

+
+ + +
+ Drop files here to upload +
+
+ + {{ f.name }} ({{ f.type }}) + +
+
+

The disabled but expanding dropzone.

+
+ + + +
+ Drop files here to upload +
+
+ + {{ f.name }} ({{ f.type }}) + +
+
+

A custom dropzone.

+
+ +
+ +
+ My custome dropzone +
+
+ + {{ f.name }} ({{ f.type }}) + +
+
+ +
+
+
+
+
+
+ + + Multiple File Upload + + +

This example uploads a multiple files using ngx-dropzone. + By default, dropzone is a multiple file uploader. User can either click + on the dropzone area and select multiple files or just drop all selected files + in the dropzone area. This example is the most basic setup for dropzone.

+ + +
+ Drop files here to upload +
+
+ + {{ f.name }} ({{ f.type }}) + +
+ +
+

The disabled but expanding dropzone.

+
+ + + +
+ Drop files here to upload +
+
+ + {{ f.name }} ({{ f.type }}) + +
+ +
+

A custom dropzone.

+
+ +
+ +
+ My custome dropzone +
+
+ + {{ f.name }} ({{ f.type }}) + +
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/pages/dropzone/dropzone.component.spec.ts b/src/app/content/pages/dropzone/dropzone.component.spec.ts new file mode 100644 index 0000000..2021f54 --- /dev/null +++ b/src/app/content/pages/dropzone/dropzone.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DropzoneComponent } from './dropzone.component'; + +describe('DropzoneComponent', () => { + let component: DropzoneComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DropzoneComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DropzoneComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/dropzone/dropzone.component.ts b/src/app/content/pages/dropzone/dropzone.component.ts new file mode 100644 index 0000000..e2da114 --- /dev/null +++ b/src/app/content/pages/dropzone/dropzone.component.ts @@ -0,0 +1,60 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +@Component({ + selector: 'app-dropzone', + templateUrl: './dropzone.component.html', + styleUrls: ['./dropzone.component.css'] +}) +export class DropzoneComponent implements OnInit { + public breadcrumb: any; + @BlockUI('dropzoneGallery') blockUIDropzone: NgBlockUI; + constructor() { } + ngOnInit(): void { + this.breadcrumb = { + 'mainlabel': 'Dropzone', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Page', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Dropzone', + 'isLink': false + } + ] + }; + } + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + files: File[] = []; + SelectMultipleFile(event) { + this.files.push(...event.addedFiles); + } + file: any; + SelectSingleFile(event) { + this.file = event.addedFiles; + } + MultiplefilesonRemove(event) { + this.files.splice(this.files.indexOf(event), 1); + } + SinglefileonRemove(event) { + this.file.splice(this.files.indexOf(event), 1); + } + reloadDorpzone() { + this.blockUIDropzone.start('Loading..'); + + setTimeout(() => { + this.blockUIDropzone.stop(); + }, 2500); + } +} diff --git a/src/app/content/pages/dropzone/dropzone.module.ts b/src/app/content/pages/dropzone/dropzone.module.ts new file mode 100644 index 0000000..c295eab --- /dev/null +++ b/src/app/content/pages/dropzone/dropzone.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DropzoneComponent } from './dropzone.component'; +import { RouterModule } from '@angular/router'; +import { NgxDropzoneModule } from 'ngx-dropzone'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { CardModule } from '../../partials/general/card/card.module'; +@NgModule({ + declarations: [DropzoneComponent], + imports: [ + CommonModule, + NgxDropzoneModule, + BreadcrumbModule, + BlockUIModule, + CardModule, + RouterModule.forChild([ + { + path: 'dropzone', + component: DropzoneComponent + } + ]) + ] +}) +export class DropzoneModule { } diff --git a/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.css b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.css new file mode 100644 index 0000000..50eca6c --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.css @@ -0,0 +1,17 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .card .card { + margin-bottom: auto; +} +:host ::ng-deep .my-gallery img{ + margin-right: 1px; + margin-left: 1px; + border-top-left-radius: calc(.35rem - 1px); + border-top-right-radius: calc(.35rem - 1px); + width: 100%; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important; +} diff --git a/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.html b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.html new file mode 100644 index 0000000..18362a7 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.html @@ -0,0 +1,269 @@ +
+
+
+ +
+
+
+ + + Description + + + +
+
+

Video & Image gallery grid with title, description & photo-swipe integration. Display gallery in 4-2-1 columns.

+

Please read the photo-swipe gallery documentation for usage information.

+
+
+
+
+
+ + +
+ + + Image gallery + + +
+
+

Image gallery grid with title, description & photo-swipe integration. Display images gallery in 4-2-1 + columns and photo-swipe provides gallery features.

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

Video gallery

+
+
+
+
+

This section contain responsive embedded video gallery with grid 3-2-1 columns with title & + description. This demo contain vimeo and youtube embedded videos.

+
+
+ +
+ +
+
Vimeo
+
+
+
+ +
+
+

Card title

+

This is a longer card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+

Card title

+

This card has supporting text below as a natural lead-in to additional content. +

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to + additional content. This card has even longer content than the first to show that equal height + action.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+

You Tube

+
+
+
+
+ +
+
+

Card title

+

This is a longer card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+

Card title

+

This card has supporting text below as a natural lead-in to additional content. +

+

Last updated 3 mins ago

+
+
+
+
+ +
+
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to + additional content. This card has even longer content than the first to show that equal height + action.

+

Last updated 3 mins ago

+
+
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.spec.ts b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.spec.ts new file mode 100644 index 0000000..1595fe6 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { GalleryGridDescComponent } from './gallery-grid-desc.component'; + +describe('GalleryGridDescComponent', () => { + let component: GalleryGridDescComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ GalleryGridDescComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GalleryGridDescComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.ts b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.ts new file mode 100644 index 0000000..5110c3c --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid-desc/gallery-grid-desc.component.ts @@ -0,0 +1,139 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +declare const require: any; +@Component({ + selector: 'app-gallery-grid-desc', + templateUrl: './gallery-grid-desc.component.html', + styleUrls: ['./gallery-grid-desc.component.css'] +}) +export class GalleryGridDescComponent implements OnInit { + + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + options = { + close: true, + expand: false, + minimize: false, + reload: true + }; + imageOptions = { + close: true, + expand: true, + minimize: true, + reload: true + }; + public breadcrumb: any; + + @BlockUI('imageGallery') blockUIImageGallery: NgBlockUI; + + constructor() { } + + ngOnInit() { + + this.breadcrumb = { + 'mainlabel': 'Gallery Media Grid With Description', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Gallery', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Gallery Media Grid With Description', + 'isLink': false + } + ] + }; + } + + reloadImageGallery() { + this.blockUIImageGallery.start('Loading..'); + + setTimeout(() => { + this.blockUIImageGallery.stop(); + }, 2500); + } +} diff --git a/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.css b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.css new file mode 100644 index 0000000..3084103 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.css @@ -0,0 +1,26 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .card .card { + margin-bottom: auto; +} +:host ::ng-deep .my-gallery img{ + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; + + margin-bottom: 15px; +} +:host ::ng-deep .my-gallery .img-thumbnail { + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} diff --git a/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.html b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.html new file mode 100644 index 0000000..3d36f90 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.html @@ -0,0 +1,256 @@ +
+
+
+ +
+
+ + + + + + + + +
+
+
\ No newline at end of file diff --git a/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.spec.ts b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.spec.ts new file mode 100644 index 0000000..05bb562 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { GalleryGridComponent } from './gallery-grid.component'; + +describe('GalleryGridComponent', () => { + let component: GalleryGridComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ GalleryGridComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GalleryGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.ts b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.ts new file mode 100644 index 0000000..1016df7 --- /dev/null +++ b/src/app/content/pages/gallery/gallery-grid/gallery-grid.component.ts @@ -0,0 +1,226 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + + +@Component({ + selector: 'app-gallery-grid', + templateUrl: './gallery-grid.component.html', + styleUrls: ['./gallery-grid.component.css'] +}) +export class GalleryGridComponent implements OnInit { + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + options = { + close: true, + expand: false, + minimize: false, + reload: true + }; + + imageoptions = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + @BlockUI('imageGallery') blockUIImageGallery: NgBlockUI; + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + // this.image1 = new Image(); + // this.image1.largeUrl = '../../../../../assets/images/gallery/1.jpg'; + // this.image1.height = 4296; + // this.image1.width = 4434; + // this.image1.id = 0; + // this.image1.size = `${this.image1.width}x${this.image1.height}`; + // this.image1.thumbUrl = '../../../../../assets/images/gallery/1.jpg'; + // this.image2 = new Image(); + // this.image2.largeUrl = '../../../../../assets/images/gallery/2.jpg'; + // this.image2.height = 4296; + // this.image2.width = 4434; + // this.image2.id = 1; + // this.image2.size = `${this.image2.width}x${this.image2.height}`; + // this.image2.thumbUrl = '../../../../../assets/images/gallery/2.jpg'; + // this.image3 = new Image(); + // this.image3.largeUrl = '../../../../../assets/images/gallery/3.jpg'; + // this.image3.height = 4296; + // this.image3.width = 4434; + // this.image3.id = 2; + // this.image3.size = `${this.image3.width}x${this.image3.height}`; + // this.image3.thumbUrl = '../../../../../assets/images/gallery/3.jpg'; + // this.image3.description = 'hello world'; + // this.image3.author = 'David Wollschlegel'; + // this.image4 = new Image(); + // this.image4.largeUrl = '../../../../../assets/images/gallery/4.jpg'; + // this.image4.height = 4296; + // this.image4.width = 4434; + // this.image4.id = 3; + // this.image4.size = `${this.image4.width}x${this.image4.height}`; + // this.image4.thumbUrl = '../../../../../assets/images/gallery/4.jpg'; + // this.image5 = new Image(); + // this.image5.largeUrl = '../../../../../assets/images/gallery/5.jpg'; + // this.image5.height = 4296; + // this.image5.width = 4434; + // this.image5.id = 4; + // this.image5.size = `${this.image5.width}x${this.image5.height}`; + // this.image5.thumbUrl = '../../../../../assets/images/gallery/5.jpg'; + // this.image6 = new Image(); + // this.image6.largeUrl = '../../../../../assets/images/gallery/6.jpg'; + // this.image6.height = 4296; + // this.image6.width = 4434; + // this.image6.id = 5; + // this.image6.size = `${this.image6.width}x${this.image6.height}`; + // this.image6.thumbUrl = '../../../../../assets/images/gallery/6.jpg'; + // this.image7 = new Image(); + // this.image7.largeUrl = '../../../../../assets/images/gallery/7.jpg'; + // this.image7.height = 4296; + // this.image7.width = 4434; + // this.image7.id = 6; + // this.image7.size = `${this.image7.width}x${this.image7.height}`; + // this.image7.thumbUrl = '../../../../../assets/images/gallery/7.jpg'; + // this.image8 = new Image(); + // this.image8.largeUrl = '../../../../../assets/images/gallery/8.jpg'; + // this.image8.height = 4296; + // this.image8.width = 4434; + // this.image8.id = 7; + // this.image8.size = `${this.image4.width}x${this.image4.height}`; + // this.image8.thumbUrl = '../../../../../assets/images/gallery/8.jpg'; + // this.image9 = new Image(); + // this.image9.largeUrl = '../../../../../assets/images/gallery/9.jpg'; + // this.image9.height = 4296; + // this.image9.width = 4434; + // this.image9.id = 8; + // this.image9.size = `${this.image4.width}x${this.image4.height}`; + // this.image9.thumbUrl = '../../../../../assets/images/gallery/9.jpg'; + // this.image10 = new Image(); + // this.image10.largeUrl = '../../../../../assets/images/gallery/10.jpg'; + // this.image10.height = 4296; + // this.image10.width = 4434; + // this.image10.id = 9; + // this.image10.size = `${this.image10.width}x${this.image10.height}`; + // this.image10.thumbUrl = '../../../../../assets/images/gallery/10.jpg'; + // this.image11 = new Image(); + // this.image11.largeUrl = '../../../../../assets/images/gallery/11.jpg'; + // this.image11.height = 4296; + // this.image11.width = 4434; + // this.image11.id = 10; + // this.image11.size = `${this.image11.width}x${this.image11.height}`; + // this.image11.thumbUrl = '../../../../../assets/images/gallery/11.jpg'; + // this.image12 = new Image(); + // this.image12.largeUrl = '../../../../../assets/images/gallery/12.jpg'; + // this.image12.height = 4296; + // this.image12.width = 4434; + // this.image12.id = 11; + // this.image12.size = `${this.image12.width}x${this.image12.height}`; + // this.image12.thumbUrl = '../../../../../assets/images/gallery/12.jpg'; + this.breadcrumb = { + 'mainlabel': 'Gallery Media Grid', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Gallery', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Gallery Media Grid', + 'isLink': false + } + ] + }; + } + + reloadImageGallery() { + this.blockUIImageGallery.start('Loading..'); + + setTimeout(() => { + this.blockUIImageGallery.stop(); + }, 2500); + } + +} diff --git a/src/app/content/pages/gallery/gallery.module.ts b/src/app/content/pages/gallery/gallery.module.ts new file mode 100644 index 0000000..ba54289 --- /dev/null +++ b/src/app/content/pages/gallery/gallery.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { GalleryGridComponent } from './gallery-grid/gallery-grid.component'; +import { GalleryGridDescComponent } from './gallery-grid-desc/gallery-grid-desc.component'; +import { MasonryGalleryComponent } from './masonry-gallery/masonry-gallery.component'; +import { HoverEffectComponent } from './hover-effect/hover-effect.component'; +import { RouterModule } from '@angular/router'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgxMasonryModule } from 'ngx-masonry'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { NgxPhotoswipeModule, LightboxAdapter } from '@fnxone/ngx-photoswipe'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + NgxPhotoswipeModule, + NgxMasonryModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'gallery-grid', + component: GalleryGridComponent + }, + { + path: 'gallery-grid-desc', + component: GalleryGridDescComponent + }, + { + path: 'masonry-gallery', + component: MasonryGalleryComponent + }, + { + path: 'hover-effect', + component: HoverEffectComponent + }, + ]), + ], + // providers: [ + // {provide : LightboxAdapter, useClass : LightboxAdapter} + // ], + declarations: [GalleryGridComponent, GalleryGridDescComponent, MasonryGalleryComponent, + HoverEffectComponent] +}) +export class GalleryModule { } diff --git a/src/app/content/pages/gallery/hover-effect/hover-effect.component.css b/src/app/content/pages/gallery/hover-effect/hover-effect.component.css new file mode 100644 index 0000000..92f15d6 --- /dev/null +++ b/src/app/content/pages/gallery/hover-effect/hover-effect.component.css @@ -0,0 +1,7 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .card .card { + margin-bottom: auto; +} diff --git a/src/app/content/pages/gallery/hover-effect/hover-effect.component.html b/src/app/content/pages/gallery/hover-effect/hover-effect.component.html new file mode 100644 index 0000000..4668669 --- /dev/null +++ b/src/app/content/pages/gallery/hover-effect/hover-effect.component.html @@ -0,0 +1,394 @@ +
+
+
+ +
+
+ +
+ + + Hover Effects + + + +
+
+

Image gallery grid with 30 subtle hover effect. Try to hover below demo images to show each hover + effect.

+
+
+ + +
+
+ +
+ + +
+
+
+ diff --git a/src/app/content/pages/gallery/hover-effect/hover-effect.component.spec.ts b/src/app/content/pages/gallery/hover-effect/hover-effect.component.spec.ts new file mode 100644 index 0000000..831cd04 --- /dev/null +++ b/src/app/content/pages/gallery/hover-effect/hover-effect.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HoverEffectComponent } from './hover-effect.component'; + +describe('HoverEffectComponent', () => { + let component: HoverEffectComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HoverEffectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HoverEffectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/gallery/hover-effect/hover-effect.component.ts b/src/app/content/pages/gallery/hover-effect/hover-effect.component.ts new file mode 100644 index 0000000..657cb7d --- /dev/null +++ b/src/app/content/pages/gallery/hover-effect/hover-effect.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +@Component({ + selector: 'app-hover-effect', + templateUrl: './hover-effect.component.html', + styleUrls: ['./hover-effect.component.css'] +}) +export class HoverEffectComponent implements OnInit { + options = { + close: true, + expand: false, + minimize: false, + reload: true + }; + imageoptions = { + close: true, + expand: true, + minimize: true, + reload: true + }; + public breadcrumb: any; + + @BlockUI('hoverEffects') blockUIHoverEffects: NgBlockUI; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Gallery Hover Effects', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Gallery', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Gallery Hover Effects', + 'isLink': false + } + ] + }; + } + + reloadHoverEffects() { + this.blockUIHoverEffects.start('Loading..'); + + setTimeout(() => { + this.blockUIHoverEffects.stop(); + }, 2500); + } + +} diff --git a/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.css b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.css new file mode 100644 index 0000000..c6babf2 --- /dev/null +++ b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.css @@ -0,0 +1,21 @@ +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +@media screen and (max-width: 1224px) { + .img-thumbnail { + width: 33.33% !important; + } +} + +:host ::ng-deep .card .card { + margin-bottom: auto; +} + +:host ::ng-deep img { + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} diff --git a/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.html b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.html new file mode 100644 index 0000000..80b4093 --- /dev/null +++ b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.html @@ -0,0 +1,34 @@ +
+
+
+ +
+
+ +
+ + + Masonry image gallery + + +
+
+

Masonry Image gallery grid with photo-swipe integration. Auto arrange images based on device screen + size.

+
+
+ +
+
+
+ + +
+
+
diff --git a/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.spec.ts b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.spec.ts new file mode 100644 index 0000000..d4a8f18 --- /dev/null +++ b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { MasonryGalleryComponent } from './masonry-gallery.component'; + +describe('MasonryGalleryComponent', () => { + let component: MasonryGalleryComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ MasonryGalleryComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MasonryGalleryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.ts b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.ts new file mode 100644 index 0000000..9fb3f54 --- /dev/null +++ b/src/app/content/pages/gallery/masonry-gallery/masonry-gallery.component.ts @@ -0,0 +1,82 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgxMasonryOptions, NgxMasonryComponent } from 'ngx-masonry'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +@Component({ + selector: 'app-masonry-gallery', + templateUrl: './masonry-gallery.component.html', + styleUrls: ['./masonry-gallery.component.css'] +}) +export class MasonryGalleryComponent implements OnInit { + + options = { + close: true, + expand: false, + minimize: false, + reload: true + }; + imageoptions = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + @BlockUI('masonryImageGallery') blockUIMasonryImageGallery: NgBlockUI; + @ViewChild(NgxMasonryComponent, {static: false}) + public masonry: NgxMasonryComponent; + public breadcrumb: any; + public masonryOptions: NgxMasonryOptions = { + gutter: 10, + resize: true, + initLayout: true, + fitWidth: true + }; + image = [ + '../../../../../assets/images/portfolio/width-600/portfolio-10.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-8.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-21.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-14.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-1.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-3.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-4.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-2.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-6.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-22.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-9.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-7.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-26.jpg', + '../../../../../assets/images/portfolio/width-600/portfolio-11.jpg', + ]; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Gallery Masonry Grid', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Gallery', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Gallery Masonry Grid', + 'isLink': false + } + ] + }; + } + + reloadMasonryImageGallery() { + this.blockUIMasonryImageGallery.start('Loading..'); + + setTimeout(() => { + this.blockUIMasonryImageGallery.stop(); + }, 2500); + } +} diff --git a/src/app/content/pages/invoice/invoice-list/invoice-list.component.css b/src/app/content/pages/invoice/invoice-list/invoice-list.component.css new file mode 100644 index 0000000..5d1ec73 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-list/invoice-list.component.css @@ -0,0 +1,26 @@ +:host ::ng-deep .group { + background-color: #EDEDED !important; + + +} + +:host ::ng-deep .table tbody+tbody { + border-top: 0px solid #626e82; +} + +:host ::ng-deep .btn-primary { + margin-right: 3px; +} + +:host ::ng-deep .btn-warning { + margin-right: 3px; +} + +.show>.dropdown-menu { + transform: translate3d(-140px, 0px, 0px) !important; +} + +.table_dropdown { + top: 40px !important; + left: 40px !important; +} diff --git a/src/app/content/pages/invoice/invoice-list/invoice-list.component.html b/src/app/content/pages/invoice/invoice-list/invoice-list.component.html new file mode 100644 index 0000000..76c3a16 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-list/invoice-list.component.html @@ -0,0 +1,275 @@ +
+
+
+ +
+
+
+
+
+
+
+

Invoices

+
+ + + + + Due Date + Priority + Balance Due + Assign to + + + +
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateInvoice #Order NoCustomer NameDueAmountBalance DueActions
Paid
{{ invoice.date }} {{ invoice.invoice }}{{ invoice.orderno }}{{ invoice.customername }}{{ invoice.due }}{{ invoice.amount }}{{ invoice.balancedue }} + + + + + + Open Task + Edit Task + + Complete Task + + Assign To + + Delete Task + + + +
Overdue By 1-15 Days +
{{ invoice.date }} {{ invoice.invoice }}{{ invoice.orderno }}{{ invoice.customername }}{{ invoice.due }}{{ invoice.amount }}{{ invoice.balancedue }} + + + + + + Open Task + Edit Task + + Complete Task + + Assign To + + Delete Task + + + +
Overdue By 16-30 Days +
{{ invoice.date }} {{ invoice.invoice }}{{ invoice.orderno }}{{ invoice.customername }}{{ invoice.due }}{{ invoice.amount }}{{ invoice.balancedue }} + + + + + Open Task + Edit Task + + Complete Task + + Assign To + + Delete Task + + + +
Overdue By 31-45 Days
{{ invoice.date }} {{ invoice.invoice }}{{ invoice.orderno }}{{ invoice.customername }}{{ invoice.due }}{{ invoice.amount }}{{ invoice.balancedue }} + + + + + Open Task + Edit Task + + Complete Task + + Assign To + + Delete Task + + +
Overdue By 45+ Days
{{ invoice.date }} {{ invoice.invoice }}{{ invoice.orderno }}{{ invoice.customername }}{{ invoice.due }}{{ invoice.amount }}{{ invoice.balancedue }} + + + + + Open Task + Edit Task + + Complete Task + + Assign To + + Delete Task + + +
DateInvoice #Order NoCustomer NameDueAmountBalance DueActions
+
+ +
+
+
+
+
+
+
+
diff --git a/src/app/content/pages/invoice/invoice-list/invoice-list.component.spec.ts b/src/app/content/pages/invoice/invoice-list/invoice-list.component.spec.ts new file mode 100644 index 0000000..a7811bb --- /dev/null +++ b/src/app/content/pages/invoice/invoice-list/invoice-list.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { InvoiceListComponent } from './invoice-list.component'; + +describe('InvoiceListComponent', () => { + let component: InvoiceListComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ InvoiceListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InvoiceListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/invoice/invoice-list/invoice-list.component.ts b/src/app/content/pages/invoice/invoice-list/invoice-list.component.ts new file mode 100644 index 0000000..c930daf --- /dev/null +++ b/src/app/content/pages/invoice/invoice-list/invoice-list.component.ts @@ -0,0 +1,111 @@ +import { Component, OnInit } from '@angular/core'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +// declare var require: any; +// const data: any = require('../../../../../assets/data/invoice/invoicelist/invoicetable.json'); + +interface Invoice { + date: string; + invoice: string; + orderno: string; + customername: string; + due: string; + amount: string; + balancedue: string; + actions: string; +} +interface Invoice1 { + date: string; + invoice: string; + orderno: string; + customername: string; + due: string; + amount: string; + balancedue: string; + actions: string; +} +interface Invoice2 { + date: string; + invoice: string; + orderno: string; + customername: string; + due: string; + amount: string; + balancedue: string; + actions: string; +} +interface Invoice3 { + date: string; + invoice: string; + orderno: string; + customername: string; + due: string; + amount: string; + balancedue: string; + actions: string; +} +interface Invoice4 { + date: string; + invoice: string; + orderno: string; + customername: string; + due: string; + amount: string; + balancedue: string; + actions: string; +} + +@Component({ + selector: 'app-invoice-list', + templateUrl: './invoice-list.component.html', + styleUrls: ['./invoice-list.component.css'] +}) +export class InvoiceListComponent implements OnInit { + public breadcrumb: any; + data: any; + INVOICE: any; + INVOICE1: any; + INVOICE2: any; + INVOICE3: any; + INVOICE4: any; + allRowsSelected: boolean; + // invoices = this.INVOICE; + // invoices1 = this.INVOICE1; + // invoices2 = this.INVOICE2; + // invoices3 = this.INVOICE3; + // invoices4 = this.INVOICE4; + getTabledata() { + this.INVOICE = this.data['invoice']; + this.INVOICE1 = this.data['invoice1']; + this.INVOICE2 = this.data['invoice2']; + this.INVOICE3 = this.data['invoice3']; + this.INVOICE4 = this.data['invoice4']; + } + constructor( private tableApiservice: TableApiService) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Invoice List', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Invoice', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Invoice List', + 'isLink': false + } + ] + }; + this.tableApiservice.getInvoiceTableData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } +} diff --git a/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.css b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.css new file mode 100644 index 0000000..b65d807 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.css @@ -0,0 +1,4 @@ + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.html b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.html new file mode 100644 index 0000000..45d093e --- /dev/null +++ b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.html @@ -0,0 +1,113 @@ +
+
+
+ +
+
+
+
+

Sales and Expenses

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

Your Top Expenses

+
+ +
+
+
+
+
+
+
+
+
+ + +
+ + + Sales, Receipts and Dues + + + +
+
+ + + + + + + + + + + + + + + + + +
SalesReceiptsDue
{{ element.name }}{{ element.sales }} {{ element.receipts }}{{ element.due }}
+
+
+
+
+
+ +
+ +
+
+
diff --git a/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.spec.ts b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.spec.ts new file mode 100644 index 0000000..d431bd0 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { InvoiceSummaryComponent } from './invoice-summary.component'; + +describe('InvoiceSummaryComponent', () => { + let component: InvoiceSummaryComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ InvoiceSummaryComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InvoiceSummaryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.ts b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.ts new file mode 100644 index 0000000..f12ffcc --- /dev/null +++ b/src/app/content/pages/invoice/invoice-summary/invoice-summary.component.ts @@ -0,0 +1,181 @@ +import { Component, OnInit } from '@angular/core'; +import * as echarts from 'echarts'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; +interface Sales { + name: string; + sales: string; + receipts: string; + due: string; + +} + + +@Component({ + selector: 'app-invoice-summary', + templateUrl: './invoice-summary.component.html', + styleUrls: ['./invoice-summary.component.css'] +}) +export class InvoiceSummaryComponent implements OnInit { + data: any; + chartOption: any; + Sales: any; + ExpenseschartOption: any; + public breadcrumb: any; + constructor(private chartApiservice: ChartApiService) { } + @BlockUI('totalReceivables') blockUITotalReceivables: NgBlockUI; + @BlockUI('salesRecieptsDues') blockUISalesRecieptsDues: NgBlockUI; + getInvoicechart() { + this.Sales = this.data['sales']; + this.chartOption = { + grid: { + x: 40, + x2: 40, + y: 35, + y2: 25 + }, + + // Add tooltip + tooltip: { + trigger: 'axis', + enterable: false, + }, + + // Add legend + legend: { + data: ['Total Sales', 'Total Receipts', 'Total Expenses'] + }, + + // Add custom colors + color: ['#3BAFDA', '#37BC9B', '#F6BB42'], + + // Horizontal axis + xAxis: [{ + type: 'category', + data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] + }], + + // Vertical axis + yAxis: [{ + type: 'value' + }], + + // Add series + series: [ + { + name: 'Total Sales', + type: 'bar', + data: this.data.TotalSales.TotalSales[0], + }, + { + name: 'Total Receipts', + type: 'bar', + data: this.data.TotalReceipts.TotalReceipts[0], + }, + { + name: 'Total Expenses', + type: 'bar', + data: this.data.TotalExpenses.TotalExpenses[0], + } + ] + }; + this.ExpenseschartOption = { + legend: { + orient: 'horizontal', + x: 'center', + data: ['Internet', 'Infrastructure', 'Party', 'Assets', 'Electricity'] + }, + + // Add custom colors + color: ['#FECEA8', '#FF847C', '#E84A5F', '#2A363B', '#99B898'], + + // Display toolbox + toolbox: { + show: true, + orient: 'vertical', + }, + + // Enable drag recalculate + // calculable: true, + + // Add series + series: [ + { + name: 'Browsers', + type: 'pie', + radius: ['50%', '70%'], + center: ['50%', '57.5%'], + itemStyle: { + normal: { + label: { + show: true + }, + labelLine: { + show: true + } + }, + emphasis: { + label: { + show: true, + formatter: '{b}' + '\n\n' + '{c} ({d}%)', + position: 'center', + textStyle: { + fontSize: '17', + fontWeight: '500' + } + } + } + }, + data: [ + { value: 335, name: 'Internet' }, + { value: 1548, name: 'Infrastructure' }, + { value: 135, name: 'Party' }, + { value: 234, name: 'Assets' }, + { value: 650, name: 'Electricity' } + ] + } + ] + }; +} + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Invoice Summary', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Invoice', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Invoice Summary', + 'isLink': false + } + ] + }; + this.chartApiservice.getInvoiceData().subscribe(Response => { + this.data = Response; + this.getInvoicechart(); + }); + } + + reloadTotalReceivables() { + this.blockUITotalReceivables.start('Loading..'); + + setTimeout(() => { + this.blockUITotalReceivables.stop(); + }, 2500); + } + + reloadSalesRecieptsDues() { + this.blockUISalesRecieptsDues.start('Loading..'); + + setTimeout(() => { + this.blockUISalesRecieptsDues.stop(); + }, 2500); + } +} diff --git a/src/app/content/pages/invoice/invoice-template/invoice-template.component.css b/src/app/content/pages/invoice/invoice-template/invoice-template.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/invoice/invoice-template/invoice-template.component.html b/src/app/content/pages/invoice/invoice-template/invoice-template.component.html new file mode 100644 index 0000000..40fd093 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-template/invoice-template.component.html @@ -0,0 +1,198 @@ +
+
+
+ +
+
+
+
+ +
+
+
+
+ company logo +
+
+
+
    +
  • Modern Creative Studio
  • +
  • 4025 Oak Avenue,
  • +
  • Melbourne,
  • +
  • Florida 32940,
  • +
  • USA
  • +
+
+
+
+
+
+

INVOICE

+

# INV-001001

+
    +
  • Balance Due
  • +
  • $ 12,000.00
  • +
+
+
+ + + +
+
+

Bill To

+
+
+
    +
  • Mr. Bret Lezama
  • +
  • 4879 Westfall Avenue,
  • +
  • Albuquerque,
  • +
  • New Mexico-87102.
  • +
+
+
+

Invoice Date : 06/05/2017

+

Terms : Due on Receipt

+

Due Date : 10/05/2017

+
+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Item & DescriptionRateHoursAmount
1 +

Create PSD for mobile APP

+

Simply dummy text of the printing and typesetting industry.

+
$ 20.00/hr120$ 2400.00
2 +

iOS Application Development

+

Pellentesque maximus feugiat lorem at cursus.

+
$ 25.00/hr260$ 6500.00
3 +

WordPress Template Development

+

Vestibulum euismod est eu elit convallis.

+
$ 20.00/hr300$ 6000.00
+
+
+
+
+

Payment Methods:

+
+
+
+ + + + + + + + + + + + + + + + + + + +
Bank name:ABC Bank, USA
Acc name:Amanda Orton
IBAN:FGS165461646546AA
SWIFT code:BTNPP34
+
+
+
+
+
+

Total due

+
+ + + + + + + + + + + + + + + + + + + + + + + +
Sub Total$ 14,900.00
TAX (12%)$ 1,788.00
Total $ 16,688.00
Payment Made(-) $ 4,688.00
Balance Due$ 12,000.00
+
+
+

Authorized person

+ signature +
Amanda Orton
+

Managing Director

+
+
+
+
+ + + + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/content/pages/invoice/invoice-template/invoice-template.component.spec.ts b/src/app/content/pages/invoice/invoice-template/invoice-template.component.spec.ts new file mode 100644 index 0000000..d752ab2 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-template/invoice-template.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { InvoiceTemplateComponent } from './invoice-template.component'; + +describe('InvoiceTemplateComponent', () => { + let component: InvoiceTemplateComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ InvoiceTemplateComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InvoiceTemplateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/invoice/invoice-template/invoice-template.component.ts b/src/app/content/pages/invoice/invoice-template/invoice-template.component.ts new file mode 100644 index 0000000..eb50e49 --- /dev/null +++ b/src/app/content/pages/invoice/invoice-template/invoice-template.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-invoice-template', + templateUrl: './invoice-template.component.html', + styleUrls: ['./invoice-template.component.css'] +}) +export class InvoiceTemplateComponent implements OnInit { + public breadcrumb: any; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Invoice Template', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Invoice', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Invoice Template', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/invoice/invoice.module.ts b/src/app/content/pages/invoice/invoice.module.ts new file mode 100644 index 0000000..4a57995 --- /dev/null +++ b/src/app/content/pages/invoice/invoice.module.ts @@ -0,0 +1,48 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { InvoiceListComponent } from './invoice-list/invoice-list.component'; +import { InvoiceSummaryComponent } from './invoice-summary/invoice-summary.component'; +import { InvoiceTemplateComponent } from './invoice-template/invoice-template.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxEchartsModule } from 'ngx-echarts'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { FormsModule } from '@angular/forms'; +import { CardModule } from '../../partials/general/card/card.module'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; + +@NgModule({ + declarations: [InvoiceListComponent, InvoiceSummaryComponent, InvoiceTemplateComponent], + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + NgxEchartsModule.forRoot({ + echarts: () => import('echarts') + }), + NgbModule, + MatchHeightModule, + FormsModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'invoice-list', + component: InvoiceListComponent + }, + { + path: 'invoice-summary', + component: InvoiceSummaryComponent + }, + { + path: 'invoice-template', + component: InvoiceTemplateComponent + }, + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ] +}) +export class InvoiceModule { } diff --git a/src/app/content/pages/news-feed/news-feed.module.ts b/src/app/content/pages/news-feed/news-feed.module.ts new file mode 100644 index 0000000..ec10f17 --- /dev/null +++ b/src/app/content/pages/news-feed/news-feed.module.ts @@ -0,0 +1,23 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NewsFeedComponent } from './news-feed/news-feed.component'; +import { RouterModule } from '@angular/router'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; + +@NgModule({ + declarations: [NewsFeedComponent], + imports: [ + CommonModule, + BreadcrumbModule, + MatchHeightModule, + RouterModule.forChild([ + { + path: 'news-feed', + component: NewsFeedComponent + }, + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ] +}) +export class NewsFeedModule { } diff --git a/src/app/content/pages/news-feed/news-feed/news-feed.component.css b/src/app/content/pages/news-feed/news-feed/news-feed.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/news-feed/news-feed/news-feed.component.html b/src/app/content/pages/news-feed/news-feed/news-feed.component.html new file mode 100644 index 0000000..68565fd --- /dev/null +++ b/src/app/content/pages/news-feed/news-feed/news-feed.component.html @@ -0,0 +1,361 @@ +
+
+
+ +
+
+ +
+
+
+ + + +
+ +
+
Social
+ +

Social Media, Selfies, and Addiction. +

+
+

Selfie-taking is more than just the taking of a + photograph and can include the editing of the colour and contrast, changing backgrounds, + and + adding other effects.

+ Oct 10, 9:13am +
+
+
+
+ + + + +
+
+ + + +
+ +
+ Real + Estate +
+ +
+
+
+
+
+ + + + +
+
+
+
+
+
+ + + +
+ + +
+
+
+ + + +
+ +
+ +
+
+
+
+
+ + + +
+
+ +
+ Over 75 percent of Pixel users are on Android Pie +
+
+

+ It speaks to the huge benefits that Google can bring to devices when it fully + controls the hardware and software experience like Apple does +

Oct 15, 12:50pm

+ Android +
+
+
+
+
+
+ + + +
+ +
Radio +
+ +
+
+
+
+ +
Travel +
+ +
+
+
+
+
+ + + +
+
+ +
+ The 13 Scariest Horror Games You Should Play For Halloween +
+
+

+ Genre classics like Silent Hill 2, Resident Evil Remake, and Dead Space are + represented here.There's a lot of horror-related media out right now that isn't + just games. +

+ +
+
+
+
+
+
+ + + + +
+
+
+
+ Hong Kong's Tech Dreams Are Becoming a Nightmare + Tech +
+
+
+ At the time, Xiaomi Corp., China’s hottest startup, was shopping around for a listing + venue. Founder Lei Jun was determined to retain control of the company through this + ownership structure.Hong Kong had already missed out on Alibaba Group Holding Ltd.The + situation was clear: Allow dual-class listings +
+ +
+
+
+
+
+
+ + + +
+ +
+
+
+ +
You're Sprinkling Plastic On Food +
+
+ Oct + 14, 5:00am +
+
+
+
+
+
+ +
Foods With Lowest Fat Content
+
+ Oct + 14, 5:00am +
+
+
+
+
+ +
+
+
diff --git a/src/app/content/pages/news-feed/news-feed/news-feed.component.spec.ts b/src/app/content/pages/news-feed/news-feed/news-feed.component.spec.ts new file mode 100644 index 0000000..2dd9cf0 --- /dev/null +++ b/src/app/content/pages/news-feed/news-feed/news-feed.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { NewsFeedComponent } from './news-feed.component'; + +describe('NewsFeedComponent', () => { + let component: NewsFeedComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ NewsFeedComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewsFeedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/news-feed/news-feed/news-feed.component.ts b/src/app/content/pages/news-feed/news-feed/news-feed.component.ts new file mode 100644 index 0000000..7edc538 --- /dev/null +++ b/src/app/content/pages/news-feed/news-feed/news-feed.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-news-feed', + templateUrl: './news-feed.component.html', + styleUrls: ['./news-feed.component.css'] +}) +export class NewsFeedComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'News Feed', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Pages', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'News Feed', + 'isLink': false + } + ] + }; + + } + +} diff --git a/src/app/content/pages/search/search-images/search-images.component.css b/src/app/content/pages/search/search-images/search-images.component.css new file mode 100644 index 0000000..1752ea6 --- /dev/null +++ b/src/app/content/pages/search/search-images/search-images.component.css @@ -0,0 +1,10 @@ +:host ::ng-deep .my-gallery img{ + height: 168px ; + margin-right: 1px; + margin-left: 1px; + max-width: 100% + } +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} diff --git a/src/app/content/pages/search/search-images/search-images.component.html b/src/app/content/pages/search/search-images/search-images.component.html new file mode 100644 index 0000000..354e080 --- /dev/null +++ b/src/app/content/pages/search/search-images/search-images.component.html @@ -0,0 +1,225 @@ +
+
+
+ +
+
+ +
+
+

Images search results

+
+
    +
  • +
  • +
  • +
  • +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+ + +
+ + +
+ +
+ +
+
+ +
+ + +
+
+
\ No newline at end of file diff --git a/src/app/content/pages/search/search-images/search-images.component.spec.ts b/src/app/content/pages/search/search-images/search-images.component.spec.ts new file mode 100644 index 0000000..e5cfe7b --- /dev/null +++ b/src/app/content/pages/search/search-images/search-images.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SearchImagesComponent } from './search-images.component'; + +describe('SearchImagesComponent', () => { + let component: SearchImagesComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SearchImagesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchImagesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/search/search-images/search-images.component.ts b/src/app/content/pages/search/search-images/search-images.component.ts new file mode 100644 index 0000000..6b47152 --- /dev/null +++ b/src/app/content/pages/search/search-images/search-images.component.ts @@ -0,0 +1,113 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-search-images', + templateUrl: './search-images.component.html', + styleUrls: ['./search-images.component.css'] +}) +export class SearchImagesComponent implements OnInit { + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + public breadcrumb: any; + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Search Images', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Search', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Search Images', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/search/search-videos/search-videos.component.css b/src/app/content/pages/search/search-videos/search-videos.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/search/search-videos/search-videos.component.html b/src/app/content/pages/search/search-videos/search-videos.component.html new file mode 100644 index 0000000..5643238 --- /dev/null +++ b/src/app/content/pages/search/search-videos/search-videos.component.html @@ -0,0 +1,366 @@ +
+
+
+ +
+
+ +
+
+

Videos search results

+
+
    +
  • +
  • +
  • +
  • +
+
+
+ +
+ +
+
+ +
+ +
+
+
+ + + +
+ +
+ + + +
+
+
+

About 56,000 results (0.36 seconds)

+ + +
+ +
+
+
+
+
+

Fusce interdum

+
Vivamus eros urna scelerisque
+
+
+ +
+
+

Some quick example text to build on the card title and make up the bulk of the + card's content.Wikipedia

+
    +
  • By : Jhon doe
  • +
  • Views : 11M Views
  • +
  • Released : 16 Jan, 2017
  • +
+
+ + + + +
+
+
+

Related videos

+
+
+
+ +
+ Xbox One S +
+
+
+ +
+ google I/O +
+
+
+ +
+ Windows 10 +
+
+
+ +
+ Galaxy S7 +
+
+
+ +
+ VanMoof +
+
+
+ +
+ OnePlus 3 +
+
+
+ +
+
+
+
+
+ +
+
+
+
diff --git a/src/app/content/pages/search/search-videos/search-videos.component.spec.ts b/src/app/content/pages/search/search-videos/search-videos.component.spec.ts new file mode 100644 index 0000000..2eec681 --- /dev/null +++ b/src/app/content/pages/search/search-videos/search-videos.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SearchVideosComponent } from './search-videos.component'; + +describe('SearchVideosComponent', () => { + let component: SearchVideosComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SearchVideosComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchVideosComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/search/search-videos/search-videos.component.ts b/src/app/content/pages/search/search-videos/search-videos.component.ts new file mode 100644 index 0000000..7f74ee6 --- /dev/null +++ b/src/app/content/pages/search/search-videos/search-videos.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-search-videos', + templateUrl: './search-videos.component.html', + styleUrls: ['./search-videos.component.css'] +}) +export class SearchVideosComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Search Videos', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Search', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Search Videos', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/search/search-website/search-website.component.css b/src/app/content/pages/search/search-website/search-website.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/search/search-website/search-website.component.html b/src/app/content/pages/search/search-website/search-website.component.html new file mode 100644 index 0000000..d04b477 --- /dev/null +++ b/src/app/content/pages/search/search-website/search-website.component.html @@ -0,0 +1,390 @@ +
+
+
+ +
+
+ +
+
+

Website search results

+
+
    +
  • +
  • +
  • +
  • +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+ + +
+
+
+

About 68,00,000 results (0.58 seconds)

+
    + +
  • +
    +

    Modern Admin - Clean Bootstrap + 4 Dashboard HTML Template

    +

    https://pixinvent.com/modern/ +

    +
      +
    • + + + + +  5 stars +
    • +
    • 590 votes
    • +
    • US$ 28.00
    • +
    • In stock
    • +
    +

    Feb 3, 2018 - Modern nec + nisl lobortis erat rutrum dignissim. Colonel Responsive Bootstrap + Admin Template Ut tellus dui, rhoncus quis vulputate non, sodales ac ex. Fusce interdum + efficitur purus quis viverra. Vivamus eros urna, scelerisque ac enim a, pharetra imperdiet + dolor...

    +
    +
    +
    +
    +
    +

    Dashboard

    +

    Donec vitae ante ipsum. In aliquet, urna id varius mattis...

    +
    +
    +
    +
    +

    Form Components

    +

    Velit mi sodales turpis, nec consectetur leo elit.

    +
    +
    +
    +
    +

    Charts

    +

    Vestibulum nec orci placerat, euismod turpis egestas, pretium risus.

    +
    +
    +
    +
    +
    +
    +

    UI Components

    +

    Nam in velit iaculis, vestibulum ex a, porta sapien...

    +
    +
    +
    +
    +

    Support

    +

    Donec ullamcorper est vel dui commodo dictum.

    +
    +
    +
    +
    +

    Documentation

    +

    Ut rhoncus massa diam, in commodo enim posuere quis mosito...

    +
    +
    +
    +
    +
    +
    +
  • + +
  • +
    + + Generic placeholder image + +
    + +
  • + +
  • + +
    +

    The Table - for what do you + feel you would bring to

    +

    http://youtube.com/modern/ +

    +
      +
    • Feb 3, 2018
    • +
    • 1M Views
    • +
    • Uploaded by PlayStation
    • +
    +

    Proceduralize Not the long pole in my tent. Get buy-in pixel + pushing, and quick win . What's the status on the deliverables for eow? goalposts golden goose, + and take five.

    +
    +
  • +
  • +
    +

    Microdosing - deep v actually + schlitz chia

    +

    http://themeforest.net/modern/microdosing

    +

    Lobortis erat rutrum dignissim. Colonel Responsive Bootstrap Admin + Template Ut tellus dui, rhoncus quis vulputate non, sodales ac ex. Fusce interdum + efficitur purus quis viverra. Vivamus eros urna, scelerisque ac enim...

    +
    +
  • +
  • +
    +

    Aesthetic neutra freegan, + mlkshk literally

    +

    http://envato.com/literally/modern/ +

    +

    June 30, 2017 - Humblebrag + mixtape tumblr small batch, marfa blog mumblecore retro sustainable bitters normcore brunch + whatever helvetica. Humblebrag mumblecore beard irony, XOXO + craft beer kogi letterpress freegan vegan disrupt...

    +
    +
  • +
  • +
    +

    iCell - disrupt butcher + pitchfork.

    +

    http://google.com/icell/ +

    +
      +
    • + + + + +  2.5 stars +
    • +
    • 590 votes
    • +
    • US$ 399.00
    • +
    • In stock
    • +
    +

    March 23, 2017 - Church-key selfies bitters man bun + post-ironic. 8-bit 3 wolf moon drinking vinegar, direct trade + plaid cred hashtag offal. Fap XOXO chambray, intelligentsia kogi keytar flexitarian cardigan + kale chips food truck.

    +
    +
  • +
  • +
    +

    Run it - up the flagpole, ping + the boss

    +

    http://mail.example.com/run/ +

    +

    Pixel pushing horsehead offer that jerk from finance really threw me under the bus, but best + practices new economy and take five, punch the tree, and come back in here with a clear head... +

    +
    +
  • +
  • +
    +

    Keytar - jean shorts disrupt + poutine

    +

    http://demo.keytar.com/jean/ +

    +
      +
    • + + + + +  3 stars +
    • +
    • 50 votes
    • +
    • US$ 4.00
    • +
    • Out Of stock
    • +
    +

    Jan 14, 2017 - Brooklyn + ethical sartorial gastropub shabby chic photo booth. Bushwick roof party kogi pitchfork food + truck heirloom, street art occupy blog try-hard single-origin coffee chillwave.

    +
    +
  • +
  • +
    +

    Helicopter - view drop-dead + date

    +

    http://demo.helicopter.com/date/ +

    +

    Sept 18, 2017 - Sacred cow execute pig in a python. We need to + socialize the comms with the wider stakeholder community collaboration through advanced + technlogy three-martini lunch, nor bench mark, hit the ground running. Value prop collaboration + through advanced technlogy. Face time out of the loop. Forcing function.

    +
    +
  • +
+
+ +
+
+
+
+
+

Modern Admin

+
Angular 11+ Bootstrap 5 Admin Dashboard Template
+
+ logo +
+

Some quick example text to build on the card title and make up the bulk of the + card's content.Wikipedia

+ +
+ + + + +
+
+
+

People also search for

+
+
+ Image description + Ashoka +
+
+ Image description + Materialize +
+
+ Image description + HTML +
+
+ Image description + Ashoka +
+
+ Image description + Materialize +
+
+ Image description + HTML +
+
+
+
+
+
+
+
+
+ + +
+
+
diff --git a/src/app/content/pages/search/search-website/search-website.component.spec.ts b/src/app/content/pages/search/search-website/search-website.component.spec.ts new file mode 100644 index 0000000..27ba43a --- /dev/null +++ b/src/app/content/pages/search/search-website/search-website.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SearchWebsiteComponent } from './search-website.component'; + +describe('SearchWebsiteComponent', () => { + let component: SearchWebsiteComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SearchWebsiteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchWebsiteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/search/search-website/search-website.component.ts b/src/app/content/pages/search/search-website/search-website.component.ts new file mode 100644 index 0000000..5312364 --- /dev/null +++ b/src/app/content/pages/search/search-website/search-website.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-search-website', + templateUrl: './search-website.component.html', + styleUrls: ['./search-website.component.css'] +}) +export class SearchWebsiteComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Search Website', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Search', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Search Website', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/search/search.module.spec.ts b/src/app/content/pages/search/search.module.spec.ts new file mode 100644 index 0000000..52d9d0f --- /dev/null +++ b/src/app/content/pages/search/search.module.spec.ts @@ -0,0 +1,14 @@ +import { SearchModule } from './search.module'; + + +describe('PagesModule', () => { + let searchModule: SearchModule; + + beforeEach(() => { + searchModule = new SearchModule(); + }); + + it('should create an instance', () => { + expect(searchModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/search/search.module.ts b/src/app/content/pages/search/search.module.ts new file mode 100644 index 0000000..9ca9f8e --- /dev/null +++ b/src/app/content/pages/search/search.module.ts @@ -0,0 +1,36 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SearchWebsiteComponent } from './search-website/search-website.component'; +import { SearchImagesComponent } from './search-images/search-images.component'; +import { SearchVideosComponent } from './search-videos/search-videos.component'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgxPhotoswipeModule, LightboxAdapter } from '@fnxone/ngx-photoswipe'; + +@NgModule({ + imports: [ + CommonModule, + NgxPhotoswipeModule, + NgbModule, + BreadcrumbModule, + RouterModule.forChild([ + { + path: 'searchWebsite', + component: SearchWebsiteComponent + }, + { + path: 'searchImages', + component: SearchImagesComponent + }, + { + path: 'searchVideos', + component: SearchVideosComponent + } + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ], + declarations: [SearchWebsiteComponent, SearchImagesComponent, SearchVideosComponent], + exports: [RouterModule] +}) +export class SearchModule { } diff --git a/src/app/content/pages/social-feed/social-feed.module.ts b/src/app/content/pages/social-feed/social-feed.module.ts new file mode 100644 index 0000000..9d9e34d --- /dev/null +++ b/src/app/content/pages/social-feed/social-feed.module.ts @@ -0,0 +1,25 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SocialFeedComponent } from './social-feed/social-feed.component'; +import { RouterModule } from '@angular/router'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; + +@NgModule({ + declarations: [SocialFeedComponent], + imports: [ + CommonModule, + BreadcrumbModule, + NgbModule, + MatchHeightModule, + RouterModule.forChild([ + { + path: 'social-feed', + component: SocialFeedComponent + }, + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ] +}) +export class SocialFeedModule { } diff --git a/src/app/content/pages/social-feed/social-feed/social-feed.component.css b/src/app/content/pages/social-feed/social-feed/social-feed.component.css new file mode 100644 index 0000000..cef2f54 --- /dev/null +++ b/src/app/content/pages/social-feed/social-feed/social-feed.component.css @@ -0,0 +1,4 @@ +:host ::ng-deep .nav.nav-tabs .nav-item .nav-link { + padding: 1.5rem 0.7rem !important; + display: inline-flex; +} \ No newline at end of file diff --git a/src/app/content/pages/social-feed/social-feed/social-feed.component.html b/src/app/content/pages/social-feed/social-feed/social-feed.component.html new file mode 100644 index 0000000..69917be --- /dev/null +++ b/src/app/content/pages/social-feed/social-feed/social-feed.component.html @@ -0,0 +1,589 @@ +
+
+
+ +
+
+ +
+ + +
+
+ timeline image +
+ timeline image +

Elaine Dreyfuss

+

San Francisco, CA

+
+ +
+
+ +
+
+
+
+
Profile Intro
+
+
+
About Me
+

Hi, I’m Elaine Dreyfuss, I’m 26 & I work as a Digital Designer.

+
+
+
Favourite TV Shows
+

Breaking Good, RedDevil, People of Interest, The Running Dead, Found, + American Guy.

+
+
+
Favourite Music Bands
+

Arctic Monkeys, Bloc Party, People of Interest, The Running Dead, + Found, American Guy.

+
+
+
Favourite Food
+

Pizza, burger, Guacamole, Tomato Salsa, Enchiladas, Guilt-Free Chilli

+
+
+
+ +
+
+
+
Friends List
+
+ + + + + + + + + + +
+
+
+ +
+
+
+
My Spotify Playlist
+ +
+
+ +
+
+
All Around
+

justin bieber

+
+
+

4:56

+
+
+
+
+ +
+
+

All I Want

+

justin bieber

+
+
+

4:56

+
+
+
+
+ +
+
+

All Matters

+

justin bieber

+
+
+

4:56

+
+
+
+
+ +
+
+

As Long

+

justin bieber

+
+
+

4:56

+
+
+
+
+ +
+
+

Beauty Beat

+

justin bieber

+
+
+

4:56

+
+
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
Elaine Dreyfuss
+

2 hours ago

+
+
+
+
+ +
+
+
+
+

When searching for videos of a different singer, Scooter Braun, a former marketing + executive of So So Def Recordings, clicked on one of Bieber's 2007 videos by

+
+
+
+
+
+
+ 120 +
+
+
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +4 more +
  • +
+
+
+
+
+
+ 44 + 23 +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
Elaine Dreyfuss
+

4 hours ago

+
+
+
+
+ +
+
+
+
+

When searching for videos of a different singer, Scooter Braun, a former marketing + executive of So So Def Recordings, clicked on one of Bieber's 2007 videos by

+
+
+
+
+
+
+ 120 +
+
+
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +4 more +
  • +
+
+
+
+
+
+ 44 + 23 +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
Elaine Dreyfuss
+

2 hours ago

+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ 120 +
+
+
    +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + Avatar +
  • +
  • + +4 more +
  • +
+
+
+
+
+
+ 44 + 23 +
+
+
+
+
+
+
+ +
+
+
+

+

+
+
+ +

Today is

+

Marina Valentine’s Birthday!

+

Some quick example text to build on the card.

+
+
+ +
+
+
+
Last Photos
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+
+
Last Blog
+
+
+
+

The emergence and growth of blogs

+

Many blogs provide commentary on a particular subject or topic digital + images.

+

5 hours ago

+
+
+
+

On 16 February 2011

+

Many blogs provide commentary on a particular subject or topic digital + images.

+

10 hours ago

+
+
+
+

With posts written by large numbers

+

Many blogs provide commentary on a particular subject or topic digital + images.

+

23 hours ago

+
+
+
+
+
+ +
+
+
+
Last Video
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/content/pages/social-feed/social-feed/social-feed.component.spec.ts b/src/app/content/pages/social-feed/social-feed/social-feed.component.spec.ts new file mode 100644 index 0000000..9dd553b --- /dev/null +++ b/src/app/content/pages/social-feed/social-feed/social-feed.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SocialFeedComponent } from './social-feed.component'; + +describe('SocialFeedComponent', () => { + let component: SocialFeedComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SocialFeedComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SocialFeedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/social-feed/social-feed/social-feed.component.ts b/src/app/content/pages/social-feed/social-feed/social-feed.component.ts new file mode 100644 index 0000000..c46dd42 --- /dev/null +++ b/src/app/content/pages/social-feed/social-feed/social-feed.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-social-feed', + templateUrl: './social-feed.component.html', + styleUrls: ['./social-feed.component.css'] +}) +export class SocialFeedComponent implements OnInit { + + public breadcrumb: any; + currentOrientation = 'horizontal'; + start: any; + end: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Social Feed', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Pages', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Social Feed', + 'isLink': false + } + ] + }; + + } + +} diff --git a/src/app/content/pages/timelines/custom-lightbox-adapter.ts b/src/app/content/pages/timelines/custom-lightbox-adapter.ts new file mode 100644 index 0000000..fc2e339 --- /dev/null +++ b/src/app/content/pages/timelines/custom-lightbox-adapter.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { LightboxAdapter } from 'angular2_photoswipe'; + +@Injectable() +export class CustomLightboxAdapter extends LightboxAdapter { + allowPanToNext = true; + spacing = 0.12; + bgOpacity = 0.8; + mouseUsed = false; + loop = true; + pinchToClose = true; + closeOnScroll = true; + closeOnVerticalDrag = true; + hideAnimationDuration = 333; + showAnimationDuration = 333; + showHideOpacity = false; + escKey = true; + arrowKeys = true; + shareEl = true; + getPageURLForShare = function(shareButtonData) { + return window.location.href; + }; +} diff --git a/src/app/content/pages/timelines/timelines-center/timelines-center.component.css b/src/app/content/pages/timelines/timelines-center/timelines-center.component.css new file mode 100644 index 0000000..201c0d7 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-center/timelines-center.component.css @@ -0,0 +1,26 @@ +agm-map { + height: 450px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + :host ::ng-deep .my-gallery img{ + + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; + margin-bottom: 15px; + } +:host ::ng-deep .my-gallery .img-thumbnail { + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} \ No newline at end of file diff --git a/src/app/content/pages/timelines/timelines-center/timelines-center.component.html b/src/app/content/pages/timelines/timelines-center/timelines-center.component.html new file mode 100644 index 0000000..2dc1d87 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-center/timelines-center.component.html @@ -0,0 +1,534 @@ +
+
+
+ +
+
+
+
+

Timeline

+ +
    +
  • +
  • +
    + +
    +
    + + + + Portfolio project work +

    + 8 hours ago +

    +
    +
    + + Timeline Image 1 + + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    + + +
    +
    + + avatar + +
    +
    +

    Jason Ansley

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante + sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque ante sollicitudin.

    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + avatar +
    +
    + + + + Sofia Orav +

    + 8 hours ago +

    +
    +
    + +
    + +
    +
    + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et? Rhoncus, vel dignissim in scelerisque. + Dolor lacus pulvinar adipiscing adipiscing montes! Elementum risus adipiscing non, cras + scelerisque risus penatibus? Massa vut, habitasse, tincidunt!

    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +
    +

    +

    Campaign Report

    +

    18 hours ago

    +

    Rhoncus, vel dignissim in scelerisque. Dolor lacus pulvinar adipiscing adipiscing montes! + Elementum + risus adipiscing non, cras scelerisque risus penatibus? Massa vut, habitasse, tincidunt!

    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + avatar +
    +
    + Card image +
    +

    Good Morning

    +

    26 Aug, 2016 at 2.00 A.M

    +

    This is a wider card with supporting text below as a natural lead-in to + additional + content. This content is a little bit longer.

    +
    +
    +
  • +
  • +
    + +
    +
    + + + + Sofia Orav +

    + 18 June, 2016 at 4.50 P.M +

    +
    +
    + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
      +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Non-ribbon Chord Chart

    +

    + 6 Feb, 2016 at 6.00 A.M +

    +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
    +
    +
    +
    +
    + +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + +
    +
    +
    +
    +

    +

    Media Gallery

    +

    July 1, 2015

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a pulvinar, rhoncus + sagittis ut nunc elit! Sociis in et?

    +
    +
    + +
    + +
    +
    +
  • +
  • +
    + +
    +
    +
    +
    + +
    +

    Application API Support

    +

    + 15 Oct, 2015 at 8.00 A.M + High +

    +
    +
    +
    +
    + Timeline Image 1 +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    +
    + +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Quote of the day

    +

    + 03 March, 2015 at 5 P.M +

    +
    +
    + Timeline Image 1 +
    +
    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et?

    +
    Someone famous in + - Source Title +
    +
    +
    +
    +
    +
  • +
+ + +
    +
  • + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/content/pages/timelines/timelines-center/timelines-center.component.spec.ts b/src/app/content/pages/timelines/timelines-center/timelines-center.component.spec.ts new file mode 100644 index 0000000..677954a --- /dev/null +++ b/src/app/content/pages/timelines/timelines-center/timelines-center.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TimelinesCenterComponent } from './timelines-center.component'; + +describe('TimelinesCenterComponent', () => { + let component: TimelinesCenterComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TimelinesCenterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TimelinesCenterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/timelines/timelines-center/timelines-center.component.ts b/src/app/content/pages/timelines/timelines-center/timelines-center.component.ts new file mode 100644 index 0000000..b2b9b35 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-center/timelines-center.component.ts @@ -0,0 +1,326 @@ +import { Component, OnInit } from '@angular/core'; +import * as echarts from 'echarts'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; +interface Marker { + lat: number; + lng: number; + label: string; +} +const hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a', + '7a', '8a', '9a', '10a', '11a', + '12p', '1p', '2p', '3p', '4p', '5p', + '6p', '7p', '8p', '9p', '10p', '11p']; + + const days = ['Saturday', 'Friday', 'Thursday', + 'Wednesday', 'Tuesday', 'Monday', 'Sunday']; +@Component({ + selector: 'app-timelines-center', + templateUrl: './timelines-center.component.html', + styleUrls: ['./timelines-center.component.css'] +}) +export class TimelinesCenterComponent implements OnInit { + + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + data: any; + option: any; + chartOption: any; + public breadcrumb: any; + public zoom: number; + + options = { + close: false, + expand: true, + minimize: false, + reload: true + }; + + @BlockUI('projectWorkOne') blockUIProjectWorkOne: NgBlockUI; + @BlockUI('sofiaOrav') blockUISofiaOrav: NgBlockUI; + @BlockUI('sofiaOravTwo') blockUISofiaOravTwo: NgBlockUI; + + lat = 40.650002; + lng = -73.949997; + + markers: Marker[] = [ + { + lat: this.lat, + lng: this.lng, + label: '' + } + ]; + getChordchart() { + this.chartOption = { + grid: { + x: 40, + x2: 40, + y: 45, + y2: 25 + }, + + // Add tooltip + tooltip: { + trigger: 'axis', + axisPointer: { // Axis indicator axis trigger effective + type: 'shadow' // The default is a straight line, optionally: 'line' | 'shadow' + } + }, + + // Add legend + legend: { + data: this.data['report'].data, + }, + + // Add custom colors + color: ['#666EE8', '#FF9149', '#FF9966', '#FA8E57', '#FF637b', '#5175E0', '#A147F0', '#28D094', '#BABFC7'], + + xAxis: [ + { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + + { + name: 'Direct access', + type: 'bar', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Email marketing', + type: 'bar', + stack: 'advertising', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Advertising alliance', + type: 'bar', + stack: 'advertising', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video ads', + type: 'bar', + stack: 'advertising', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Search Engine', + type: 'bar', + stack: 'Total', + data: [862, 1018, 964, 1026, 1679, 1600, 1570], + }, + { + name: 'Google', + type: 'bar', + barWidth: 12, + stack: 'search engine', + data: [620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name: 'Safari', + type: 'bar', + stack: 'search engine', + data: [120, 132, 101, 134, 290, 230, 220] + }, + { + name: 'Opera', + type: 'bar', + stack: 'search engine', + data: [60, 72, 71, 74, 190, 130, 110] + }, + { + name: 'Firefox', + type: 'bar', + stack: 'search engine', + data: [62, 82, 91, 84, 109, 110, 120] + } + ] + }; + this.option = { + legend: { + data: ['Punch Card'], + left: 'right' + }, + polar: {}, + tooltip: { + formatter: function (params) { + return params.value[2] + ' commits in ' + hours[params.value[1]] + ' of ' + days[params.value[0]]; + } + }, + angleAxis: { + type: 'category', + data: hours, + boundaryGap: false, + splitLine: { + show: true, + lineStyle: { + color: '#999', + type: 'dashed' + } + }, + axisLine: { + show: false + } + }, + radiusAxis: { + type: 'category', + data: days, + axisLine: { + show: false + }, + axisLabel: { + rotate: 45 + } + }, + series: [{ + name: 'Punch Card', + type: 'scatter', + coordinateSystem: 'polar', + symbolSize: function (val) { + return val[2] * 2; + }, + data: this.data['punchdata'].data, + animationDelay: function (idx) { + return idx * 5; + } + }] + }; +} + constructor(private chartApiservice: ChartApiService) { } + + ngOnInit() { + this.zoom = 15; + this.breadcrumb = { + 'mainlabel': 'Timeline Center', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Timelines', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Timelines Center', + 'isLink': false + } + ] + }; + this.chartApiservice.getTimelineData().subscribe(Response => { + this.data = Response; + this.getChordchart(); + }); + } + + reloadProjectWorkOne() { + this.blockUIProjectWorkOne.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkOne.stop(); + }, 2500); + } + + reloadSofiaOrav() { + this.blockUISofiaOrav.start('Loading..'); + + setTimeout(() => { + this.blockUISofiaOrav.stop(); + }, 2500); + } + + reloadSofiaOravTwo() { + this.blockUISofiaOravTwo.start('Loading..'); + + setTimeout(() => { + this.blockUISofiaOravTwo.stop(); + }, 2500); + } +} diff --git a/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.css b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.html b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.html new file mode 100644 index 0000000..6871b4b --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.html @@ -0,0 +1,41 @@ +
+
+ + + +
+ +
+
    +
  1. +

    {{item.title}}

    +

    + {{item.date | date:longDate}} +

    +

    {{item.content}}

    +
  2. +
+
+
diff --git a/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.ts b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.ts new file mode 100644 index 0000000..a62d416 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component.ts @@ -0,0 +1,347 @@ +import { Component, OnInit, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, + QueryList, ViewChildren, ViewChild, Input } from '@angular/core'; +import { trigger, state, style, transition, animate, keyframes } from '@angular/animations'; +import { TimelineElement } from './timeline-horizontal'; + +@Component({ + selector: 'app-horizontal-timeline-page', + templateUrl: './horizontal-timeline-page.component.html', + styleUrls: ['./horizontal-timeline-page.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, + animations: [ + trigger('contentState', [ + state('active', style({ + position: 'relative', 'z-index': 2, opacity: 1, 'left': '100%' + })), + transition('right => active', [ + style({ + transform: 'translateX(100%)' + }), + animate('400ms ease-in-out', keyframes([ + style({ opacity: 0, transform: 'translateX(100%)', offset: 0 }), + style({ opacity: 1, transform: 'translateX(0%)', offset: 1.0 }) + ])) + ]), + transition('active => right', [ + style({ + transform: 'translateX(-100%)' + }), + animate('400ms ease-in-out', keyframes([ + style({ opacity: 1, transform: 'translateX(0%)', offset: 0 }), + style({ opacity: 0, transform: 'translateX(100%)', offset: 1.0 }) + ])) + ]), + transition('active => left', [ + style({ + transform: 'translateX(-100%)' + }), + animate('400ms ease-in-out', keyframes([ + style({ opacity: 1, transform: 'translateX(0%)', offset: 0 }), + style({ opacity: 0, transform: 'translateX(-100%)', offset: 1.0 }) + ])) + ]), + transition('left => active', [ + style({ + transform: 'translateX(100%)' + }), + animate('400ms ease-in-out', keyframes([ + style({ opacity: 0, transform: 'translateX(-100%)', offset: 0 }), + style({ opacity: 1, transform: 'translateX(0%)', offset: 1.0 }) + ])) + ]), + ]) + ] +}) + +export class HorizontalTimelinePageComponent implements AfterViewInit { + + public breadcrumb: any; + prevLinkInactive = true; + nextLinkInactive = false; + loaded = false; + selectedIndex = 0; + + @ViewChild('eventsWrapper', { read: ElementRef }) eventsWrapper: ElementRef; + @ViewChild('fillingLine', { read: ElementRef }) fillingLine: ElementRef; + @ViewChildren('timelineEvents') timelineEvents: QueryList; + eventsWrapperWidth = 0; + private _viewInitialized = false; + + constructor(private _cdr: ChangeDetectorRef) { } + + private _timelineWrapperWidth = 720; + + @Input() + set timelineWrapperWidth(value: number) { + this._timelineWrapperWidth = value; + this._cdr.detectChanges(); + } + + private _eventsMinDistance = 80; + + @Input() + set eventsMinDistance(value: number) { + this._eventsMinDistance = value; + this.initView(); + } + + private _timelineElements: TimelineElement[]; + + get timelineElements(): TimelineElement[] { + return this._timelineElements; + } + + @Input() + set timelineElements(value: TimelineElement[]) { + this._timelineElements = value; + this.initView(); + } + + private _dateFormat = 'dd.MM.yyyy'; + private _dateFormatTop = 'dd MMM'; + + get dateFormat(): string { + return this._dateFormat; + } + + get dateFormatTop(): string { + return this._dateFormatTop; + } + + @Input() + set dateFormat(value: string) { + this._dateFormat = value; + this.initView(); + } + + @Input() + set dateFormatTop(value: string) { + this._dateFormatTop = value; + this.initView(); + } + + private _disabled = false; + + @Input() + set disabled(value: boolean) { + this._disabled = value; + } + + private _showContent = false; + + get showContent(): boolean { + return this._showContent; + } + + @Input() + set showContent(value: boolean) { + this._showContent = value; + this._cdr.detectChanges(); + } + + private static pxToNumber(val: string): number { + return Number(val.replace('px', '')); + } + + private static getElementWidth(element: Element): number { + const computedStyle = window.getComputedStyle(element); + if (!computedStyle.width) { + return 0; + } + return HorizontalTimelinePageComponent.pxToNumber(computedStyle.width); + } + + private static parentElement(element: any, tagName: string) { + if (!element || !element.parentNode) { + return null; + } + + let parent = element.parentNode; + while (true) { + if (parent.tagName.toLowerCase() === tagName) { + return parent; + } + parent = parent.parentNode; + if (!parent) { + return null; + } + } + } + + private static getTranslateValue(timeline: Element) { + const timelineStyle = window.getComputedStyle(timeline); + const timelineTranslate = timelineStyle.getPropertyValue('-webkit-transform') || + timelineStyle.getPropertyValue('-moz-transform') || + timelineStyle.getPropertyValue('-ms-transform') || + timelineStyle.getPropertyValue('-o-transform') || + timelineStyle.getPropertyValue('transform'); + + let translateValue = 0; + if (timelineTranslate.indexOf('(') >= 0) { + const timelineTranslateStr = timelineTranslate + .split('(')[1] + .split(')')[0] + .split(',')[4]; + translateValue = Number(timelineTranslateStr); + } + + return translateValue; + } + + private static setTransformValue(element: any, property: any, value: any) { + element.style['-webkit-transform'] = property + '(' + value + ')'; + element.style['-moz-transform'] = property + '(' + value + ')'; + element.style['-ms-transform'] = property + '(' + value + ')'; + element.style['-o-transform'] = property + '(' + value + ')'; + element.style['transform'] = property + '(' + value + ')'; + } + + private static dayDiff(first: Date, second: Date): number { + return Math.round(second.getTime() - first.getTime()); + } + + private static minLapse(elements: TimelineElement[]): number { + if (elements && elements.length && elements.length === 1) { + return 0; + } + + let result = 0; + for (let i = 1; i < elements.length; i++) { + const distance = HorizontalTimelinePageComponent.dayDiff(elements[i - 1].date, elements[i].date); + result = result ? Math.min(result, distance) : distance; + } + return result; + } + + ngAfterViewInit(): void { + this._cdr.detach(); + this._viewInitialized = true; + this.initView(); + } + + onScrollClick(event: Event, forward: boolean) { + event.preventDefault(); + this.updateSlide(this.eventsWrapperWidth, forward); + this._cdr.detectChanges(); + } + + onEventClick(event: Event, selectedItem: TimelineElement) { + event.preventDefault(); + if (this._disabled) { + return; + } + const element = event.target; + // detect click on the a single event - show new event content + let visibleItem = this._timelineElements[0]; + this._timelineElements.forEach(function (item: TimelineElement) { + if (item.selected && item !== selectedItem) { + visibleItem = item; + item.selected = false; + } + }); + this.selectedIndex = this._timelineElements.indexOf(selectedItem); + selectedItem.selected = true; + this.updateFilling(element); + this._cdr.detectChanges(); + } + + initTimeline(timeLines: TimelineElement[]) { + const eventsMinLapse = HorizontalTimelinePageComponent.minLapse(timeLines); + // assign a left position to the single events along the timeline + this.setDatePosition(timeLines, this._eventsMinDistance, eventsMinLapse); + // assign a width to the timeline + this.setTimelineWidth(timeLines, this._eventsMinDistance, eventsMinLapse); + // the timeline has been initialize - show it + this.loaded = true; + } + + updateSlide(timelineTotWidth: number, forward: boolean) { + const translateValue = HorizontalTimelinePageComponent.getTranslateValue(this.eventsWrapper.nativeElement); + + if (forward) { + this.translateTimeline(translateValue - this._timelineWrapperWidth + + this._eventsMinDistance, this._timelineWrapperWidth - timelineTotWidth); + } else { + this.translateTimeline(translateValue + this._timelineWrapperWidth - this._eventsMinDistance, null); + } + } + + updateTimelinePosition(element: Element) { + const eventStyle = window.getComputedStyle(element); + const eventLeft = HorizontalTimelinePageComponent.pxToNumber(eventStyle.getPropertyValue('left')); + const translateValue = HorizontalTimelinePageComponent.getTranslateValue(this.eventsWrapper.nativeElement); + + if (eventLeft > this._timelineWrapperWidth - translateValue) { + this.translateTimeline(-eventLeft + this._timelineWrapperWidth / 2, this._timelineWrapperWidth - this.eventsWrapperWidth); + } + } + + translateTimeline(value: number, totWidth: number | null) { + // only negative translate value + value = (value > 0) ? 0 : value; + // do not translate more than timeline width + value = ( !(totWidth === null) && value < totWidth ) ? totWidth : value; + HorizontalTimelinePageComponent.setTransformValue(this.eventsWrapper.nativeElement, 'translateX', value + 'px'); + // update navigation arrows visibility + this.prevLinkInactive = value === 0; + this.nextLinkInactive = value === totWidth; + } + + setTimelineWidth(elements: TimelineElement[], width: number, eventsMinLapse: number) { + let timeSpan = 100; + if (elements.length > 1) { + timeSpan = HorizontalTimelinePageComponent.dayDiff(elements[0].date, elements[elements.length - 1].date); + } + let timeSpanNorm = timeSpan / eventsMinLapse; + timeSpanNorm = Math.round(timeSpanNorm) + 4; + this.eventsWrapperWidth = timeSpanNorm * width; + const aHref = this.eventsWrapper.nativeElement.querySelectorAll('a.selected')[0]; + this.updateFilling(aHref); + this.updateTimelinePosition(aHref); + return this.eventsWrapperWidth; + + } + + private updateFilling(element: any) { + // change .filling-line length according to the selected event + const eventStyle = window.getComputedStyle(element); + const eventLeft = eventStyle.getPropertyValue('left'); + const eventWidth = eventStyle.getPropertyValue('width'); + const eventLeftNum = HorizontalTimelinePageComponent.pxToNumber(eventLeft) + HorizontalTimelinePageComponent.pxToNumber(eventWidth) / 2; + const scaleValue = eventLeftNum / this.eventsWrapperWidth; + HorizontalTimelinePageComponent.setTransformValue(this.fillingLine.nativeElement, 'scaleX', scaleValue); + } + + private initView(): void { + if (!this._viewInitialized) { + return; + } + + if (this._timelineElements && this._timelineElements.length) { + for (let i = 0; i < this._timelineElements.length; i++) { + if (this._timelineElements[i].selected) { + this.selectedIndex = i; + break; + } + } + this.initTimeline(this._timelineElements); + } + this._cdr.detectChanges(); + } + + private setDatePosition(elements: TimelineElement[], min: number, eventsMinLapse: number) { + const timelineEventsArray = this.timelineEvents.toArray(); + let i = 0; + for (const component of elements) { + const distance = HorizontalTimelinePageComponent.dayDiff(elements[0].date, component.date); + const distanceNorm = Math.round(distance / eventsMinLapse); + timelineEventsArray[i].nativeElement.style.left = distanceNorm * min + 'px'; + // span + const span: HTMLSpanElement = timelineEventsArray[i].nativeElement.parentElement.children[1]; + const spanWidth = HorizontalTimelinePageComponent.getElementWidth(span); + span.style.left = distanceNorm * min + spanWidth / 2 + 'px'; + i++; + } + } + +} diff --git a/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/timeline-horizontal.ts b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/timeline-horizontal.ts new file mode 100644 index 0000000..a24ec23 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/horizontal-timeline-page/timeline-horizontal.ts @@ -0,0 +1,6 @@ +export interface TimelineElement { + date: Date; + title: string; + selected?: boolean; + content: string; +} diff --git a/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.css b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.html b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.html new file mode 100644 index 0000000..6bbaedf --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.html @@ -0,0 +1,22 @@ +
+
+
+ +
+
+
+
+

Basic Horizontal Timeline

+
+
+
+
+

This horizontal time line contain just date based post timeline.

+ +
+
+
+
+
+
+
diff --git a/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.spec.ts b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.spec.ts new file mode 100644 index 0000000..b464f33 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TimelinesHorizontalComponent } from './timelines-horizontal.component'; + +describe('TimelinesHorizontalComponent', () => { + let component: TimelinesHorizontalComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TimelinesHorizontalComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TimelinesHorizontalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.ts b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.ts new file mode 100644 index 0000000..84ee780 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-horizontal/timelines-horizontal.component.ts @@ -0,0 +1,56 @@ +import { Component, OnInit } from '@angular/core'; +import { TimelineElement } from './horizontal-timeline-page/timeline-horizontal'; + +@Component({ + selector: 'app-timelines-horizontal', + templateUrl: './timelines-horizontal.component.html', + styleUrls: ['./timelines-horizontal.component.css'] +}) +export class TimelinesHorizontalComponent implements OnInit { + + content = `Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae + ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, + ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam + quisquam, quae, temporibus dolores porro doloribus.`; + + timeline: TimelineElement[] = [ + { date: new Date(2014, 1, 16), selected: true, title: 'Horizontal Timeline', content: this.content }, + { date: new Date(2014, 2, 28), title: 'Event title here', content: this.content }, + { date: new Date(2014, 3, 20), title: 'Event title here', content: this.content }, + { date: new Date(2014, 5, 20), title: 'Event title here', content: this.content }, + { date: new Date(2014, 7, 9), title: 'Event title here', content: this.content }, + { date: new Date(2014, 8, 30), title: 'Event title here', content: this.content }, + { date: new Date(2014, 9, 15), title: 'Event title here', content: this.content }, + { date: new Date(2014, 11, 1), title: 'Event title here', content: this.content }, + { date: new Date(2014, 12, 10), title: 'Event title here', content: this.content }, + { date: new Date(2015, 1, 19), title: 'Event title here', content: this.content }, + { date: new Date(2015, 3, 3), title: 'Event title here', content: this.content }, + ]; + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Horizontal Timeline', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Timelines', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Timelines Horizontal', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/timelines/timelines-left/timelines-left.component.css b/src/app/content/pages/timelines/timelines-left/timelines-left.component.css new file mode 100644 index 0000000..2c628af --- /dev/null +++ b/src/app/content/pages/timelines/timelines-left/timelines-left.component.css @@ -0,0 +1,25 @@ +agm-map { + height: 450px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .my-gallery img{ + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; + margin-bottom: 15px; +} +:host ::ng-deep .my-gallery .img-thumbnail { + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} \ No newline at end of file diff --git a/src/app/content/pages/timelines/timelines-left/timelines-left.component.html b/src/app/content/pages/timelines/timelines-left/timelines-left.component.html new file mode 100644 index 0000000..564b388 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-left/timelines-left.component.html @@ -0,0 +1,554 @@ +
+
+
+ +
+
+
+

Timeline

+ +
    +
  • +
  • +
    + +
    +
    + + + + Portfolio project work +

    + 5 hours ago +

    +
    +
    + +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    +
    + + avatar + +
    +
    +

    Jason Ansley

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante + sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    +
    + + avatar + +
    +
    +

    Jason Ansley

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante + sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    + + + + Project work +

    + 5 hours ago +

    +
    +
    + + + +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    +
    +
    +
    + + avatar + +
    +
    +

    Jason Ansley

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante + sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + avatar +
    +
    +
    +

    Sofia Orav

    +

    + 8 hours ago +

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et? Rhoncus, vel dignissim in scelerisque. + Dolor lacus pulvinar adipiscing adipiscing montes! Elementum risus adipiscing non, cras + scelerisque risus penatibus? Massa vut, habitasse, tincidunt! Dolor lacus pulvinar adipiscing + adipiscing montes! Elementum risus adipiscing non, cras scelerisque risus penatibus? Massa vut, + habitasse, tincidunt!

    + +
    + +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +
    +

    Campaign Report

    +

    18 hours ago

    +

    Rhoncus, vel dignissim in scelerisque. Dolor lacus pulvinar adipiscing adipiscing montes! Elementum + risus adipiscing non, cras scelerisque risus penatibus? Massa vut, habitasse, tincidunt!

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + avatar +
    +
    +
    +
    + Card image +
    +

    Good Morning

    +

    26 Aug, 2016 at 2.00 A.M

    +

    This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer.

    +
    +
    +
    +
    +
    +
    +
    +

    List Group

    +

    Some quick example text to build on the card title and make up the bulk of + the card's content.

    +
    +
      +
    • + 4 Cras justo odio +
    • +
    • + 2 Dapibus ac facilisis in +
    • +
    • + 1 Morbi leo risus +
    • +
    • + 3 Porta ac consectetur ac +
    • +
    • + 8 Vestibulum at eros +
    • +
    + +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Sofia Orav

    +

    + 18 June, 2016 at 4.50 P.M +

    +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
      +
    • + Cras justo odio
    • +
    • + Dapibus ac facilisis in
    • +
    • + Morbi leo risus
    • +
    • + Porta ac consectetur ac
    • +
    • + Vestibulum at eros
    • +
    • + Porta ac consectetur ac
    • +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
    +
    +
    +
    +
    + +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + +
    +
    +
    +
    +

    Media Gallery

    +

    July 1, 2015

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a pulvinar, rhoncus + sagittis ut nunc elit! Sociis in et?

    +
    +
    + +
    + +
    +
    +
  • +
+ + +
    +
  • + +
+ +
+ +
+
+
+ diff --git a/src/app/content/pages/timelines/timelines-left/timelines-left.component.spec.ts b/src/app/content/pages/timelines/timelines-left/timelines-left.component.spec.ts new file mode 100644 index 0000000..3f44f42 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-left/timelines-left.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TimelinesLeftComponent } from './timelines-left.component'; + +describe('TimelinesLeftComponent', () => { + let component: TimelinesLeftComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TimelinesLeftComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TimelinesLeftComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/timelines/timelines-left/timelines-left.component.ts b/src/app/content/pages/timelines/timelines-left/timelines-left.component.ts new file mode 100644 index 0000000..5c57b1e --- /dev/null +++ b/src/app/content/pages/timelines/timelines-left/timelines-left.component.ts @@ -0,0 +1,324 @@ +import { Component, OnInit } from '@angular/core'; +import * as echarts from 'echarts'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; + +/** + * Interface + */ +interface Marker { + lat: number; + lng: number; + label: string; +} +const hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a', + '7a', '8a', '9a', '10a', '11a', + '12p', '1p', '2p', '3p', '4p', '5p', + '6p', '7p', '8p', '9p', '10p', '11p']; + +const days = ['Saturday', 'Friday', 'Thursday', + 'Wednesday', 'Tuesday', 'Monday', 'Sunday']; +@Component({ + selector: 'app-timelines-left', + templateUrl: './timelines-left.component.html', + styleUrls: ['./timelines-left.component.css'] +}) +export class TimelinesLeftComponent implements OnInit { + + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + data: any; + option: any; + chartOption: any; + options = { + close: false, + expand: true, + minimize: false, + reload: true + }; + @BlockUI('projectWorkOne') blockUIProjectWorkOne: NgBlockUI; + @BlockUI('projectWorkTwo') blockUIProjectWorkTwo: NgBlockUI; + public breadcrumb: any; + public zoom = 15; + + lat = 40.650002; + lng = -73.949997; + + markers: Marker[] = [ + { + lat: this.lat, + lng: this.lng, + label: '' + } + ]; + + constructor(private chartApiservice: ChartApiService) { } + /** + * + */ + getChordchart() { + this.chartOption = { + grid: { + x: 40, + x2: 40, + y: 45, + y2: 25 + }, + + // Add tooltip + tooltip: { + trigger: 'axis', + axisPointer: { // Axis indicator axis trigger effective + type: 'shadow' // The default is a straight line, optionally: 'line' | 'shadow' + } + }, + + // Add legend + legend: { + data: this.data['report'].data, + }, + + // Add custom colors + color: ['#666EE8', '#FF9149', '#FF9966', '#FA8E57', '#FF637b', '#5175E0', '#A147F0', '#28D094', '#BABFC7'], + + // // Enable drag recalculate + // calculable: true, + xAxis: [ + { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + + { + name: 'Direct access', + type: 'bar', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Email marketing', + type: 'bar', + stack: 'advertising', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Advertising alliance', + type: 'bar', + stack: 'advertising', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video ads', + type: 'bar', + stack: 'advertising', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Search Engine', + type: 'bar', + stack: 'Total', + data: [862, 1018, 964, 1026, 1679, 1600, 1570], + }, + { + name: 'Google', + type: 'bar', + barWidth: 12, + stack: 'search engine', + data: [620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name: 'Safari', + type: 'bar', + stack: 'search engine', + data: [120, 132, 101, 134, 290, 230, 220] + }, + { + name: 'Opera', + type: 'bar', + stack: 'search engine', + data: [60, 72, 71, 74, 190, 130, 110] + }, + { + name: 'Firefox', + type: 'bar', + stack: 'search engine', + data: [62, 82, 91, 84, 109, 110, 120] + } + ] + }; + this.option = { + legend: { + data: ['Punch Card'], + left: 'right' + }, + polar: {}, + tooltip: { + formatter: function (params) { + return params.value[2] + ' commits in ' + hours[params.value[1]] + ' of ' + days[params.value[0]]; + } + }, + angleAxis: { + type: 'category', + data: hours, + boundaryGap: false, + splitLine: { + show: true, + lineStyle: { + color: '#999', + type: 'dashed' + } + }, + axisLine: { + show: false + } + }, + radiusAxis: { + type: 'category', + data: days, + axisLine: { + show: false + }, + axisLabel: { + rotate: 45 + } + }, + series: [{ + name: 'Punch Card', + type: 'scatter', + coordinateSystem: 'polar', + symbolSize: function (val) { + return val[2] * 2; + }, + data: this.data['punchdata'].data, + animationDelay: function (idx) { + return idx * 5; + } + }] + }; + } + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Timeline Left', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Timelines', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Timelines Left', + 'isLink': false + } + ] + }; + this.chartApiservice.getTimelineData().subscribe(Response => { + this.data = Response; + this.getChordchart(); + }); + } + + reloadProjectWorkOne() { + this.blockUIProjectWorkOne.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkOne.stop(); + }, 2500); + } + + reloadProjectWorkTwo() { + this.blockUIProjectWorkTwo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkTwo.stop(); + }, 2500); + } + +} diff --git a/src/app/content/pages/timelines/timelines-right/timelines-right.component.css b/src/app/content/pages/timelines/timelines-right/timelines-right.component.css new file mode 100644 index 0000000..9c76d67 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-right/timelines-right.component.css @@ -0,0 +1,25 @@ +agm-map { + height: 450px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .my-gallery img{ + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; + margin-bottom: 15px; +} +:host ::ng-deep .my-gallery .img-thumbnail { + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} \ No newline at end of file diff --git a/src/app/content/pages/timelines/timelines-right/timelines-right.component.html b/src/app/content/pages/timelines/timelines-right/timelines-right.component.html new file mode 100644 index 0000000..a2d4d6b --- /dev/null +++ b/src/app/content/pages/timelines/timelines-right/timelines-right.component.html @@ -0,0 +1,619 @@ +
+
+ +
+
+

Timeline

+ +
    +
  • +
  • +
    + +
    +
    + + + + Portfolio project work +

    + 8 hours ago +

    +
    +
    + +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse + ornare dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur + elit tellus, porta ut orci sed, fermentum bibendum nisi.

    + +
    +
    + + avatar + +
    +
    +

    Jason Ansley +

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla + vel metus scelerisque ante sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice + Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque + ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse + ornare dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur + elit tellus, porta ut orci sed, fermentum bibendum nisi.

    + +
    +
    + + avatar + +
    +
    +

    Jason Ansley +

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla + vel metus scelerisque ante sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice + Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque + ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    + + + + Portfolio project work +

    + 8 hours ago +

    +
    +
    + + + +
    +
    + Timeline Image 1 +

    Nullam facilisis fermentum aliquam. Suspendisse + ornare dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur + elit tellus, porta ut orci sed, fermentum bibendum nisi.

    + +
    +
    +
    +
    + + avatar + +
    +
    +

    Jason Ansley +

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla + vel metus scelerisque ante sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice + Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque + ante sollicitudin.

    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + avatar +
    +
    +
    +

    Sofia Orav

    +

    + 8 hours ago +

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse + ornare dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur + elit tellus, porta ut orci sed, fermentum bibendum nisi.

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque + penatibus facilisis a pulvinar, rhoncus sagittis ut nunc elit! Sociis in + et? Rhoncus, vel dignissim in scelerisque. Dolor lacus pulvinar + adipiscing adipiscing montes! Elementum risus adipiscing non, cras + scelerisque risus penatibus? Massa vut, habitasse, tincidunt! Dolor + lacus pulvinar adipiscing adipiscing montes! Elementum risus adipiscing + non, cras scelerisque risus penatibus? Massa vut, habitasse, tincidunt! +

    + +
    + +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +
    +

    Campaign Report

    +

    18 hours ago

    +

    Rhoncus, vel dignissim in scelerisque. Dolor lacus pulvinar adipiscing adipiscing + montes! Elementum risus adipiscing non, cras scelerisque risus penatibus? Massa + vut, habitasse, tincidunt!

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + avatar +
    +
    +
    +
    + Card image +
    +

    Good Morning

    +

    26 Aug, 2016 at 2.00 A.M

    +

    This is a wider card with supporting text below as a + natural lead-in to additional content. This content is a little bit longer. +

    +
    +
    +
    +
    +
    +
    +
    +

    List Group

    +

    Some quick example text to build on the card title and + make up the bulk of the card's content.

    +
    +
      +
    • + 4 Cras + justo odio +
    • +
    • + 2 Dapibus ac + facilisis in +
    • +
    • + 1 Morbi leo + risus +
    • +
    • + 3 Porta ac + consectetur ac +
    • +
    • + 8 Vestibulum + at eros +
    • +
    + +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Sofia Orav

    +

    + 18 June, 2016 at 4.50 P.M +

    +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare + dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur elit tellus, + porta ut orci sed, fermentum bibendum nisi.

    +
      +
    • + Cras justo odio +
    • +
    • + Dapibus ac facilisis in +
    • +
    • + Morbi leo risus +
    • +
    • + Porta ac + consectetur ac +
    • +
    • + Vestibulum at eros +
    • +
    • + Porta ac + consectetur ac +
    • +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare + dolor vitae libero hendrerit auctor lacinia a ligula. Curabitur elit tellus, + porta ut orci sed, fermentum bibendum nisi.

    +
    +
    +
    +
    +
    + +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + +
    +
    +
    +
    +

    Media Gallery

    +

    July 1, 2015

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et?

    +
    +
    + +
    + +
    +
    +
  • +
+ + + + +
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/pages/timelines/timelines-right/timelines-right.component.spec.ts b/src/app/content/pages/timelines/timelines-right/timelines-right.component.spec.ts new file mode 100644 index 0000000..44c9315 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-right/timelines-right.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TimelinesRightComponent } from './timelines-right.component'; + +describe('TimelinesRightComponent', () => { + let component: TimelinesRightComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TimelinesRightComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TimelinesRightComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/timelines/timelines-right/timelines-right.component.ts b/src/app/content/pages/timelines/timelines-right/timelines-right.component.ts new file mode 100644 index 0000000..6369b62 --- /dev/null +++ b/src/app/content/pages/timelines/timelines-right/timelines-right.component.ts @@ -0,0 +1,324 @@ +import { Component, OnInit } from '@angular/core'; +import * as echarts from 'echarts'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; +interface Marker { + lat: number; + lng: number; + label: string; +} + +const hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a', + '7a', '8a', '9a', '10a', '11a', + '12p', '1p', '2p', '3p', '4p', '5p', + '6p', '7p', '8p', '9p', '10p', '11p']; + +const days = ['Saturday', 'Friday', 'Thursday', + 'Wednesday', 'Tuesday', 'Monday', 'Sunday']; + +@Component({ + selector: 'app-timelines-right', + templateUrl: './timelines-right.component.html', + styleUrls: ['./timelines-right.component.css'] +}) + +export class TimelinesRightComponent implements OnInit { + + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + data: any; + option: any; + chartOption: any; + options = { + close: false, + expand: true, + minimize: false, + reload: true + }; + + @BlockUI('projectWorkOne') blockUIProjectWorkOne: NgBlockUI; + @BlockUI('projectWorkTwo') blockUIProjectWorkTwo: NgBlockUI; + + public breadcrumb: any; + public zoom: number; + + lat = 40.650002; + lng = -73.949997; + + markers: Marker[] = [ + { + lat: this.lat, + lng: this.lng, + label: '' + } + ]; + + constructor(private chartApiservice: ChartApiService) { } + getChordchart() { + this.chartOption = { + grid: { + x: 40, + x2: 40, + y: 45, + y2: 25 + }, + // Add tooltip + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + + // Add legend + legend: { + data: this.data['report'].data, + }, + + // Add custom colors + color: ['#666EE8', '#FF9149', '#FF9966', '#FA8E57', '#FF637b', '#5175E0', '#A147F0', '#28D094', '#BABFC7'], + + // // Enable drag recalculate + // calculable: true, + xAxis: [ + { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + + { + name: 'Direct access', + type: 'bar', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Email marketing', + type: 'bar', + stack: 'advertising', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Advertising alliance', + type: 'bar', + stack: 'advertising', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video ads', + type: 'bar', + stack: 'advertising', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Search Engine', + type: 'bar', + stack: 'Total', + data: [862, 1018, 964, 1026, 1679, 1600, 1570], + }, + { + name: 'Google', + type: 'bar', + barWidth: 12, + stack: 'search engine', + data: [620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name: 'Safari', + type: 'bar', + stack: 'search engine', + data: [120, 132, 101, 134, 290, 230, 220] + }, + { + name: 'Opera', + type: 'bar', + stack: 'search engine', + data: [60, 72, 71, 74, 190, 130, 110] + }, + { + name: 'Firefox', + type: 'bar', + stack: 'search engine', + data: [62, 82, 91, 84, 109, 110, 120] + } + ] + }; + this.option = { + legend: { + data: ['Punch Card'], + left: 'right' + }, + polar: {}, + tooltip: { + formatter: function (params) { + return params.value[2] + ' commits in ' + hours[params.value[1]] + ' of ' + days[params.value[0]]; + } + }, + angleAxis: { + type: 'category', + data: hours, + boundaryGap: false, + splitLine: { + show: true, + lineStyle: { + color: '#999', + type: 'dashed' + } + }, + axisLine: { + show: false + } + }, + radiusAxis: { + type: 'category', + data: days, + axisLine: { + show: false + }, + axisLabel: { + rotate: 45 + } + }, + series: [{ + name: 'Punch Card', + type: 'scatter', + coordinateSystem: 'polar', + symbolSize: function (val) { + return val[2] * 2; + }, + data: this.data['punchdata'].data, + animationDelay: function (idx) { + return idx * 5; + } + }] + }; +} + ngOnInit() { + + this.zoom = 15; + + this.breadcrumb = { + 'mainlabel': 'Timeline Right', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Timelines', + 'isLink': true, + 'link': '' + }, + { + 'name': 'Timelines Right', + 'isLink': false + } + ] + }; + this.data = this.chartApiservice.getTimelineData().subscribe(Response => { + this.data = Response; + this.getChordchart(); + }); + } + + reloadProjectWorkOne() { + this.blockUIProjectWorkOne.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkOne.stop(); + }, 2500); + } + + reloadProjectWorkTwo() { + this.blockUIProjectWorkTwo.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkTwo.stop(); + }, 2500); + } + +} diff --git a/src/app/content/pages/timelines/timelines.module.ts b/src/app/content/pages/timelines/timelines.module.ts new file mode 100644 index 0000000..bb169d9 --- /dev/null +++ b/src/app/content/pages/timelines/timelines.module.ts @@ -0,0 +1,56 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TimelinesLeftComponent } from './timelines-left/timelines-left.component'; +import { TimelinesRightComponent } from './timelines-right/timelines-right.component'; +import { TimelinesHorizontalComponent } from './timelines-horizontal/timelines-horizontal.component'; +import { TimelinesCenterComponent } from './timelines-center/timelines-center.component'; +import { RouterModule } from '@angular/router'; +import { NgChartsModule } from 'ng2-charts'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgxEchartsModule } from 'ngx-echarts'; +import { NgxPhotoswipeModule, LightboxAdapter } from '@fnxone/ngx-photoswipe'; +import { HorizontalTimelinePageComponent } from './timelines-horizontal/horizontal-timeline-page/horizontal-timeline-page.component'; +import { FormsModule } from '@angular/forms'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { environment } from 'src/environments/environment'; + +@NgModule({ + imports: [ + CommonModule, + NgxEchartsModule.forRoot({ + echarts: () => import('echarts') + }), + CardModule, + NgChartsModule, + FormsModule, + BreadcrumbModule, + NgxPhotoswipeModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'timelines-center', + component: TimelinesCenterComponent + }, + { + path: 'timelines-left', + component: TimelinesLeftComponent + }, + { + path: 'timelines-right', + component: TimelinesRightComponent + }, + { + path: 'timelines-horizontal', + component: TimelinesHorizontalComponent + } + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ], + declarations: [TimelinesLeftComponent, TimelinesRightComponent, TimelinesHorizontalComponent, TimelinesCenterComponent, + HorizontalTimelinePageComponent] +}) +export class TimelinesModule { } diff --git a/src/app/content/pages/user/user-cards/user-cards.component.css b/src/app/content/pages/user/user-cards/user-cards.component.css new file mode 100644 index 0000000..3c3987d --- /dev/null +++ b/src/app/content/pages/user/user-cards/user-cards.component.css @@ -0,0 +1,3 @@ +:host ::ng-deep .btn.btn-social-icon { + padding: unset !important; +} \ No newline at end of file diff --git a/src/app/content/pages/user/user-cards/user-cards.component.html b/src/app/content/pages/user/user-cards/user-cards.component.html new file mode 100644 index 0000000..1229c65 --- /dev/null +++ b/src/app/content/pages/user/user-cards/user-cards.component.html @@ -0,0 +1,607 @@ +
+
+
+ +
+
+ +
+
+

Simple User Cards

+

A very basic simple user cards.

+
+
+
+
+
+ Card image +
+
+

Michelle Howard

+
Managing Director
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Joseph Ryan

+
Marketing Head
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Frances Butler

+
Technical Lead
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Andrew Davis

+
UI/UX Designer
+
+
+ + + +
+
+
+
+
+ + +
+
+

Simple User Cards with Border

+

Use color palette border class border-color, border-lighten-*.

+
+
+
+
+
+ Card image +
+
+

Michelle Howard

+
Managing Director
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Joseph Ryan

+
Marketing Head
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Frances Butler

+
Technical Lead
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Andrew Davis

+
UI/UX Designer
+
+
+ + + +
+
+
+
+
+ + +
+
+

Simple User Cards with Square Thumbnail

+

Use shadow helper class box-shadow-* to add show in cards.

+
+
+
+
+
+ Card image +
+
+

Michelle Howard

+
Managing Director
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Joseph Ryan

+
Marketing Head
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Frances Butler

+
Technical Lead
+
+
+ + + +
+
+
+
+
+
+
+
+ Card image +
+
+

Andrew Davis

+
UI/UX Designer
+
+
+ + + +
+
+
+
+
+ + +
+
+

User Profile Cards

+

User profile cards with border & shadow variant.

+
+
+
+
+
+ Card image +
+
+

Frances Butler

+
Technical Lead
+
+
+ + +
+
+ +
+
+
+
+
+
+ Card image +
+
+

Andrew Davis

+
UI/UX Designer
+
+
+ + +
+
+ +
+
+
+
+
+
+ Card image +
+
+

Michelle Howard

+
Managing Director
+
+
+ + +
+
+ +
+
+
+ + +
+
+

User Profile Cards with Stats

+

User profile cards with Stats in border & shadow variant.

+
+
+
+
+
+ Card image +
+
+

Linda Holland

+
    +
  • @lindah
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + + +
+
+

Lorem ipsum dolor sit amet, autem imperdiet et nam. Nullam labores id quo, sed ei.

+ + +
+
+
+
+
+
+
+
+ Card image +
+
+

Philip Garrett

+
    +
  • @philipg
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + + +
+
+

Lorem ipsum dolor sit amet, autem imperdiet et nam. Nullam labores id quo, sed ei.

+ + +
+
+
+
+
+
+
+
+ Card image +
+
+

Christine Wood

+
    +
  • @christine
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + + +
+
+

Lorem ipsum dolor sit amet, autem imperdiet et nam. Nullam labores id quo, sed ei.

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

User Profile Cards with Cover Image

+

User profile cards with Cover Image in border & shadow variant.

+
+
+
+ +
+
+ Card image +
+
+
+

Linda Holland

+
    +
  • @lindah
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + +
+
+
+
+
+
+ +
+
+ Card image +
+
+
+

Philip Garrett

+
    +
  • @philip
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + +
+
+
+
+
+
+
+
+ Card image +
+
+
+

Christine Wood

+
    +
  • @christine
  • +
  • domain.com
  • +
+
Managing Director
+
+
+ + + + +
+
+
+
+
+ + +
+
+
diff --git a/src/app/content/pages/user/user-cards/user-cards.component.spec.ts b/src/app/content/pages/user/user-cards/user-cards.component.spec.ts new file mode 100644 index 0000000..3c6962a --- /dev/null +++ b/src/app/content/pages/user/user-cards/user-cards.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { UserCardsComponent } from './user-cards.component'; + +describe('UserCardsComponent', () => { + let component: UserCardsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ UserCardsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UserCardsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/user/user-cards/user-cards.component.ts b/src/app/content/pages/user/user-cards/user-cards.component.ts new file mode 100644 index 0000000..192dac1 --- /dev/null +++ b/src/app/content/pages/user/user-cards/user-cards.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-user-cards', + templateUrl: './user-cards.component.html', + styleUrls: ['./user-cards.component.css'] +}) +export class UserCardsComponent implements OnInit { + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'User Cards', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Users', + 'isLink': true, + 'link': '' + }, + { + 'name': 'User Cards', + 'isLink': false + } + ] + }; + } + +} diff --git a/src/app/content/pages/user/user-profile/user-profile.component.css b/src/app/content/pages/user/user-profile/user-profile.component.css new file mode 100644 index 0000000..2c628af --- /dev/null +++ b/src/app/content/pages/user/user-profile/user-profile.component.css @@ -0,0 +1,25 @@ +agm-map { + height: 450px; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .my-gallery img{ + max-width: 100% !important; + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; + margin-bottom: 15px; +} +:host ::ng-deep .my-gallery .img-thumbnail { + padding: .25rem; + background-color: #F4F5FA; + border: 1px solid #626E82; + border-radius: .25rem; +} +:host ::ng-deep .ngx-gallery { + grid-template-columns: auto !important + ; +} \ No newline at end of file diff --git a/src/app/content/pages/user/user-profile/user-profile.component.html b/src/app/content/pages/user/user-profile/user-profile.component.html new file mode 100644 index 0000000..9813e01 --- /dev/null +++ b/src/app/content/pages/user/user-profile/user-profile.component.html @@ -0,0 +1,591 @@ +
+
+
+
+
+
+
+
+
+
+
+
+ + Card image + +
+
+
+
+

Jose Diaz

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

Timeline

+ +
    +
  • +
  • +
    + +
    +
    + + + + Portfolio project work +

    + 8 hours ago +

    +
    +
    + + Timeline Image 1 + + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    + + +
    +
    + + avatar + +
    +
    +

    Jason Ansley

    +

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante + sollicitudin commodo.

    + +
    +
    + + avatar + +
    +
    +

    Janice Johnston

    +

    Gravida nulla. Nulla vel metus scelerisque ante sollicitudin.

    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
  • +
  • +
    + avatar +
    +
    + + + + Sofia Orav +

    + 8 hours ago +

    +
    +
    + +
    + +
    +
    + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et? Rhoncus, vel dignissim in scelerisque. + Dolor lacus pulvinar adipiscing adipiscing montes! Elementum risus adipiscing non, cras + scelerisque risus penatibus? Massa vut, habitasse, tincidunt!

    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +
    +

    +

    Campaign Report

    +

    18 hours ago

    +

    Rhoncus, vel dignissim in scelerisque. Dolor lacus pulvinar adipiscing adipiscing montes! + Elementum + risus adipiscing non, cras scelerisque risus penatibus? Massa vut, habitasse, tincidunt!

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + avatar +
    +
    + Card image +
    +

    Good Morning

    +

    26 Aug, 2016 at 2.00 A.M

    +

    This is a wider card with supporting text below as a natural lead-in to + additional + content. This content is a little bit longer.

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et? Rhoncus, vel dignissim in scelerisque. Dolor + lacus pulvinar adipiscing adipiscing montes!

    +
    +
    +
  • +
  • +
    + +
    +
    + + + + Sofia Orav +

    + 18 June, 2016 at 4.50 P.M +

    +
    +
    + +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
      +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Punch Card Chart

    +

    + 6 Feb, 2016 at 6.00 A.M +

    +
    +
    +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    +
    +
    +
    +
    +
    + +
    +
    +
  • +
+ + +
    +
  • + +
  • +
    + +
    +
    +
    +
    +

    +

    Media Gallery

    +

    July 1, 2015

    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a pulvinar, rhoncus + sagittis ut nunc elit! Sociis in et?

    +
    +
    + +
    + +
    + +
    +
  • +
  • +
    + +
    +
    +
    +
    + +
    +

    Application API Support

    +

    + 15 Oct, 2015 at 8.00 A.M + High +

    +
    +
    +
    +
    + Timeline Image 1 +
    +
    +

    Nullam facilisis fermentum aliquam. Suspendisse ornare dolor vitae libero + hendrerit auctor lacinia a ligula. Curabitur elit tellus, porta ut orci sed, fermentum bibendum + nisi.

    + +
    +
    + +
    +
    +
  • +
  • +
    + +
    +
    +
    +

    Quote of the day

    +

    + 03 March, 2015 at 5 P.M +

    +
    +
    + Timeline Image 1 +
    +
    +

    Eu pid nunc urna integer, sed, cras tortor scelerisque penatibus facilisis a + pulvinar, rhoncus sagittis ut nunc elit! Sociis in et?

    +
    Someone famous in + - Source Title +
    +
    +
    +
    +
    +
  • +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/content/pages/user/user-profile/user-profile.component.spec.ts b/src/app/content/pages/user/user-profile/user-profile.component.spec.ts new file mode 100644 index 0000000..0a4b0c6 --- /dev/null +++ b/src/app/content/pages/user/user-profile/user-profile.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { UserProfileComponent } from './user-profile.component'; + +describe('UserProfileComponent', () => { + let component: UserProfileComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ UserProfileComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UserProfileComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/pages/user/user-profile/user-profile.component.ts b/src/app/content/pages/user/user-profile/user-profile.component.ts new file mode 100644 index 0000000..619a8a2 --- /dev/null +++ b/src/app/content/pages/user/user-profile/user-profile.component.ts @@ -0,0 +1,317 @@ +import { Component, OnInit } from '@angular/core'; +import * as echarts from 'echarts'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { ChartApiService } from '../../../../_services/chart.api'; + +interface Marker { + lat: number; + lng: number; + label: string; +} + +const hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a', + '7a', '8a', '9a', '10a', '11a', + '12p', '1p', '2p', '3p', '4p', '5p', + '6p', '7p', '8p', '9p', '10p', '11p']; + +const days = ['Saturday', 'Friday', 'Thursday', + 'Wednesday', 'Tuesday', 'Monday', 'Sunday']; + +@Component({ + selector: 'app-user-profile', + templateUrl: './user-profile.component.html', + styleUrls: ['./user-profile.component.css'] +}) + +export class UserProfileComponent implements OnInit { + + image1 = [ + { + img: '../../../../../assets/images/gallery/1.jpg', + thumb: '../../../../../assets/images/gallery/1.jpg', + description: 'Image 1' + }] + image2 = [{ + img: '../../../../../assets/images/gallery/2.jpg', + thumb: '../../../../../assets/images/gallery/2.jpg', + description: 'Image 2' + }] + image3 = [{ + img: '../../../../../assets/images/gallery/3.jpg', + thumb: '../../../../../assets/images/gallery/3.jpg', + description: 'Image 3' + }] + image4 = [{ + img: '../../../../../assets/images/gallery/4.jpg', + thumb: '../../../../../assets/images/gallery/4.jpg', + description: 'Image 4' + }] + image5 = [{ + img: '../../../../../assets/images/gallery/5.jpg', + thumb: '../../../../../assets/images/gallery/5.jpg', + description: 'Image 5' + } + ] + image6 = [ + { + img: '../../../../../assets/images/gallery/6.jpg', + thumb: '../../../../../assets/images/gallery/6.jpg', + description: 'Image 6' + } + ] + image7 = [ + { + img: '../../../../../assets/images/gallery/7.jpg', + thumb: '../../../../../assets/images/gallery/7.jpg', + description: 'Image 7' + } + ] + image8 = [ + { + img: '../../../../../assets/images/gallery/8.jpg', + thumb: '../../../../../assets/images/gallery/8.jpg', + description: 'Image 8' + } + ] + image9 = [ + { + img: '../../../../../assets/images/gallery/9.jpg', + thumb: '../../../../../assets/images/gallery/9.jpg', + description: 'Image 9' + } + ] + image10 = [ + { + img: '../../../../../assets/images/gallery/10.jpg', + thumb: '../../../../../assets/images/gallery/10.jpg', + description: 'Image 10' + } + ] + image11 = + [ + { + img: '../../../../../assets/images/gallery/11.jpg', + thumb: '../../../../../assets/images/gallery/11.jpg', + description: 'Image 11' + } + ]; + image12 = + [ + { + img: '../../../../../assets/images/gallery/12.jpg', + thumb: '../../../../../assets/images/gallery/12.jpg', + description: 'Image 12' + } + ]; + + data: any; + option: any; + public zoom = 15; + end: any; + + @BlockUI('projectWorkOne') blockUIProjectWorkOne: NgBlockUI; + @BlockUI('sofiaOrav') blockUISofiaOrav: NgBlockUI; + @BlockUI('sofiaOravTwo') blockUISofiaOravTwo: NgBlockUI; + + lat = 40.650002; + lng = -73.949997; + + options = { + close: false, + expand: true, + minimize: false, + reload: true + }; + + markers: Marker[] = [ + { + lat: this.lat, + lng: this.lng, + label: '' + } + ]; + constructor(private chartApiservice: ChartApiService) { } + chartOption: echarts.EChartsOption = { + // grid: { + // x: 40, + // x2: 40, + // y: 45, + // y2: 25 + // }, + + // Add tooltip + tooltip: { + trigger: 'axis', + axisPointer: { // Axis indicator axis trigger effective + type: 'shadow' // The default is a straight line, optionally: 'line' | 'shadow' + } + }, + + // Add legend + legend: { + data: ['Direct access', 'Email marketing', 'Advertising alliance', 'Video ads', + 'Search engine', 'Google', 'Safari', 'Opera', 'Firefox'] + }, + + // Add custom colors + color: ['#666EE8', '#FF9149', '#FF9966', '#FA8E57', '#FF637b', '#5175E0', '#A147F0', '#28D094', '#BABFC7'], + + // // Enable drag recalculate + // calculable: true, + xAxis: [ + { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + + { + name: 'Direct access', + type: 'bar', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Email marketing', + type: 'bar', + stack: 'advertising', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Advertising alliance', + type: 'bar', + stack: 'advertising', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video ads', + type: 'bar', + stack: 'advertising', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Search Engine', + type: 'bar', + stack: 'Total', + data: [862, 1018, 964, 1026, 1679, 1600, 1570], + }, + { + name: 'Google', + type: 'bar', + barWidth: 12, + stack: 'search engine', + data: [620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name: 'Safari', + type: 'bar', + stack: 'search engine', + data: [120, 132, 101, 134, 290, 230, 220] + }, + { + name: 'Opera', + type: 'bar', + stack: 'search engine', + data: [60, 72, 71, 74, 190, 130, 110] + }, + { + name: 'Firefox', + type: 'bar', + stack: 'search engine', + data: [62, 82, 91, 84, 109, 110, 120] + } + ] + }; + getChordchart() { + this.option = { + title: { + text: 'Punch Card of Github', + link: 'https://github.com/pissang/echarts-next/graphs/punch-card' + }, + legend: { + data: ['Punch Card'], + left: 'right' + }, + polar: {}, + tooltip: { + formatter: function (params) { + return params.value[2] + ' commits in ' + hours[params.value[1]] + ' of ' + days[params.value[0]]; + } + }, + angleAxis: { + type: 'category', + data: hours, + boundaryGap: false, + splitLine: { + show: true, + lineStyle: { + color: '#999', + type: 'dashed' + } + }, + axisLine: { + show: false + } + }, + radiusAxis: { + type: 'category', + data: days, + axisLine: { + show: false + }, + axisLabel: { + rotate: 45 + } + }, + series: [{ + name: 'Punch Card', + type: 'scatter', + coordinateSystem: 'polar', + symbolSize: function (val) { + return val[2] * 2; + }, + data: this.data['punchdata'].data, + animationDelay: function (idx) { + return idx * 5; + } + }] + }; + } + ngOnInit() { + this.zoom = 15; + this.chartApiservice.getTimelineData().subscribe(Response => { + this.data = Response; + this.getChordchart(); + }); + } + + reloadProjectWorkOne() { + this.blockUIProjectWorkOne.start('Loading..'); + + setTimeout(() => { + this.blockUIProjectWorkOne.stop(); + }, 2500); + } + + reloadSofiaOrav() { + this.blockUISofiaOrav.start('Loading..'); + + setTimeout(() => { + this.blockUISofiaOrav.stop(); + }, 2500); + } + + reloadSofiaOravTwo() { + this.blockUISofiaOravTwo.start('Loading..'); + + setTimeout(() => { + this.blockUISofiaOravTwo.stop(); + }, 2500); + } + +} diff --git a/src/app/content/pages/user/user.module.ts b/src/app/content/pages/user/user.module.ts new file mode 100644 index 0000000..496e748 --- /dev/null +++ b/src/app/content/pages/user/user.module.ts @@ -0,0 +1,44 @@ +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { UserCardsComponent } from './user-cards/user-cards.component'; +import { UserProfileComponent } from './user-profile/user-profile.component'; +import { RouterModule } from '@angular/router'; +import { NgChartsModule } from 'ng2-charts'; +import { NgxEchartsModule } from 'ngx-echarts'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; +import { CardModule } from '../../partials/general/card/card.module'; +import { environment } from 'src/environments/environment'; +import { NgxPhotoswipeModule, LightboxAdapter } from '@fnxone/ngx-photoswipe'; +@NgModule({ + declarations: [UserCardsComponent, UserProfileComponent], + imports: [ + CommonModule, + CardModule, + NgxEchartsModule.forRoot({ + echarts: () => import('echarts') + }), + NgChartsModule, + NgbModule, + BreadcrumbModule, + NgxPhotoswipeModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + + RouterModule.forChild([ + { + path: 'user-profile', + component: UserProfileComponent + }, + { + path: 'user-cards', + component: UserCardsComponent + }, + ]), + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ] +}) +export class UserModule { } diff --git a/src/app/content/partials/general/card/card.component.css b/src/app/content/partials/general/card/card.component.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/app/content/partials/general/card/card.component.css @@ -0,0 +1 @@ + diff --git a/src/app/content/partials/general/card/card.component.html b/src/app/content/partials/general/card/card.component.html new file mode 100644 index 0000000..c60bbac --- /dev/null +++ b/src/app/content/partials/general/card/card.component.html @@ -0,0 +1,31 @@ + +
+
+

+ +

+ +
+ +
    +
  • +
  • +
  • +
  • +
  • +
+
+
+
+ +
+ +
+
+ +
diff --git a/src/app/content/partials/general/card/card.component.ts b/src/app/content/partials/general/card/card.component.ts new file mode 100644 index 0000000..3d2350a --- /dev/null +++ b/src/app/content/partials/general/card/card.component.ts @@ -0,0 +1,134 @@ +import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, + ViewChild, EventEmitter, Output } from '@angular/core'; +import { Observable } from 'rxjs'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { AppConstants } from 'src/app/_helpers/app.constants'; + +@Component({ + selector: 'm-card', + templateUrl: './card.component.html', + styleUrls: ['./card.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CardComponent implements AfterViewInit { + @Input() loading$: Observable; + @Input() options: any; + @Output() reloadFunction: EventEmitter = new EventEmitter(); + + @ViewChild('mCard', { static: true }) elCard: ElementRef; + @ViewChild('mCardHeader', { static: true }) elHeader: ElementRef; + @ViewChild('mCardHeaderTitle', { static: true }) elHeaderTitle: ElementRef; + @ViewChild('mCardContent', { static: true }) elContent: ElementRef; + @ViewChild('mCardBody', { static: true }) elBody: ElementRef; + @ViewChild('mCardFooter', { static: true }) elFooter: ElementRef; + @ViewChild('mCardHeaderTools', { static: true }) elHeaderTools: ElementRef; + + constructor() { + } + + ngAfterViewInit(): void { + + if (this.elHeader && this.elHeader.nativeElement.children.length === 0) { + this.elHeader.nativeElement.style.display = 'none'; + } else if (this.options && this.options['headerClass']) { + this.options['headerClass'].forEach(element => { + this.elHeader.nativeElement.classList.add(element); + }); + } + + if (this.elHeaderTitle && (this.elHeaderTitle.nativeElement.children.length === 0 + && this.elHeaderTitle.nativeElement.innerText.trim().length === 0)) { + this.elHeader.nativeElement.style.display = 'none'; + } + + if (this.elFooter && this.elFooter.nativeElement.children.length === 0) { + this.elFooter.nativeElement.style.display = 'none'; + } + if (this.elHeaderTools && this.elHeaderTools.nativeElement.children.length === 0) { + this.elFooter.nativeElement.style.display = 'none'; + } + + if (this.elContent && this.elContent.nativeElement.children.length === 0) { + this.elContent.nativeElement.style.display = 'none'; + } else if (this.options && this.options['contentClass']) { + this.options['contentClass'].forEach(element => { + this.elContent.nativeElement.classList.add(element); + }); + } + if (this.elBody && this.elBody.nativeElement.children.length === 0) { + this.elBody.nativeElement.style.display = 'none'; + } else if (this.options && this.options['bodyClass']) { + this.options['bodyClass'].forEach(element => { + this.elBody.nativeElement.classList.add(element); + }); + } + if (this.options && this.options['cardClass']) { + this.options['cardClass'].forEach(element => { + this.elCard.nativeElement.classList.add(element); + }); + } + } + + toggleCollpase(event) { + let target = event.target || event.srcElement || event.currentTarget; + if (this.elContent.nativeElement.classList.contains('show')) { + this.elContent.nativeElement.classList.add('collapse'); + this.elContent.nativeElement.classList.remove('show'); + if (!target.classList.contains('ft-plus') && !target.classList.contains('ft-minus')) { + target = event.target.querySelector('i'); + } + target.classList.remove('ft-minus'); + target.classList.add('ft-plus'); + } else { + this.elContent.nativeElement.classList.add('show'); + if (!target.classList.contains('ft-plus') && !target.classList.contains('ft-minus')) { + target = event.target.querySelector('i'); + } + this.elContent.nativeElement.classList.remove('collapse'); + target.classList.remove('ft-plus'); + target.classList.add('ft-minus'); + } + this.toggleMobileMenu(); + } + + reload() { + this.reloadFunction.emit(this.options); + } + + close() { + this.elCard.nativeElement.classList.add('hidden'); + this.elCard.nativeElement.classList.remove('card-fullscreen'); + this.toggleMobileMenu(); + } + + toggleExpand(event) { + let target = event.target || event.srcElement || event.currentTarget; + if (this.elCard.nativeElement.classList.contains('card-fullscreen')) { + this.elCard.nativeElement.classList.remove('card-fullscreen'); + if (!target.classList.contains('ft-maximize') && !target.classList.contains('ft-minimize')) { + target = event.target.querySelector('i'); + } + target.classList.add('ft-maximize'); + target.classList.remove('ft-minimize'); + } else { + this.elCard.nativeElement.classList.add('card-fullscreen'); + if (!target.classList.contains('ft-maximize') && !target.classList.contains('ft-minimize')) { + target = event.target.querySelector('i'); + } + target.classList.remove('ft-maximize'); + target.classList.add('ft-minimize'); + } + this.toggleMobileMenu(); + } + + toggleMobileMenu() { + if (this.elHeaderTools.nativeElement.classList.contains('visible')) { + this.elHeaderTools.nativeElement.classList.remove('visible'); + } else { + this.elHeaderTools.nativeElement.classList.add('visible'); + } + // fire resize event for graphs + setTimeout(() => { AppConstants.fireRefreshEventOnWindow(); }, 300); + } + +} diff --git a/src/app/content/partials/general/card/card.module.ts b/src/app/content/partials/general/card/card.module.ts new file mode 100644 index 0000000..c903b4b --- /dev/null +++ b/src/app/content/partials/general/card/card.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { MatchHeightModule } from '../../../partials/general/match-height/match-height.module'; +import { CardComponent } from './card.component'; +import { CardDirective } from 'src/app/_directives/card.directive'; + +@NgModule({ + imports: [ + CommonModule, + MatchHeightModule + ], + declarations: [CardComponent, CardDirective], + exports: [CardComponent] +}) +export class CardModule { } diff --git a/src/app/content/partials/general/match-height/match-height.module.ts b/src/app/content/partials/general/match-height/match-height.module.ts new file mode 100644 index 0000000..6abc776 --- /dev/null +++ b/src/app/content/partials/general/match-height/match-height.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { MatchHeightDirective } from 'src/app/_directives/match-height.directive'; + +@NgModule({ + declarations: [MatchHeightDirective], + imports: [ + CommonModule, + ], + exports: [MatchHeightDirective] +}) +export class MatchHeightModule { } diff --git a/src/app/content/partials/partials.module.ts b/src/app/content/partials/partials.module.ts new file mode 100644 index 0000000..d49a9f8 --- /dev/null +++ b/src/app/content/partials/partials.module.ts @@ -0,0 +1,21 @@ +import { RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { CardModule } from './general/card/card.module'; + + +@NgModule({ + declarations: [ + + ], + exports: [ + CardModule + ], + imports: [ + CommonModule, + RouterModule, + NgbModule + ] +}) +export class PartialsModule {} diff --git a/src/app/content/table/boostraptables/basictable/basictable.component.css b/src/app/content/table/boostraptables/basictable/basictable.component.css new file mode 100644 index 0000000..5e62318 --- /dev/null +++ b/src/app/content/table/boostraptables/basictable/basictable.component.css @@ -0,0 +1,10 @@ + +:host ::ng-deep .table-striped tbody tr:nth-of-type(odd) { + background-color: #ffffff !important; +} +:host ::ng-deep .table-hover tbody tr:hover, .table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(245,247,250,.5) !important; +} +:host ::ng-deep .px-1 { + padding-left: 1.5rem !important; +} \ No newline at end of file diff --git a/src/app/content/table/boostraptables/basictable/basictable.component.html b/src/app/content/table/boostraptables/basictable/basictable.component.html new file mode 100644 index 0000000..b365661 --- /dev/null +++ b/src/app/content/table/boostraptables/basictable/basictable.component.html @@ -0,0 +1,516 @@ +
+
+
+ +
+
+ +
+
+
+
+

Basic table

+
+
+

Using the most basic table markup, here’s how .table-based tables + look in Bootstrap. You can use any example of below table for your table and it can be use with + any type of ng-bootstrap tables.

+ +

Example 1: Table with outer spacing

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+

Example 2: Minimal Table with no outer spacing.

+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+ + +
+
+
+
+

Inverse table

+
+
+

You can also invert the colors—with light text on dark backgrounds—with + .table-inverse.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+
+
+
+

Inverse table with info background

+
+
+

You can also invert the colors—with light text on dark backgrounds—with .bg-info , + .bg-success , .bg-warning and .bg-danger classes. + +

To set the light background color use .bg-[color] class where [color] is the value of your + selected color from modern color palette. So for teal color background class will be .bg-teal. Refer + HTML markup line no 1. Background color class is a optional if you don't it will take white background + default. + +

To set the selected background color lighten use .bg-lighten-[*] class where [*] is the value + between '1-5' of your selected lighten color from modern color palette. So for color lighten 4 + background class will be .bg-lighten-4. Refer HTML markup line no 1. Background lighten color class is a + optional if you don't it will take white background default.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+ +
+
+
+
+

Table head options

+
+
+

Similar to default and inverse tables, use one of two modifier classes .thead-default + or .thead-inverse to make <thead>s + appear light or dark gray.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ + +
+
+
+ + + +
+
+
+
+

Table head options with primary background

+
+
+

Use background classes bg-* to make custom + thead + background. You can also use Modern Admin color palette classes for background.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+ +
+
+
+ + + +
+
+
+
+

Striped rows

+
+
+
+

Use .table-striped to add + zebra-striping to any table row within the <tbody>. + This styling doesn't work in IE8 and below as :nth-child CSS selector + isn't + supported.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ + + +
+
+
+
+

Striped rows with inverse table

+
+
+
+

Use .table-inverse with .table-striped to + add + zebra-striping to any inverse table row within the <tbody>. This + styling + doesn't work in IE8 and below as :nth-child CSS selector isn't + supported.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ + +
+
+
+
+

Bordered table

+
+
+
+

Add.table-bordered for borders on all sides of the table and cells. +

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ +
+
+
+
+

Bordered striped

+
+
+
+

Use .table-striped with .table-bordered to add + zebra-striping to any table row within the <tbody>.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ +
+
+
+
+

Bordered Table Inverse

+
+
+
+

Use .table-inverse with .table-bordered to add + zebra-striping to any table row within the <tbody>.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ +
+
+
+
+

Hoverable rows

+
+
+
+

Add .table-hover to enable a hover state on table rows + within a <tbody>.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ diff --git a/src/app/content/table/boostraptables/basictable/basictable.component.spec.ts b/src/app/content/table/boostraptables/basictable/basictable.component.spec.ts new file mode 100644 index 0000000..bfa6201 --- /dev/null +++ b/src/app/content/table/boostraptables/basictable/basictable.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BasictableComponent } from './basictable.component'; + +describe('BasictableComponent', () => { + let component: BasictableComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BasictableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasictableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/basictable/basictable.component.ts b/src/app/content/table/boostraptables/basictable/basictable.component.ts new file mode 100644 index 0000000..8983aba --- /dev/null +++ b/src/app/content/table/boostraptables/basictable/basictable.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-basictable', + templateUrl: './basictable.component.html', + styleUrls: ['./basictable.component.css'] +}) +export class BasictableComponent implements OnInit { + BasictableData: any; + countries: any; + // public COUNTRIES = this.BasictableData.rows; + // countries = this.COUNTRIES; + @BlockUI('basicTables') blockUIBasicTables: NgBlockUI; + @BlockUI('inverseTable') blockUIInverseTable: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + loadingIndicator: true; + public breadcrumb: any; + + constructor(private tableApiservice: TableApiService) {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: 'Basic Tables', + links: [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Basic Tables', + 'isLink': false + } + ] + }; + this.tableApiservice.getBasicTableData().subscribe(Response => { + this.BasictableData = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.countries = this.BasictableData.rows; + } + reloadBasicTables() { + this.blockUIBasicTables.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicTables.stop(); + }, 2500); + } + + reloadInverseTable() { + this.blockUIInverseTable.start('Loading..'); + + setTimeout(() => { + this.blockUIInverseTable.stop(); + }, 2500); + } + +} diff --git a/src/app/content/table/boostraptables/boostraptables.module.spec.ts b/src/app/content/table/boostraptables/boostraptables.module.spec.ts new file mode 100644 index 0000000..a02e6ea --- /dev/null +++ b/src/app/content/table/boostraptables/boostraptables.module.spec.ts @@ -0,0 +1,13 @@ +import { BoostraptablesModule } from './boostraptables.module'; + +describe('BoostraptablesModule', () => { + let boostraptablesModule: BoostraptablesModule; + + beforeEach(() => { + boostraptablesModule = new BoostraptablesModule(); + }); + + it('should create an instance', () => { + expect(boostraptablesModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/boostraptables.module.ts b/src/app/content/table/boostraptables/boostraptables.module.ts new file mode 100644 index 0000000..8e2c0b5 --- /dev/null +++ b/src/app/content/table/boostraptables/boostraptables.module.ts @@ -0,0 +1,66 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { BasictableComponent } from './basictable/basictable.component'; +import { TableborderComponent } from './tableborder/tableborder.component'; +import { TablesizingComponent } from './tablesizing/tablesizing.component'; +import { TablestylingComponent } from './tablestyling/tablestyling.component'; +import { TablecomponentsComponent } from './tablecomponents/tablecomponents.component'; +import { NgxboostraptablesComponent, NgbSortable} from './ngxboostraptables/ngxboostraptables.component'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { RouterModule } from '@angular/router'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown'; +import { FormsModule , ReactiveFormsModule } from '@angular/forms'; +import { UiSwitchModule } from 'ngx-ui-switch'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { NgbdSortableHeader } from '../../../_directives/sortable.directive'; + +@NgModule({ + imports: [ + NgxDatatableModule, + CardModule, + BreadcrumbModule, + CommonModule, + UiSwitchModule, + FormsModule, + ReactiveFormsModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + NgMultiSelectDropDownModule.forRoot(), + NgbModule, + RouterModule.forChild([ + { + path: 'basictable', + component: BasictableComponent + }, + { + path: 'tableborder', + component: TableborderComponent + }, + { + path: 'tablesizing', + component: TablesizingComponent + }, + { + path: 'tablestyling', + component: TablestylingComponent + }, + { + path: 'tablecomponents', + component: TablecomponentsComponent + }, + { + path: 'ngxboostraptables', + component: NgxboostraptablesComponent + }, + ]), + ], + declarations: [BasictableComponent, TableborderComponent, TablesizingComponent, TablestylingComponent, TablecomponentsComponent, + NgxboostraptablesComponent, NgbSortable, NgbdSortableHeader], +}) + +export class BoostraptablesModule { } diff --git a/src/app/content/table/boostraptables/ngxboostraptables/countries.ts b/src/app/content/table/boostraptables/ngxboostraptables/countries.ts new file mode 100644 index 0000000..5f8203d --- /dev/null +++ b/src/app/content/table/boostraptables/ngxboostraptables/countries.ts @@ -0,0 +1,68 @@ +export interface Country { + id: number; + firstname: string; + lastname: string; + username: string; +} +export const COUNTRIES: Country[] = [ + { + 'id': 1, + 'firstname': 'Mark', + 'lastname': 'Otto', + 'username': '@mdo' +}, +{ + 'id': 2, + 'firstname': 'Jacob', + 'lastname': 'Thornton', + 'username': '@fat' +}, +{ + 'id': 3, + 'firstname': 'Larry', + 'lastname': 'the Bird', + 'username': '@twitter' +}, +{ + 'id': 4, + 'firstname': 'Fensy', + 'lastname': 'loir', + 'username': '@kort' +}, +{ + 'id': 5, + 'firstname': 'Piter', + 'lastname': 'Pan', + 'username': '@google' +}, +{ + 'id': 6, + 'firstname': 'July', + 'lastname': 'Dooley', + 'username': '@bat' +}, +{ + 'id': 7, + 'firstname': 'Jon', + 'lastname': 'Snow', + 'username': '@hest' +}, +{ + 'id': 8, + 'firstname': 'Alexandra', + 'lastname': 'Blake', + 'username': '@foe' +}, +{ + 'id': 9, + 'firstname': 'Alonso', + 'lastname': 'Lanier', + 'username': '@phe' +}, +{ + 'id': 10, + 'firstname': 'Claire', + 'lastname': 'Burgess', + 'username': '@yaker' +}, +]; diff --git a/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.css b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.css new file mode 100644 index 0000000..3495683 --- /dev/null +++ b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.css @@ -0,0 +1,19 @@ +th[sortable].asc:before { + content: '\2191'; + display: block; + width: 22px; + height: 22px; + float: left; + margin-left: -22px; +} +th[sortable].desc:before { + content: '\2193'; + display: block; + width: 22px; + height: 22px; + float: left; + margin-left: -22px; +} +.table { + --bs-table-striped-bg: rgba(0, 0, 0, 0) !important; +} \ No newline at end of file diff --git a/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.html b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.html new file mode 100644 index 0000000..87523c1 --- /dev/null +++ b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.html @@ -0,0 +1,230 @@ +
+
+
+ +
+
+ +
+
+
+
+

Basic table

+
+
+

Using the most basic table markup, here’s how .table-based tables + look in Bootstrap. You can use any example of below table for your table and it can be use with + any type of ng-bootstrap tables.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ element.firstname }}{{ element.lastname }}{{ element.username }}
+
+
+
+
+ +
+
+ +
+
+
+
+

Pagination table

+
+
+

Using the most basic table markup, here’s how .table-based tables + look in Bootstrap. You can bind our NgbPagination component with slicing the data list.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ element.id }}{{ element.firstname }}{{ element.lastname}}{{ element.username }}
+ +
+ + + + +
+
+
+
+
+
+
+
+
+

Serch and Filtering table

+
+
+

You can do filter table data, in this case with observables and our + NgbHighlight component used in Typeahead.

+
+
+
+
+ Full text search: +
+
+ + + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }} + + + + + +
+ +
+
+
+
+
+
+
+
+

Sortable table

+
+
+

You can introduce custom directives for table headers to sort columns.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ element.id }}{{ element.firstname }}{{ element.lastname }}{{ element.username }}
+
+
+
+
+
+
+
+
+

Complate table

+
+
+

Table example with sorting,pagination and filtering.

+
+
+
+
+ Full text search: + Loading... +
+ + + + + + + + + + + + + + + + + + +
#Firstnamelastnameusername
{{ element.id }} + + + + + + +
+ +
+ + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.spec.ts b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.spec.ts new file mode 100644 index 0000000..6b190d6 --- /dev/null +++ b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { NgxboostraptablesComponent } from './ngxboostraptables.component'; + +describe('NgxboostraptablesComponent', () => { + let component: NgxboostraptablesComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ NgxboostraptablesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NgxboostraptablesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.ts b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.ts new file mode 100644 index 0000000..a462542 --- /dev/null +++ b/src/app/content/table/boostraptables/ngxboostraptables/ngxboostraptables.component.ts @@ -0,0 +1,176 @@ +import { Component, OnInit, PipeTransform, Input, Output, Directive, EventEmitter, ViewChildren, QueryList} from '@angular/core'; +import { DecimalPipe } from '@angular/common'; +import { TableApiService } from '../../../../_services/table-api.service'; +import { Observable } from 'rxjs'; +import { FormControl } from '@angular/forms'; +import { map, startWith } from 'rxjs/operators'; +import { Country } from './countries'; +import { CountryService } from '../../../../_services/country.service'; +import { NgbdSortableHeader, SortEvent } from '../../../../_directives/sortable.directive'; + +interface Employee { + id: number; + firstname: string; + lastname: string; + username: string; +} + +export type SortDirection = 'asc' | 'desc' | ''; +const rotate: {[key: string]: SortDirection} = { 'asc': 'desc', 'desc': '', '': 'asc' }; +export const compare = (v1, v2) => v1 < v2 ? -1 : v1 > v2 ? 1 : 0; +/* eslint-disable @angular-eslint/no-host-metadata-property */ +/* eslint-disable @angular-eslint/directive-selector */ +/* eslint-disable @angular-eslint/directive-class-suffix */ +@Directive({ + selector: 'th[sortable]', + host: { + '[class.asc]': 'direction === "asc"', + '[class.desc]': 'direction === "desc"', + '(click)': 'rotate()' + } +}) +export class NgbSortable { + + @Input() sortable: string; + @Input() direction: SortDirection = ''; + @Output() sort = new EventEmitter(); + + rotate() { + this.direction = rotate[this.direction]; + this.sort.emit({column: this.sortable, direction: this.direction}); + } +} +@Component({ + selector: 'app-ngxboostraptables', + templateUrl: './ngxboostraptables.component.html', + styleUrls: ['./ngxboostraptables.component.css'], + providers: [DecimalPipe, CountryService], +}) +export class NgxboostraptablesComponent implements OnInit { + breadcrumb: any; + PERSON: any; + TableData: any; + pipe: any; + page = 1; + pageSize = 4; + collectionSize: any; + column: any; + employeeSearch: Observable; + filter = new FormControl(''); + employeeSortable: any; + countries$: Observable; + total$: Observable; +@ViewChildren(NgbdSortableHeader) headers1: QueryList; +@ViewChildren(NgbSortable) headers: QueryList; + + constructor(private tableApiservice: TableApiService, + public service: CountryService, + pipe: DecimalPipe) { + this.countries$ = service.countries$, + this.total$ = service.total$; + } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Ngxboostraptable', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Ngxboostraptable', + 'isLink': false, + 'link': '#' + } + ] + }; + this.tableApiservice.getTableNgxData().subscribe(Response => { + this.TableData = Response; + this.getTabledata(); + this.searchData(this.pipe); + this.employeeSortable = this.PERSON; + }); + } + + getTabledata() { + this.PERSON = this.TableData['EmployeeDetail']; + this.collectionSize = this.PERSON.length; + } + /** + * Pagination table + */ + get PaginationData() { + if (this.PERSON) { + return this.PERSON.map((person, i) => ({ id: i + 1, ...person })) + .slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize); + } + } + /** + * Search table + * '@param' text + * '@param' pipe + */ + search(text: string, pipe: PipeTransform) { + return this.PERSON.filter(response => { + const term = text.toLowerCase(); + return response.firstname.toLowerCase().includes(term) + || response.lastname.toLowerCase().includes(term) + || response.username.toLowerCase().includes(term); + }); + } +/** + * + * '@param' pipe + */ +searchData(pipe: DecimalPipe) { + this.employeeSearch = this.filter.valueChanges.pipe( + startWith(''), + map(text => this.search(text, pipe)) + ); +} +/** + *Sortable Table + * '@param' param0 + */ +onSort$({column, direction}: SortEvent) { + + // resetting other headers + this.headers.forEach(header => { + if (header.sortable !== column) { + header.direction = ''; + } + }); + + // sorting employeeSortable + if (direction === '') { + this.employeeSortable = this.PERSON; + } else { + this.employeeSortable = [...this.PERSON].sort((a, b) => { + const res = compare(a[column], b[column]); + return direction === 'asc' ? res : -res; + }); + } +} + +onSort({ column, direction }: SortEvent) { + // resetting other headers + this.headers.forEach(header => { + if (header.sortable !== column) { + header.direction = ''; + } + }); + + this.service.sortColumn = column; + this.service.sortDirection = direction; +} +} + + + diff --git a/src/app/content/table/boostraptables/tableborder/tableborder.component.css b/src/app/content/table/boostraptables/tableborder/tableborder.component.css new file mode 100644 index 0000000..75e1b20 --- /dev/null +++ b/src/app/content/table/boostraptables/tableborder/tableborder.component.css @@ -0,0 +1,13 @@ + +:host ::ng-deep .bouble-border{ + border-bottom-style: double; + border-bottom-color: #e3ebf3; +} +:host ::ng-deep .table-striped tbody tr:nth-of-type(odd) { + border-bottom-color:red !important; +} +:host ::ng-deep .border-solid { + border-bottom-style: solid; + border-bottom-color: #e3ebf3; + +} \ No newline at end of file diff --git a/src/app/content/table/boostraptables/tableborder/tableborder.component.html b/src/app/content/table/boostraptables/tableborder/tableborder.component.html new file mode 100644 index 0000000..a2ecae5 --- /dev/null +++ b/src/app/content/table/boostraptables/tableborder/tableborder.component.html @@ -0,0 +1,274 @@ +
+
+
+ +
+
+
+
+
+
+

Table Row borders

+
+
+
+

Example of table row borders. This is a default table border style by bootstrap and attached to .table class .

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+ +
+
+
+
+

Table column borders

+
+
+
+

Example of vertical table borders. This custom table border layout displays vertical borders only. However border between table head and table body is also visible for better visual separation. To use this layout add .table-columned class to the table with .table class .

+

Example of table column borders. Add .table-column class with .table for table with column border.

+
+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ +
+
+
+
+

Both borders

+
+
+
+

Example of table having both column & row borders. Add .table-bordered class with .table for both borders table.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+ +
+
+
+
+

Borderless Table

+
+
+
+

Example of borderless table, all border are hidden, except border .thead and .tfoot. Add .table-borderless class with .table for borderless table.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+ + + +
+
+
+
+

Default borders

+
+
+
+

Example of a default border table. This is bootstrap default table having only + .table class.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+ + + +
+
+
+
+

Solid border

+
+
+
+

Example of a solid bordered table row. This border inherits all styling options + from the default border style, the only difference is it has 2px width. Add .border-solid + to the table body row. This border style works only with row borders.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+ + + + + +
+
+
+
+

Double border

+
+
+
+

Example of double bordered table row. This has 4px width and double style. Add + .border-double to the table body row. This border style works only with row borders.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+ +
+
+
+
+
+ diff --git a/src/app/content/table/boostraptables/tableborder/tableborder.component.spec.ts b/src/app/content/table/boostraptables/tableborder/tableborder.component.spec.ts new file mode 100644 index 0000000..657ae35 --- /dev/null +++ b/src/app/content/table/boostraptables/tableborder/tableborder.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TableborderComponent } from './tableborder.component'; + +describe('TableborderComponent', () => { + let component: TableborderComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TableborderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TableborderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/tableborder/tableborder.component.ts b/src/app/content/table/boostraptables/tableborder/tableborder.component.ts new file mode 100644 index 0000000..b9e8b4b --- /dev/null +++ b/src/app/content/table/boostraptables/tableborder/tableborder.component.ts @@ -0,0 +1,77 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-tableborder', + templateUrl: './tableborder.component.html', + styleUrls: ['./tableborder.component.css'] +}) +export class TableborderComponent implements OnInit { + TableborderData: any; + countries: any; + @BlockUI('tableRowBorders') blockUITableRowBorders: NgBlockUI; + @BlockUI('borderlessTable') blockUIBorderlessTable: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + loadingIndicator: true; + timeout: any; + public breadcrumb: any; + + constructor(private tableApiservice: TableApiService) {} + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Table border', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Table border', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableBorderData().subscribe(Response => { + this.TableborderData = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.countries = this.TableborderData.rows; + } + onPage(event) { + clearTimeout(this.timeout); + this.timeout = setTimeout(() => { + console.log('paged!', event); + }, 100); + } + + reloadTableRowBorders() { + this.blockUITableRowBorders.start('Loading..'); + + setTimeout(() => { + this.blockUITableRowBorders.stop(); + }, 2500); + } + + reloadBorderlessTable() { + this.blockUIBorderlessTable.start('Loading..'); + + setTimeout(() => { + this.blockUIBorderlessTable.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.css b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.css new file mode 100644 index 0000000..0d8f8cf --- /dev/null +++ b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.css @@ -0,0 +1,59 @@ +:host ::ng-deep .bg-primary { + background-color: #666EE8 !important; +} + +:host ::ng-deep .pills .nav .nav-item .nav-link { + border-radius: 10rem; + display: inline-block; + padding: 0.35em 0.4em; + font-size: 95%; + line-height: 1; + white-space: nowrap; + vertical-align: baseline; + margin-top: 10px; +} + +:host ::ng-deep .justify-content-start { + justify-content: center !important; +} + +:host ::ng-deep .pillsbackground .nav-pills .nav-link.active, +.nav-pills .show>.nav-link { + color: #FFFFFF; + background-color: #ff9149; +} + +:host ::ng-deep .pillsborder .nav-pills .nav-link.active, +.nav-pills .show>.nav-link { + color: #28d094; + border: 2px solid #28D094 !important; + background-color: #FFFFFF; + font: #28d094; +} + +:host ::ng-deep .notifications .nav-pills .nav-link.active { + color: #7c7f90; + background-color: #FFFFFF; +} +:host ::ng-deep .table-responsive { + overflow-y: hidden; +} +:host ::ng-deep .text .dropdown-list .item2 { + max-height: 87px !important; +} +:host ::ng-deep .nav-badge { + border-radius: 10rem; + display: inline-block; + padding: 0.35em 0.4em; + font-size: 95%; + line-height: 1; + white-space: nowrap; + vertical-align: baseline; + margin-top: 10px; +} + +:host ::ng-deep .nav-badge-pillsborder { + color: #28d094; + border: 2px solid #28D094 !important; + background-color: #FFFFFF; +} diff --git a/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.html b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.html new file mode 100644 index 0000000..b7b3abd --- /dev/null +++ b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.html @@ -0,0 +1,862 @@ +
+
+
+ +
+
+ +
+
+ + + UI components + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Button + + Bootstrap includes six predefined button styles, each serving its own + semantic + purpose.
Round Buttons + + Use .btn-round class to button for Round Buttons.
Button dropdowns +
+
+ +
+ + + + + +
+
+
+
Turn a button into a dropdown toggle with some basic markup changes. +
Basic Button group +
+ + + +
+
Group a series of buttons together on a single line with the button + group. Wrap a + series of buttons with .btn in .btn-group. +
Buttons with Icon + + Bootstrap includes six predefined button styles, each serving its own + semantic + purpose.
Icon Button + + Simple Icon Button
Floating Buttons + + Floating action buttons are used for a special type of promoted action. + They are + distinguished by a circled icon floating above the UI and have special + motion + behaviors related to morphing, launching, and the transferring anchor + point. +

+ Use the class .btn along with class + .btn-floating +

+ . +
Loading Buttons + + Expand Animation Buttons
+
+
+
+
+
+ + +
+
+ + + Alerts + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
Basic Alert + + Good Morning! Start your day with some alerts. + + Alerts are available for any length of text, as well as an optional dismiss + button. + Add .alert.alert-COLOR classes for alert with all theme colors. +
Alerts with Links + + Good Morning! Start your day + with some alerts. + + Add .alert-link class to add links to alerts.
Dismissible Alerts + + + Good Morning! Start your day + with some alerts. + + + + Add a dismiss button and the .alert-dismissible class, which + adds + extra padding to the right of the alert and positions the + .close + button. On the dismiss button, add the data-dismiss="alert" + attribute, + which triggers the JavaScript functionality. Be sure to use the + <button> + element with it for proper behavior across all devices. To animate alerts + when + dismissing them, be sure to add the .fade and .in + classes. +
Alerts with icons + + + Good Morning! Start your day + with some + alerts. + + + To add left/right icons to the alert, use class + .alert-icon-left or + alert-icon-right as required. +
+
+
+
+
+
+ + +
+
+
+
+

Callouts

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Basic Callout +
+ Great Job! +

Biscuit macaroon tootsie roll croissant. Dessert candy canes + halvah cookie + liquorice.

+
+
Use .bs-callout-COLOR for color callout.
Right Bordered Callouts +
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert wafer + icing jelly.

+
+
Use .callout-border-right for right bordered callout.
Callout with transparent Background +
+

Super cool!

+

Cupcake macaroon chupa chups fruitcake. Candy canes cotton candy + dessert.

+
+
Use .callout-transparent for callout with white background. +
Callout With Icon +
+
+
+ +
+
+ Congratulations! +

Cake chupa chups tootsie roll brownie pastry marzipan + lollipop + sweet.

+
+
+
+
Use class .callout-icon to use icon with callout.
Round Callout +
+ Not Bad! +

Croissant carrot cake sesame snaps dessert wafer dessert wafer + icing jelly.

+
+
Use class .callout-round for round callout.
+
+
+
+
+
+ + +
+
+
+
+

Progress

+
+
+
+ + + + + + + + + + + + + + + + + + +
Default Progress +
Reticulating splines… 25%
+ + +
To caption a progress bar, simply add a <div> with + your caption + text, align the text using a utility class, and associate the caption + with the + progress element using the aria-describedby attribute.
Striped Progress + + + Uses a gradient to create a striped effect.
Progress Sizes + + + Different sized progress. For Default progress, No size class needed. +
+
+
+
+
+
+ + +
+
+
+
+

Checkboxes

+
+
+
+ + + + + + + + + + + + + +
Basic Checkbox +
+
+ +
+
+
Basic Checkbox
Custom Checkbox +
+ + + + +
+
Custom Checkbox
+
+
+
+
+
+ + +
+
+
+
+

Radio Buttons

+
+
+
+ + + + + + + + + + + + + +
Basic Radio Buttons +
+
+ +
+
+
Basic Radio Buttons
Basic Radio Buttons +
+ + + + +
+
Custom Radio Buttons
+
+
+
+
+
+ + +
+
+
+
+

Select

+
+
+
+ + + + + + + + + + + + + +
Single Select +
+
+ + + +
+
+
Use ng-multiselect-dropdown for basic select control.
Disabled Mode +
+
+ + +
+
+
Select will respond to the disabled attribute on + <select> + elements. You can also initialize Select with + disabled: true to get + the same effect. +
+
+
+
+
+
+ + +
+
+
+
+

Input

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Default Input text +
+ +
+
Standard form controls supported in all example form elements. Form + controls + automatically receives global styling. The .form-group class is the + easiest way to + add some structure to form elements like <input>, <textarea>, + and<select>
Input Font Color +
+ +
+
Input Primary colored Font
Input Border Color +
+ +
+
Input Success Border Color
Input Background Color +
+ +
+
Background Warning Color Input
Default Input with Left Icon +
+
+ +
+ +
+
+
+
Left Icon Default Input
Default Input group +
+
+
+ @ +
+ +
+
+
Add span with .input-group-prepend class before + <input> +
Input group with Switchery +
+
+ + + + + + +
+
+
Add span with .input-group-prepend class before + <input> + text and Add switchery inside. +
+
+
+
+
+
+ + +
+
+
+
+

Badges

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Basic Pills + + + Use the .badge class, followed by .badge-pill + with .badge-secondary + class within element to create default pill.
Pills With Glow effect + + Use the .badge class, followed by .badge-pill with + .badge-glow + class within element to create glow styled pill. +
Pills with Icons + + I dont have text to put hear
Bordered Badges (Pills) + + Use the .badge class, followed by.badge-border + with .badge-success + class within element to create success pill. +
+
+
+
+
+
+ + +
+
+
+
+

Tooltip Triggers

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Hover +
+ +
+
Use triggers="hover" for hover trigger. This is a + default trigger.
Click +
+ +
+
Use triggers="click" for click trigger.
Focus +
+ +
+
Use triggers="focus" for focus trigger.
Manual +
+ +
+
Use triggers="manual" for manual trigger. You can do + show/hide + using js
+
+
+
+
+
+ + +
+
+
+
+

Tags

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Info Label +
Info Label
+
Use the .badge class, followed by.badge-info + class within + element to create info label.
Tags with Icons +
+ + Primary Label +
+
Use the .badge class, followed by.badge-square class for + square + bordered label.
Tags with Only Icons +
+ +
+
Use the .badge class, followed by.round class + for round + warning label.
Bordered Tags +
Danger Label
+
Use the .badge-bordered with class .badge. + Also use .border-COLOR + class to add border and use .COLOR for text color
+
+
+
+
+
+ + +
+
+
+
+

Switch

+
+
+
+ + + + + + + + + + + + + + + + + + +
Basic Switchery Toggle +
+ + + +
+
To set Switchery toggle, add .switchery class to checkbox. +
Small Switchery +
+ + +
+
To set Small Switchery toggle, add .switchery-sm class to + checkbox.
Color Switchery (Danger Switchery) +
+ + +
+
To get Danger Switchery, add .switchery-danger class to + checkbox.
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.spec.ts b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.spec.ts new file mode 100644 index 0000000..28aaea0 --- /dev/null +++ b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TablecomponentsComponent } from './tablecomponents.component'; + +describe('TablecomponentsComponent', () => { + let component: TablecomponentsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TablecomponentsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TablecomponentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.ts b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.ts new file mode 100644 index 0000000..e6013f7 --- /dev/null +++ b/src/app/content/table/boostraptables/tablecomponents/tablecomponents.component.ts @@ -0,0 +1,229 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; + +declare var require: any; +const data: any = require('../../../../../assets/data/datatables/tablecomponent/tablecomponent.json'); + +@Component({ + selector: 'app-tablecomponents', + templateUrl: './tablecomponents.component.html', + styleUrls: ['./tablecomponents.component.css'] +}) +export class TablecomponentsComponent implements OnInit { + + @BlockUI('components') blockUIComponents: NgBlockUI; + @BlockUI('alerts') blockUIAlerts: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + disabled = false; + singleCities = []; + basicSelectedItem = []; + singleDropdownSettings: any = {}; + hideSearchBoxdropdownSettings: any = {}; + closeDropdownSelection = false; + isPrimaryClosed1 = false; + isPrimaryClosed2 = false; + isPrimaryClosed3 = false; + singleSelectedItem = []; + responsiveSelectedItem = []; + singlePlaceholderSelectedItem = []; + disableSelectedItem = []; + hideSearchBox = []; + ShowFilter = false; + limitSelection = false; + multipleCities = []; + multipleSelectedItems = []; + multipleDropdownSettings: any = {}; + multipleLimitDropdownSettings: any = {}; + basicMultiSelect = []; + singleProgrammaticCities = []; + singleProgrammaticSelectedItem = []; + singleProgrammaticDropdownSettings: any = {}; + + multipleProgrammaticSelectedItem = []; + multipleProgrammaticDropdownSettings: any = {}; + + singleCitiesEvents = []; + singleEventsSelectedItem = []; + singleEventsDropdownSettings: any = {}; + + multipleCitiesEvents = []; + multipleEventsSelectedItem = []; + multipleEventsDropdownSettings: any = {}; + + loadingArray = []; + loadingArraySelectedItem = []; + loadingArrayDropdownSettings: any = {}; + + public breadcrumb: any; + + constructor() { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Table components', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Table components', + 'isLink': false + } + ] + }; + this.singleCities = data ['Cities']; + this.singleDropdownSettings = { + singleSelection: true, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + allowSearchFilter: true, + closeDropDownOnSelection: true + }; + this.hideSearchBoxdropdownSettings = { + singleSelection: true, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + allowSearchFilter: false, + closeDropDownOnSelection: true + }; + this.multipleCities = data['Cities']; + this.basicMultiSelect = data['Select']; + this.multipleDropdownSettings = { + singleSelection: false, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + itemsShowLimit: 3, + allowSearchFilter: true + }; + this.multipleLimitDropdownSettings = { + singleSelection: false, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + itemsShowLimit: 3, + limitSelection: 2, + allowSearchFilter: true + }; + + this.singleProgrammaticCities = data['Cities']; + + this.singleProgrammaticSelectedItem = [{ item_id: 1, item_text: 'Alaska' }]; + + this.singleProgrammaticDropdownSettings = { + singleSelection: true, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + itemsShowLimit: 3, + allowSearchFilter: true + }; + + this.multipleProgrammaticDropdownSettings = { + singleSelection: false, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + itemsShowLimit: 3, + allowSearchFilter: true, + clearSearchFilter: true + }; + + this.singleCitiesEvents = data['Cities']; + + this.singleEventsSelectedItem = [{ item_id: 2, item_text: 'California' }]; + + this.singleEventsDropdownSettings = { + singleSelection: true, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + allowSearchFilter: true, + closeDropDownOnSelection: true, + }; + + this.multipleCitiesEvents = data['Cities']; + this.multipleEventsSelectedItem = [{ item_id: 2, item_text: 'California' }, { item_id: 3, item_text: 'Colorado' }]; + + this.multipleEventsDropdownSettings = { + singleSelection: false, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + allowSearchFilter: true, + }; + + this.loadingArray = data['Select']; + this.loadingArraySelectedItem = this.loadingArray; + + this.loadingArrayDropdownSettings = { + singleSelection: true, + idField: 'item_id', + textField: 'item_text', + selectAllText: 'Select All', + unSelectAllText: 'UnSelect All', + itemsShowLimit: 3, + allowSearchFilter: true, + closeDropDownOnSelection: true + }; + } + + onItemSelect(item: any) { + console.log('onItemSelect', item); + } + onSelectAll(items: any) { + console.log('onSelectAll', items); + } + onSingleEventsItemSelect(item: any) { + console.log('onSingleEventsItemSelect', item); + window.alert('Select Event fired.'); + window.alert('Change Event fired.'); + } + onSingleEventsItemsClose() { + console.log('onSingleEventsItemClose'); + window.alert('Close Event fired.'); + } + onMultipleEventsItemsClose() { + console.log('onMultipleEventsItemsClose'); + window.alert('Close Event fired.'); + } + + reloadComponents() { + this.blockUIComponents.start('Loading..'); + + setTimeout(() => { + this.blockUIComponents.stop(); + }, 2500); + } + + reloadAlerts() { + this.blockUIAlerts.start('Loading..'); + + setTimeout(() => { + this.blockUIAlerts.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/boostraptables/tablesizing/tablesizing.component.css b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/table/boostraptables/tablesizing/tablesizing.component.html b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.html new file mode 100644 index 0000000..a3ec429 --- /dev/null +++ b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.html @@ -0,0 +1,210 @@ +
+
+
+ +
+
+ +
+
+
+
+

Extra Large table

+
+
+
+

Example of Extra large table, Add .table-xl class to the + .table to create a table with extra large spacing. Extra larger table all rows have + 1.25rem height.

+
+ +
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+
+ + + +
+
+
+
+

Large table

+
+
+
+

Example of large table, Add .table-lg class to the .table + to create a table with large spacing. Larger table all rows have 0.9rem height.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+ + +
+
+
+
+

Default table

+
+
+
+

Example of large table, Add .table-lg class to the .table + to create a table with large spacing. Larger table all rows have 0.9rem height.

+
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+
+
+
+
+ + +
+
+
+
+

Small table

+
+
+
+

Example of small table, Add .table-sm class to the .table + to create a table with small spacing. Small table all rows have 0.6rem height.

+
+ +
+
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ +
+
+
+
+
+ + + +
+
+
+
+

Extra Small table

+
+
+
+

Example of extra small table, Add .table-xs class to the + .table to create a table with extra small spacing. Extra small table all rows have + 0.4rem height.

+
+ + +
+ + + + + + + + + + + + + + + + + +
#FirstnameLastnameUsername
{{ i + 1 }}{{ country.firstname }} {{ country.lastname }}{{ country.username }}
+
+ + +
+
+
+
+
+
+
+ + diff --git a/src/app/content/table/boostraptables/tablesizing/tablesizing.component.spec.ts b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.spec.ts new file mode 100644 index 0000000..8991268 --- /dev/null +++ b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TablesizingComponent } from './tablesizing.component'; + +describe('TablesizingComponent', () => { + let component: TablesizingComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TablesizingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TablesizingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/tablesizing/tablesizing.component.ts b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.ts new file mode 100644 index 0000000..8d428cb --- /dev/null +++ b/src/app/content/table/boostraptables/tablesizing/tablesizing.component.ts @@ -0,0 +1,80 @@ +import { Component, OnInit } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-tablesizing', + templateUrl: './tablesizing.component.html', + styleUrls: ['./tablesizing.component.css'] +}) +export class TablesizingComponent implements OnInit { + TablesizingData: any; + countries: any; + @BlockUI('extraLargeTable') blockUIExtraLargeTable: NgBlockUI; + @BlockUI('largeTable') blockUILargeTable: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + loadingIndicator: true; + public breadcrumb: any; + + constructor(private tableApiservice: TableApiService) { + } + timeout: any; + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Tables Sizing', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Tables Sizing', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableBorderData().subscribe(Response => { + this.TablesizingData = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.countries = this.TablesizingData.rows; + } + + onPage(event) { + clearTimeout(this.timeout); + this.timeout = setTimeout(() => { + console.log('paged!', event); + }, 100); + } + + reloadExtraLargeTable() { + this.blockUIExtraLargeTable.start('Loading..'); + + setTimeout(() => { + this.blockUIExtraLargeTable.stop(); + }, 2500); + } + + reloadLargeTable() { + this.blockUILargeTable.start('Loading..'); + + setTimeout(() => { + this.blockUILargeTable.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/boostraptables/tablestyling/tablestyling.component.css b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/table/boostraptables/tablestyling/tablestyling.component.html b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.html new file mode 100644 index 0000000..a66545c --- /dev/null +++ b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.html @@ -0,0 +1,398 @@ +
+
+
+ +
+
+ +
+
+
+
+

Default styling

+
+
+
+

Example of a table with bootstrap default styling. By default any + table with + .table class has transparent background color.

+
+ + +
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+
+
+ +
+
+ + +
+
+
+
+

Table header styling

+
+
+
+

Example of a custom table header styling. Table header + supports default contextual and custom background colors change to use bootstrap class. + Add .bg-* class to the header row. All border and text colors + will be + automatically adjusted.

+
+
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+
+

Apart form bootstrap color options you can also use Modern Admin color palette + options, To set + the selected bg color lighten use .bg-* where * is the + value of your + selected color from palette, and with that use .bg-lighten-* or + .bg-darken-* + class where * is the value between '1-5' of your selected + lighten/darken color + from modern color palette. So for color lighten 4 bg class will be + .bg-lighten-4.

+
+ + +
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+
+
+
+
+ + +
+
+
+
+

Table footer styling

+
+
+
+

Example of a custom table footer styling. Table footer + supports + default contextual and custom background colors to use bootstrap class . + Add .bg-* class to the header row. All border and text colors + will be automatically adjusted.

+
+
+ + + + + + + + + + + + + + + + + + +
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
FirstnameLastnameEmailPassword
+
+
+

Apart form bootstrap color options you can also use Modern Admin color palette + options, To set + the selected bg color lighten use .bg-* where * is the + value of your + selected color from palette, and with that use .bg-lighten-* or + .bg-darken-* + class where * is the value between '1-5' of your selected + lighten/darken color + from modern color palette. So for color lighten 4 bg class will be + .bg-lighten-4.

+
+ + +
+ + + + + + + + + + + + + + + + + + +
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
FirstnameLastnameEmailPassword
+
+
+
+
+
+
+
+
+
+

Custom table formatting

+
+
+
+

Example of a table with custom formatting color.

+
+
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{country.password}}
+
+

Header and footer formatting

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
FirstnameLastnameEmailPassword
+
+
+

Modern Admin color palette options can be use also for the custom table formatting, + To set the + selected bg color lighten + use .bg-* where * is the value + of your + selected color from palette, and with that use .bg-lighten-* or + .bg-darken-* + class where * is the value between '1-5' of your selected + lighten/darken color + from modern color palette. So for color lighten 4 bg class will be + .bg-lighten-4.

+
+
+
+
+ + + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+

Header and footer formatting

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
FirstnameLastnameEmailPassword
+
+
+
+
+
+
+
+
+
+

Table formatting options

+
+
+
+

Table with custom formatting color supports all default table layouts and options. + In this example our table displays all possible borders, striped rows and changes background color on + row hover. +

+
+
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+
+

Modern Admin color palette options can be use also for the custom table formatting, + To set the + selected bg color lighten + use .bg-* where * is the value + of your + selected color from palette, and with that use .bg-lighten-* or + .bg-darken-* + class where * is the value between '1-5' of your selected + lighten/darken color + from modern color palette. So for color lighten 4 bg class will be + .bg-lighten-4.

+
+
+ + + + + + + + + + + + + + + + + +
FirstnameLastnameEmailPassword
{{ country.firstname }} {{ country.lastname }}{{ country.email }}{{ country.password }}
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/table/boostraptables/tablestyling/tablestyling.component.spec.ts b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.spec.ts new file mode 100644 index 0000000..bc5a16b --- /dev/null +++ b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { TablestylingComponent } from './tablestyling.component'; + +describe('TablestylingComponent', () => { + let component: TablestylingComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TablestylingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TablestylingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/boostraptables/tablestyling/tablestyling.component.ts b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.ts new file mode 100644 index 0000000..1f8a28a --- /dev/null +++ b/src/app/content/table/boostraptables/tablestyling/tablestyling.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-tablestyling', + templateUrl: './tablestyling.component.html', + styleUrls: ['./tablestyling.component.css'] +}) +export class TablestylingComponent implements OnInit { + TableStylingData: any; + countries: any; + @ViewChild('myTable', { static: true }) table: any; + @BlockUI('defaultStyling') blockUIDefaultStyling: NgBlockUI; + @BlockUI('tableHeaderStyling') blockUITableHeaderStyling: NgBlockUI; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + + loadingIndicator: true; + timeout: any; + public breadcrumb: any; + + constructor(private tableApiservice: TableApiService) { + } + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Tables styling', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'Tables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Tables styling', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableStylingData().subscribe(Response => { + this.TableStylingData = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.countries = this.TableStylingData.rows; + } + + onPage(event) { + clearTimeout(this.timeout); + this.timeout = setTimeout(() => { + console.log('paged!', event); + }, 100); + } + + toggleExpandRow(row) { + console.log('Toggled Expand Row!', row); + this.table.rowDetail.toggleExpandRow(row); + } + + onDetailToggle(event) { + console.log('Detail Toggled', event); + } + + reloadDefaultStyling() { + this.blockUIDefaultStyling.start('Loading..'); + + setTimeout(() => { + this.blockUIDefaultStyling.stop(); + }, 2500); + } + + reloadTableHeaderStyling() { + this.blockUITableHeaderStyling.start('Loading..'); + + setTimeout(() => { + this.blockUITableHeaderStyling.stop(); + }, 2500); + } + +} diff --git a/src/app/content/table/datatables/api/api.component.css b/src/app/content/table/datatables/api/api.component.css new file mode 100644 index 0000000..bd893c0 --- /dev/null +++ b/src/app/content/table/datatables/api/api.component.css @@ -0,0 +1,190 @@ +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} +:host ::ng-deep .ngx-datatable .datatable-row-center, .ngx-datatable .datatable-row-group, .ngx-datatable .datatable-row-right { + position: relative; + height: 50px !important; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; + overflow: inherit; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .ngx-datatable .datatable-footer .selected-count .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} + diff --git a/src/app/content/table/datatables/api/api.component.html b/src/app/content/table/datatables/api/api.component.html new file mode 100644 index 0000000..87a3919 --- /dev/null +++ b/src/app/content/table/datatables/api/api.component.html @@ -0,0 +1,264 @@ +
+
+
+ +
+
+ +
+
+
+ + + Add rows + + +

New rows can be added to a DataTable very easily using the + (addFieldValue()) function. +

+ +
+ + + + {{element.id}} + + + + + + {{element.name}} + + + + + + + {{element.position}} + + + + + + + {{element.office}} + + + + + + {{element.age}} + + + + + {{element.salary}} + + + + + {{element.startdate}} + + + + +
+
+
+
+
+
+ +
+
+
+ + + Row selection and deletion (single row) + + +

This example shows a modification of the multiple row selection + example, where just a single can now be selected. This is done simply by checking to + see if the row already has a selected class or not, and if so removing it, if not + then the class is removed from any other row in the table which does have it and + applied to the row to be selected. +

+
+ +
+ + + + + + + + + + + + + + + + + + + {{element.id}} + + + + + + {{element.name}} + + + + + + + {{element.position}} + + + + + + + {{element.office}} + + + + + + {{element.age}} + + + + + {{element.salary}} + + + + + {{element.startdate}} + + + +
+
+
+
+
+
+ +
+
+
+
+
+

Row Editing Content

+
+
+
+

Double click on any content to edit that section.

+
+
+ + + + + + + {{value}} + + + + + + + + {{value}} + + + + + + + + {{value}} + + + + + + + + {{value}} + + + + + + + + {{value}} + + + + + + + + {{value}} + + + + + + +
+
+
+
+
+
+
+
+
+
+ + diff --git a/src/app/content/table/datatables/api/api.component.spec.ts b/src/app/content/table/datatables/api/api.component.spec.ts new file mode 100644 index 0000000..024f710 --- /dev/null +++ b/src/app/content/table/datatables/api/api.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ApiComponent } from './api.component'; + +describe('ApiComponent', () => { + let component: ApiComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ApiComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ApiComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatables/api/api.component.ts b/src/app/content/table/datatables/api/api.component.ts new file mode 100644 index 0000000..27f00e5 --- /dev/null +++ b/src/app/content/table/datatables/api/api.component.ts @@ -0,0 +1,208 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarDirective, PerfectScrollbarComponent, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-api', + templateUrl: './api.component.html', + styleUrls: ['./api.component.css'] +}) +export class ApiComponent implements OnInit { +data: any; + + @BlockUI('addRows') blockUIAddRows: NgBlockUI; + @BlockUI('rowSelection') blockUIRowSelection: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { wheelPropagation: true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + temp = []; + selected = []; + id: number; + loadingIndicator: true; + rows: any; + editing = {}; + row: any; + public breadcrumb: any; + + constructor(private tableApiservice: TableApiService) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'API DataTable', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'API DataTable', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableApiData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.rows = this.data.rows; + this.row = this.data.row; + } + updateFiltername(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + updateFilterposition(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.position.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + updateFilteroffice(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.office.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + + updateFilterage(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.age.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + updateFiltersalary(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.salary.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + updateFilterstartdate(event) { + const val = event.target.value.toLowerCase(); + + // filter our data + const temp = this.rows.filter(function (d) { + return d.startdate.toLowerCase().indexOf(val) !== -1 || !val; + }); + + + this.rows = temp; + + } + + // eslint-disable-next-line @typescript-eslint/member-ordering + private newAttribute = { 'id': 15, name: 'Mark', position: 'Otto', office: '@mdo', age: '31', salary: '12000', startdate: '16/05/2017' }; + + addFieldValue() { + this.rows.push(this.newAttribute); + this.rows = [...this.rows]; + } + deleteFieldValue(index) { + this.rows.splice(index, 1); + } + deleteRow(id) { + let i = 0; + for (const row of this.rows) { + if (row.id === id) { + break; + } + i++; + } + const temp = [...this.rows]; + temp.splice(i, 1); + this.rows = temp; + } + updateValue(event, cell, rowIndex) { + + this.editing[rowIndex + '-' + cell] = false; + this.row[rowIndex][cell] = event.target.value; + const temp = [...this.row]; + this.row = temp; + } + + reloadAddRows() { + this.blockUIAddRows.start('Loading..'); + + setTimeout(() => { + this.blockUIAddRows.stop(); + }, 2500); + } + onSelect({ selected }) { + this.selected.splice(0, this.selected.length); + this.selected.push(...selected); + } + reloadRowSelection() { + this.blockUIRowSelection.start('Loading..'); + + setTimeout(() => { + this.blockUIRowSelection.stop(); + }, 2500); + } + deleteCheckedRow() { + let index = 0; + const removedIndex = []; + const temp = [...this.rows]; + for (const row of temp) { + for (const selectedRow of this.selected) { + if (row.id === selectedRow.id) { + removedIndex.push(index); + } + } + index++; + } + + for (let i = removedIndex.length - 1; i >= 0; i--) { + temp.splice(removedIndex[i], 1); + } + this.rows = temp; + this.selected = []; + } +} diff --git a/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.css b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.css new file mode 100644 index 0000000..bf4874b --- /dev/null +++ b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.css @@ -0,0 +1,256 @@ +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} + +:host ::ng-deep .table-bordered { + border: 2px solid #e3ebf3; +} + +:host ::ng-deep .filter { + padding: 8px !important; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; + overflow: inherit; +} + +:host ::ng-deep .dataTables_filter { + text-align: right; +} + +:host ::ng-deep .datatable-icon-down:after { + content: "\2193"; + font-size: large; +} + +:host ::ng-deep .span .sort-btn .sort-desc .datatable-icon-down:before { + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +:host ::ng-deep .span .sort-btn .sort-asc .datatable-icon-up:before { + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +:host ::ng-deep .row { + display: flex !important; + flex-wrap: wrap !important; + margin-right: -15px; + margin-left: -15px; +} + +:host ::ng-deep .ngx-datatable { + display: block; + overflow: hidden; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + position: relative; + +} + +:host ::ng-deep .ngx-datatable.bootstrap { + box-shadow: none; + font-size: 1rem; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit +} + + +/* :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager { + margin: 0px !important; +} */ + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +.datatable-scroll { + width: 100% !important; +} +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} +:host ::ng-deep .ngx-datatable .datatable-footer .selected-count .datatable-pager { + flex: 0 0 0%; + } + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} + +:host ::ng-deep .empty-row { + padding-left: 1rem !important; +} diff --git a/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.html b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.html new file mode 100644 index 0000000..aa058d4 --- /dev/null +++ b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.html @@ -0,0 +1,252 @@ +
+
+
+ +
+
+ +
+
+
+ + + Zero configuration + + +
+

DataTables has sorting and most features enabled by default.

+ + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + +
+
+
+
+
+
+ + +
+
+
+ + + Default ordering + + +
+

Lets say you want to sort column descending and + ascending order. You want to search by the name column.

+
+
+
+
Search: +
+
+
+
+
+ + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + +
+
+
+
+
+
+
+ + +
+
+
+
+
+

DOM positioning

+
+
+
+

When customizing DataTables for your own usage, you might find + that the default position of the feature elements (filter input etc) is not + quite to your liking. To address this issue DataTables takes inspiration from + the CSS 3 Advanced Layout Module and provides the dom initialization parameter + which can be set to indicate where you wish particular features to appear in the + DOM. You can also specify div wrapping containers (with an id and / or class) to + provide complete layout flexibility.

+ +
+ + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + +
+
+
+
+
+
Search:
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Scroll - horizontal and vertical

+
+
+
+

Scroll - horizontal and vertical DataTables has the ability to + show tables with horizontal scrolling, which is very useful for when you have a + wide table, but want to constrain it to a limited horizontal display area.

+ +
+ + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + +
+
+
+
+
+
+
+ + +
+
+
+ diff --git a/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.spec.ts b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.spec.ts new file mode 100644 index 0000000..48abc41 --- /dev/null +++ b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BasicinitialisationComponent } from './basicinitialisation.component'; + +describe('BasicinitialisationComponent', () => { + let component: BasicinitialisationComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ BasicinitialisationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicinitialisationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.ts b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.ts new file mode 100644 index 0000000..ad02248 --- /dev/null +++ b/src/app/content/table/datatables/basicinitialisation/basicinitialisation.component.ts @@ -0,0 +1,135 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { DatatableComponent } from '@swimlane/ngx-datatable'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarComponent, PerfectScrollbarDirective, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-basicinitialisation', + templateUrl: './basicinitialisation.component.html', + styleUrls: ['./basicinitialisation.component.css'] +}) +export class BasicinitialisationComponent implements OnInit { + + @BlockUI('zeroConfiguration') blockUIZeroConfiguration: NgBlockUI; + @BlockUI('defaultOrdering') blockUIDefaultOrdering: NgBlockUI; + + public configScroll: PerfectScrollbarConfigInterface = { suppressScrollY : false, wheelPropagation: false }; + public config: PerfectScrollbarConfigInterface = { suppressScrollY : true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + temp = []; + @ViewChild(DatatableComponent, { static: true }) table: DatatableComponent; + constructor(private tableApiservice: TableApiService) { + + } + data: any; + rows: any = []; + defaultrows: any; + DOMrows: any; + Scrollrows: any; + public breadcrumb: any; + temp2 = this.rows; + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Basic DataTables', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Basic DataTables', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableInitialisationData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.rows = this.data.rows; + this.defaultrows = this.data.defaultrows; + this.DOMrows = this.data.DOMrows; + this.Scrollrows = this.data.Scrollrows; + } + + updateFilter(event) { + const val = event.target.value.toLowerCase(); + this.rows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.rows]; + // filter our data + const temp = this.rows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.rows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + + updatedefaultFilter(event) { + const val = event.target.value.toLowerCase(); + this.defaultrows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.defaultrows]; + // filter our data + const temp = this.defaultrows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.defaultrows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + + updateDOMFilter(event) { + const val = event.target.value.toLowerCase(); + this.DOMrows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.DOMrows]; + // filter our data + const temp = this.DOMrows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.DOMrows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + + reloadZeroConfiguration() { + this.blockUIZeroConfiguration.start('Loading..'); + + setTimeout(() => { + this.blockUIZeroConfiguration.stop(); + }, 2500); + } + + reloadDefaultOrdering() { + this.blockUIDefaultOrdering.start('Loading..'); + + setTimeout(() => { + this.blockUIDefaultOrdering.stop(); + }, 2500); + } + +} + + diff --git a/src/app/content/table/datatables/datatables.module.spec.ts b/src/app/content/table/datatables/datatables.module.spec.ts new file mode 100644 index 0000000..761e2f6 --- /dev/null +++ b/src/app/content/table/datatables/datatables.module.spec.ts @@ -0,0 +1,13 @@ +import { DatatablesModule } from './datatables.module'; + +describe('DatatablesModule', () => { + let datatablesModule: DatatablesModule; + + beforeEach(() => { + datatablesModule = new DatatablesModule(); + }); + + it('should create an instance', () => { + expect(datatablesModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatables/datatables.module.ts b/src/app/content/table/datatables/datatables.module.ts new file mode 100644 index 0000000..33eb263 --- /dev/null +++ b/src/app/content/table/datatables/datatables.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { BasicinitialisationComponent } from './basicinitialisation/basicinitialisation.component'; +import { RouterModule } from '@angular/router'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; + +import { StylingComponent } from './styling/styling.component'; +import { ApiComponent } from './api/api.component'; +import { NgSelectModule } from '@ng-select/ng-select'; +import { FormsModule } from '@angular/forms'; +import { ClipboardModule } from 'ngx-clipboard'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + BreadcrumbModule, + NgSelectModule, + FormsModule, + ClipboardModule, + PerfectScrollbarModule, + NgxDatatableModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'basicinitialisation', + component: BasicinitialisationComponent + }, + { + path: 'styling', + component: StylingComponent + }, + + { + path: 'api', + component: ApiComponent + }, + ]), + ], + declarations: [BasicinitialisationComponent, StylingComponent, ApiComponent], + exports: [RouterModule] +}) +export class DatatablesModule { } diff --git a/src/app/content/table/datatables/styling/styling.component.css b/src/app/content/table/datatables/styling/styling.component.css new file mode 100644 index 0000000..b9696e9 --- /dev/null +++ b/src/app/content/table/datatables/styling/styling.component.css @@ -0,0 +1,251 @@ +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} + +:host ::ng-deep .table-bordered { + border: 2px solid #e3ebf3; +} + +:host ::ng-deep .no-style { + border-top: 2px solid #e3ebf3; +} +:host ::ng-deep .filter { + margin-left: 4px; +} + +:host ::ng-deep .ngx-datatable .datatable-header { + display: block; + overflow: inherit; + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; + content: "\203A"; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; + content: "\00BB"; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; + content: "\2039"; +} + +:host ::ng-deep .datatable-icon-prev:before { + font-family: 'icofont'; + font-style: normal; + content: "\00AB"; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-icon-left:before { + + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-icon-prev:before { + + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-icon-right:before { + + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-icon-skip:before { + + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: small; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; + overflow: inherit; +} + +:host ::ng-deep .datatable-footer .datatable-pager .pager li a { + width: 30px !important; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + -webkit-box-flex: 1; + -ms-flex: 1 1 80%; + flex: 1 1 97%; + text-align: right; +} + +:host ::ng-deep .datatable-icon-down:after { + content: "\2193"; + font-size: large; +} + +:host ::ng-deep .dataTables_filter { + text-align: right; +} + + +:host ::ng-deep .ngx-datatable.no-style .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit; + margin-bottom: 10px; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} + +:host ::ng-deep .empty-row { + padding-left: 1rem !important; +} diff --git a/src/app/content/table/datatables/styling/styling.component.html b/src/app/content/table/datatables/styling/styling.component.html new file mode 100644 index 0000000..b9c02d7 --- /dev/null +++ b/src/app/content/table/datatables/styling/styling.component.html @@ -0,0 +1,170 @@ +
+
+
+ +
+
+ +
+
+
+ + + Base style + + +
+

The DataTables default style file has a number of features which can be enabled + based on the + class name of the table.

+
+
+
+
Search:
+
+
+
+
+ + + + + {{row.name}} + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ + + +
+
+
+ + + No styling classes + + +

This example shows the base DataTables style file being used, with none of the + additional + feature style classes being used.

+
+
+
+
Search:
+
+
+
+
+ + + + {{row.name}} + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + +
+
+
+ + + Base style - compact + + +

The material class is used to reduce the amount of white-space the default styling for the + DataTable uses, + increasing the information density on screen, as shown below.

+
+
+
+
Search :
+
+
+
+
+ + + + + {{row.name}} + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + +
+
+
+ diff --git a/src/app/content/table/datatables/styling/styling.component.spec.ts b/src/app/content/table/datatables/styling/styling.component.spec.ts new file mode 100644 index 0000000..62b86a4 --- /dev/null +++ b/src/app/content/table/datatables/styling/styling.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { StylingComponent } from './styling.component'; + +describe('StylingComponent', () => { + let component: StylingComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ StylingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StylingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatables/styling/styling.component.ts b/src/app/content/table/datatables/styling/styling.component.ts new file mode 100644 index 0000000..f3a3fda --- /dev/null +++ b/src/app/content/table/datatables/styling/styling.component.ts @@ -0,0 +1,127 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { DatatableComponent } from '@swimlane/ngx-datatable'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarComponent, PerfectScrollbarDirective, PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-styling', + templateUrl: './styling.component.html', + styleUrls: ['./styling.component.css'] +}) +export class StylingComponent implements OnInit { + + @BlockUI('baseStyle') blockUIBaseStyle: NgBlockUI; + @BlockUI('noStylingClasses') blockUINoStylingClasses: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { suppressScrollY : true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + temp = []; + + @ViewChild(DatatableComponent, { static: true }) table: DatatableComponent; + + constructor(private tableApiservice: TableApiService) { } + public breadcrumb: any; + data: any; + rows: any = []; + stylerows: any; + baserows: any; + temp2 = this.rows; + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Styling DataTable', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Styling DataTable', + 'isLink': false + } + ] + }; + this.tableApiservice.getStylingData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.rows = this.data.rows; + this.stylerows = this.data.stylerows; + this.baserows = this.data.baserows; + } + updateFilter(event) { + const val = event.target.value.toLowerCase(); + this.rows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.rows]; + // filter our data + const temp = this.rows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.rows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + updatedefaultFilter(event) { + const val = event.target.value.toLowerCase(); + this.stylerows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.stylerows]; + // filter our data + const temp = this.stylerows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.stylerows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + updatecompactFilter(event) { + const val = event.target.value.toLowerCase(); + this.baserows = [...this.temp2]; // and here you have to initialize it with your data + this.temp = [...this.baserows]; + // filter our data + const temp = this.baserows.filter(function (d) { + return d.name.toLowerCase().indexOf(val) !== -1 || !val; + }); + // update the rows + this.baserows = temp; + // Whenever the filter changes, always go back to the first page + this.table.offset = 0; + + } + + reloadBaseStyle() { + this.blockUIBaseStyle.start('Loading..'); + + setTimeout(() => { + this.blockUIBaseStyle.stop(); + }, 2500); + } + + reloadNoStylingClasses() { + this.blockUINoStylingClasses.start('Loading..'); + + setTimeout(() => { + this.blockUINoStylingClasses.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/datatablesext/buttons/buttons.component.css b/src/app/content/table/datatablesext/buttons/buttons.component.css new file mode 100644 index 0000000..628f32d --- /dev/null +++ b/src/app/content/table/datatablesext/buttons/buttons.component.css @@ -0,0 +1,212 @@ +:host ::ng-deep input[type='checkbox'] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} + +:host ::ng-deep .btn:not(:disabled):not(.disabled) { + cursor: pointer; + + margin-right: -3px; +} + +:host ::ng-deep .table-space { + padding: 1.5rem; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} +:host ::ng-deep .orange { + color: orange !important; +} +:host ::ng-deep .Green { + color: green !important; +} +:host ::ng-deep .red { + color: red !important; +} +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} +:host ::ng-deep .empty-row { + padding-left: 1rem !important; +} diff --git a/src/app/content/table/datatablesext/buttons/buttons.component.html b/src/app/content/table/datatablesext/buttons/buttons.component.html new file mode 100644 index 0000000..afedd93 --- /dev/null +++ b/src/app/content/table/datatablesext/buttons/buttons.component.html @@ -0,0 +1,277 @@ +
+
+
+ +
+
+ +
+
+
+ + + Basic initialization + + +
+

Buttons can be initialised very easily though the buttons object which can be + given as an + array of the buttons that you wish to display. +

+
+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+
+
+
+ + + + + +
+
+
+ + + Custom button + + +
+

Fundamentally, each button is described by an object - this object + is read by + Buttons and + displayed as appropriate. There are a number of parameters that Buttons will + automatically look for + in the + button description object such as buttons.buttons.text and buttons.buttons.action + which are the two + fundamental + parameters (button text and the action to take when activated). +

+ +
+
+
+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Class names

+
+
+
+

This example also shows button definition objects being used to + describe buttons. + In this + case we use the buttons.buttons.className option to specify a custom class name for + the button. A + little bit of + CSS is used to style the buttons - the class names and CSS can of course be adjusted + to suit + whatever styling + requirements you have. + RedOrangeGreen +

+ + + +
+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+
+
+ +
+ + +
+
+
+
+
+

Multiple button groups

+
+
+
+

Buttons' ability to have new instances constructed arbitrarily + gives it the + ability to have + multiple button instances created for a single DataTable. This can be useful if you + wish to display + button + groups with different functionality (file export, editing, etc).

+ + +
+ + + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+ + + +
+
+
+
+
+
+ +
+
+
+ + diff --git a/src/app/content/table/datatablesext/buttons/buttons.component.spec.ts b/src/app/content/table/datatablesext/buttons/buttons.component.spec.ts new file mode 100644 index 0000000..062afed --- /dev/null +++ b/src/app/content/table/datatablesext/buttons/buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ButtonsComponent } from './buttons.component'; + +describe('ButtonsComponent', () => { + let component: ButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ButtonsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatablesext/buttons/buttons.component.ts b/src/app/content/table/datatablesext/buttons/buttons.component.ts new file mode 100644 index 0000000..f619557 --- /dev/null +++ b/src/app/content/table/datatablesext/buttons/buttons.component.ts @@ -0,0 +1,89 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-buttons', + templateUrl: './buttons.component.html', + styleUrls: ['./buttons.component.css'] +}) +export class ButtonsComponent implements OnInit { + + @BlockUI('basicInitialization') blockUIBasicInitialization: NgBlockUI; + @BlockUI('customButton') blockUICustomButton: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { suppressScrollY : true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + public breadcrumb: any; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + loadingIndicator: true; + data: any; + rows: any; + + constructor(private tableApiservice: TableApiService) { } + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Button Basic DataTable', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTables', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Button', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableButtonData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.rows = this.data.rows; + } + onSingleEvents() { + window.alert('Button actived'); + + } + onSingleEventsitem() { + window.alert('Button2 actived'); + + } + onSingleEventsitems() { + window.alert('Button3 actived'); + } + + reloadBasicInitialization() { + this.blockUIBasicInitialization.start('Loading..'); + + setTimeout(() => { + this.blockUIBasicInitialization.stop(); + }, 2500); + } + + reloadCustomButton() { + this.blockUICustomButton.start('Loading..'); + + setTimeout(() => { + this.blockUICustomButton.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/datatablesext/datatablesext.module.spec.ts b/src/app/content/table/datatablesext/datatablesext.module.spec.ts new file mode 100644 index 0000000..49b0819 --- /dev/null +++ b/src/app/content/table/datatablesext/datatablesext.module.spec.ts @@ -0,0 +1,13 @@ +import { DatatablesextModule } from './datatablesext.module'; + +describe('DatatablesextModule', () => { + let datatablesextModule: DatatablesextModule; + + beforeEach(() => { + datatablesextModule = new DatatablesextModule(); + }); + + it('should create an instance', () => { + expect(datatablesextModule).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatablesext/datatablesext.module.ts b/src/app/content/table/datatablesext/datatablesext.module.ts new file mode 100644 index 0000000..0400314 --- /dev/null +++ b/src/app/content/table/datatablesext/datatablesext.module.ts @@ -0,0 +1,48 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ButtonsComponent } from './buttons/buttons.component'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { NgbModule} from '@ng-bootstrap/ng-bootstrap'; +import { Html5dataexportComponent } from './html5dataexport/html5dataexport.component'; +import { ClipboardModule } from 'ngx-clipboard'; +import { HiddentableComponent } from './hiddentable/hiddentable.component'; +import { CardModule } from '../../partials/general/card/card.module'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from '../../../_layout/blockui/block-template.component'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + imports: [ + CommonModule, + CardModule, + NgxDatatableModule, + FormsModule, + BreadcrumbModule, + ReactiveFormsModule, + ClipboardModule, + NgbModule, + PerfectScrollbarModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), + RouterModule.forChild([ + { + path: 'buttons', + component: ButtonsComponent + }, + { + path: 'html5dataexport', + component: Html5dataexportComponent + }, + { + path: 'hiddentable', + component: HiddentableComponent + }, + ]), + ], + declarations: [ButtonsComponent, Html5dataexportComponent, HiddentableComponent] +}) +export class DatatablesextModule { } diff --git a/src/app/content/table/datatablesext/hiddentable/hiddentable.component.css b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.css new file mode 100644 index 0000000..7277440 --- /dev/null +++ b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.css @@ -0,0 +1,213 @@ +:host ::ng-deep .ngx-datatable .datatable-header { + display: block; + font-family: inherit; + font-size: medium; + font-weight: bold; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable .datatable-body .datatable-body-row>div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +:host ::ng-deep .ngx-datatable.botstrap .datatable-footer { + display: block; + width: 100%; + border-bottom: black; + border-bottom: 1px solid #E3EBF3; +} + +button, +html [type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + margin-bottom: 10px; +} + +:host ::ng-deep .ngx-datatable .datatable-footer { + display: block; + width: 100%; + border-bottom: black; + border-bottom: 1px solid #E3EBF3; + background: #727e8e; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .page-count { + -webkit-box-flex: 1; + -ms-flex: 1 1 20%; + flex: 1 1 20%; + color: #ededed; + font: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit; + border-top: 1px solid #E3EBF3; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} diff --git a/src/app/content/table/datatablesext/hiddentable/hiddentable.component.html b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.html new file mode 100644 index 0000000..c06b553 --- /dev/null +++ b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.html @@ -0,0 +1,72 @@ +
+
+
+ +
+
+ +
+
+
+ + + Hidden By Default + + +
+ + +
+
+

Click a button to toggle table visibilities

+
+
+

hidden Table

+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+ +
+
+ + +
+
+
+ diff --git a/src/app/content/table/datatablesext/hiddentable/hiddentable.component.spec.ts b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.spec.ts new file mode 100644 index 0000000..06b447d --- /dev/null +++ b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { HiddentableComponent } from './hiddentable.component'; + +describe('HiddentableComponent', () => { + let component: HiddentableComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ HiddentableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HiddentableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatablesext/hiddentable/hiddentable.component.ts b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.ts new file mode 100644 index 0000000..111c762 --- /dev/null +++ b/src/app/content/table/datatablesext/hiddentable/hiddentable.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; + +@Component({ + selector: 'app-hiddentable', + templateUrl: './hiddentable.component.html', + styleUrls: ['./hiddentable.component.css'] +}) +export class HiddentableComponent implements OnInit { + + @BlockUI('hiddenByDefalut') blockUIHiddenByDefalut: NgBlockUI; + public config: PerfectScrollbarConfigInterface = { suppressScrollY : true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + expanded: any = {}; + timeout: any; + public breadcrumb: any; + constructor(private tableApiservice: TableApiService) { } + tab1 = true; + tab2 = false; + data: any; + rows: any; + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'Hidden On Load', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTable', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'Hidden On Load', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableHiddenData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.rows = this.data.rows; + } + + reloadHiddenByDefalut() { + this.blockUIHiddenByDefalut.start('Loading..'); + + setTimeout(() => { + this.blockUIHiddenByDefalut.stop(); + }, 2500); + } +} diff --git a/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.css b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.css new file mode 100644 index 0000000..49567d4 --- /dev/null +++ b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.css @@ -0,0 +1,190 @@ +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { + font-family: inherit; + font-size: medium; + font-weight: bold; + color: #6B6F82; +} + +:host ::ng-deep .btn:not(:disabled):not(.disabled) { + cursor: pointer; + margin-bottom: 10px; + margin-right: -4px; +} + +:host ::ng-deep .datatable-icon-right:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-skip:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + font-family: 'icofont'; + font-style: normal; +} + +:host ::ng-deep .datatable-icon-left:before { + content: "\2039"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-prev:before { + content: "\00AB"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-right:before { + content: "\203A"; + font-size: x-large; +} + +:host ::ng-deep .datatable-icon-skip:before { + content: "\00BB"; + font-size: x-large; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 16px; + line-height: 22px; + padding: 0px 09px; + background-color: #d4d2e7; +} + +:host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { + background-color: #d4d2e7; + font-weight: bold; + font-size: larger; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { + height: 32px; + min-width: 34px; + line-height: 22px; + padding: 0; + border-radius: 3px; + margin: 0 3px; + text-align: center; + vertical-align: top; + padding-top: 3px; + text-decoration: none; + vertical-align: bottom; + color: #7c8091; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 14px; + line-height: 9px; + padding: 0px 08px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], +.ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { + font-size: 0px; + line-height: 22px; + padding: 0px 09px; + background-color: #ffffff; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; + +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, +.ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { + background-color: #545454; + font-weight: bold; + color: white; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { + background: #727e8e; + color: #ededed; + margin-top: -1px; +} + +:host ::ng-deep .ngx-datatable.bootstrap .datatable-header { + font-weight: bold; + height: unset !important; + overflow: inherit +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { + flex: 0 0 0%; +} + +:host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { + display: flex; +} + +:host ::ng-deep .block-ui-wrapper { + background: rgba(255, 249, 249, 0.5) !important; +} + +:host ::ng-deep .ngx-datatable { + display: -webkit-box; +} +:host ::ng-deep .empty-row { + padding-left: 1rem !important; +} diff --git a/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.html b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.html new file mode 100644 index 0000000..1a3edc4 --- /dev/null +++ b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.html @@ -0,0 +1,141 @@ +
+
+
+ +
+
+ +
+
+
+ + + HTML5 export buttons + + +
+
+

The HTML5 export buttons plug-in for Buttons provides three export buttons:

+

CopyHtml5 - Copy to clipboard

+

ExcelHtml5 - Save to XLSX file

+

PdfHtml5 - Save to PDF file

+
+ + + +
+
+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+
+
+
+
+
+
+
+ + + HTML5 print buttons + + + +
+
+

The HTML5 print buttons plug-in for Buttons provides print button:

+

This simple example shows Buttons configured with the print button type only. The print button + will open a new window in the end user's browser and, by default, automatically trigger the print + function allowing the end user to print the table. The window will be closed once the print is + complete, or has been cancelled.

+ +
+ +
+
+ + + + + {{row.name}} + + + + + {{row.position}} + + + + + {{row.office}} + + + + + {{row.age}} + + + + + {{row.salary}} + + + + + {{row.startdate}} + + + +
+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.spec.ts b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.spec.ts new file mode 100644 index 0000000..fdc6b62 --- /dev/null +++ b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { Html5dataexportComponent } from './html5dataexport.component'; + +describe('Html5dataexportComponent', () => { + let component: Html5dataexportComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ Html5dataexportComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Html5dataexportComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.ts b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.ts new file mode 100644 index 0000000..36cc12b --- /dev/null +++ b/src/app/content/table/datatablesext/html5dataexport/html5dataexport.component.ts @@ -0,0 +1,123 @@ +import { Component, OnInit } from '@angular/core'; +import { ElementRef, ViewChild } from '@angular/core'; +import { ClipboardService } from 'ngx-clipboard'; +import { TableexcelService } from '../../../../_services/tableexcel.service'; +import { NgBlockUI, BlockUI } from 'ng-block-ui'; +import { PerfectScrollbarConfigInterface, PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { TableApiService } from 'src/app/_services/table-api.service'; +const { jsPDF } = require("jspdf"); +require('jspdf-autotable'); + +@Component({ + selector: 'app-html5dataexport', + templateUrl: './html5dataexport.component.html', + styleUrls: ['./html5dataexport.component.css'] +}) +export class Html5dataexportComponent implements OnInit { + + @BlockUI('exportButtons') blockUIExportButtons: NgBlockUI; + @BlockUI('printButtons') blockUIPrintButtons: NgBlockUI; + + public config: PerfectScrollbarConfigInterface = { suppressScrollY : true }; + @ViewChild(PerfectScrollbarComponent) componentRef?: PerfectScrollbarComponent; + @ViewChild(PerfectScrollbarDirective, { static: true }) directiveRef?: PerfectScrollbarDirective; + + options = { + close: true, + expand: true, + minimize: true, + reload: true + }; + data: any; + row: any; + text1: string; + textModal: string; + isCopied1: boolean; + isCopied2: boolean; + isCopied3: boolean; + basic = false; + constructor(private _clipboardService: ClipboardService, + private tableApiservice: TableApiService, + private tableexcelService: TableexcelService) { } + + @ViewChild('reportContent') reportContent: ElementRef; + loadingIndicator: true; + public breadcrumb: any; + + ngOnInit() { + this.breadcrumb = { + 'mainlabel': 'HTML 5 Data Export', + 'links': [ + { + 'name': 'Home', + 'isLink': true, + 'link': '/dashboard/sales' + }, + { + 'name': 'DataTable', + 'isLink': true, + 'link': '#' + }, + { + 'name': 'HTML 5 Data Export', + 'isLink': false + } + ] + }; + this.tableApiservice.getTableButtonData().subscribe(Response => { + this.data = Response; + this.getTabledata(); + }); + } + getTabledata() { + this.row = this.data.rows; + } + callServiceToCopy() { + this._clipboardService.copyFromContent(JSON.stringify(this.row)); + } + + onCopyFailure() { + alert('copy fail!'); + } + getExcelData(): void { + this.tableexcelService.exportAsExcelFile(this.row, 'Modern Admin - Clean Angular8+ Dashboard HTML Template'); + } + + getPdfData() { + + const doc = new jsPDF(); + const col = ['Name', 'Position', 'office', 'age', 'salary', 'startdate']; + const rows = []; + + this.row.forEach(element => { + const temp = [element.name, element.position, element.office, element.age, element.salary, element.startdate + ]; + rows.push(temp); + }); + doc.autoTable(col, rows); + doc.save('Test.pdf'); + } + getPrint(printME) { + const printContents = document.getElementById(printME).innerHTML; + const originalContents = document.body.innerHTML; + document.body.innerHTML = printContents; + window.print(); + document.body.innerHTML = originalContents; + } + + reloadExportButtons() { + this.blockUIExportButtons.start('Loading..'); + + setTimeout(() => { + this.blockUIExportButtons.stop(); + }, 2500); + } + + reloadPrintButtons() { + this.blockUIPrintButtons.start('Loading..'); + + setTimeout(() => { + this.blockUIPrintButtons.stop(); + }, 2500); + } +} diff --git a/src/app/login/index.ts b/src/app/login/index.ts new file mode 100644 index 0000000..c0b7b84 --- /dev/null +++ b/src/app/login/index.ts @@ -0,0 +1 @@ +export * from './login.component'; diff --git a/src/app/login/login.component.css b/src/app/login/login.component.css new file mode 100644 index 0000000..c1efa20 --- /dev/null +++ b/src/app/login/login.component.css @@ -0,0 +1,35 @@ +.margin-left-5{ + margin-left: 5px; +} +.terms { + float: right; +} +:host ::ng-deep .content .content-wrapper { + padding: 0!important; +} +:host ::ng-deep .btn-outline-twitter { + border: 1px solid #55acee!important; + color: #55acee !important; +} +:host ::ng-deep .icheckbox_square-blue, .iradio_square-blue { + display: inline-block; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url("../../assets/images/icons/blue.png") no-repeat; + border: none; + cursor: pointer; +} +:host ::ng-deep .icheckbox_square-blue { + background-position: 0 0; +} +:host ::ng-deep .lb-remember { + color: #2b335e; + padding-left: 3px; + width: max-content; +} +:host ::ng-deep .icheckbox_square-blue.checked { + background-position: -48px 0; +} \ No newline at end of file diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html new file mode 100644 index 0000000..cdebbab --- /dev/null +++ b/src/app/login/login.component.html @@ -0,0 +1,95 @@ +
+
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
+ Easily Using
+
+
+ +

+ OR Using Account Details

+
+
+
+ +
+ +
+
+
Username is required
+
+
+
+ +
+ +
+
+
Password is required
+
+ +
+
+
+
+
+ + +
+ + +
+
+ +
+ +
+
+

+ New to Modern ?

+ + +
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts new file mode 100644 index 0000000..e5e1ad3 --- /dev/null +++ b/src/app/login/login.component.ts @@ -0,0 +1,104 @@ +import { Component, OnInit, Renderer2 } from '@angular/core'; +import { Router, ActivatedRoute } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { AuthService } from '../_services/auth.service'; +import { AlertService } from '../_services/alert.service'; + +@Component({ + templateUrl: 'login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent implements OnInit { + loginForm: FormGroup; + loading = false; + submitted = false; + returnUrl: string; + isPageLoaded = false; + + constructor( + private formBuilder: FormBuilder, + private route: ActivatedRoute, + private router: Router, + private alertService: AlertService, + public authService: AuthService, + private renderer: Renderer2 + ) { + this.route.queryParams.subscribe(params => { + this.returnUrl = params['returnUrl']; + }); + + } + + ngOnInit() { + this.loginForm = this.formBuilder.group({ + email: ['john@pixinvent.com', Validators.required], + password: ['password@123', Validators.required], + rememberMe: false + }); + // Remember Me + if (localStorage.getItem('remember')) { + this.renderer.removeClass(document.body, 'bg-full-screen-image'); + localStorage.removeItem('currentLayoutStyle'); + this.router.navigate(['/dashboard/sales']); + } else if (localStorage.getItem('currentUser')) { + // Force logout on login if not remember me + this.authService.doLogout(); + this.isPageLoaded = true; + } else { + this.isPageLoaded = true; + } + } + + // convenience getter for easy access to form fields + get f() { + return this.loginForm.controls; + } + + tryLogin() { + this.submitted = true; + + // stop here if form is invalid + if (this.loginForm.invalid) { + return; + } + const value = { + email: this.f.email.value, + password: this.f.password.value + }; + this.authService.doLogin(value).then( + res => { + if (this.loginForm.controls['rememberMe'] && this.loginForm.controls['rememberMe'].value) { + localStorage.setItem('remember', 'true'); + } else { + localStorage.removeItem('remember'); + } + this.setUserInStorage(res); + localStorage.removeItem('currentLayoutStyle'); + let returnUrl = '/dashboard/sales'; + if (this.returnUrl) { + returnUrl = this.returnUrl; + } + this.router.navigate([returnUrl]); + }, + err => { + this.submitted = false; + this.alertService.error(err.message); + } + ); + } +addCheckbox(event) { + const toggle = document.getElementById('icheckbox'); + if (event.currentTarget.className === 'icheckbox_square-blue') { + this.renderer.addClass(toggle, 'checked'); + } else if (event.currentTarget.className === 'icheckbox_square-blue checked') { + this.renderer.removeClass(toggle, 'checked'); + } +} + setUserInStorage(res) { + if (res.user) { + localStorage.setItem('currentUser', JSON.stringify(res.user)); + } else { + localStorage.setItem('currentUser', JSON.stringify(res)); + } + } +} diff --git a/src/app/login/privacy-policy/privacy-policy.component.css b/src/app/login/privacy-policy/privacy-policy.component.css new file mode 100644 index 0000000..e1741fd --- /dev/null +++ b/src/app/login/privacy-policy/privacy-policy.component.css @@ -0,0 +1,13 @@ +body { + display: block !important; + margin: 8px !important; + color: #141415; + font-size: larger; +} +p { + display: block; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; +} \ No newline at end of file diff --git a/src/app/login/privacy-policy/privacy-policy.component.html b/src/app/login/privacy-policy/privacy-policy.component.html new file mode 100644 index 0000000..a03f3a4 --- /dev/null +++ b/src/app/login/privacy-policy/privacy-policy.component.html @@ -0,0 +1,114 @@ + + + + + + Privacy Policy + + + + Privacy Policy

+ Evolvision Technologies built the Modern Admin app as + a Commercial app. This SERVICE is provided by + Evolvision Technologies and is intended for use as + is. +

+ This page is used to inform visitors regarding our + policies with the collection, use, and disclosure of Personal + Information if anyone decided to use our Service. +

+ If you choose to use our Service, then you agree to + the collection and use of information in relation to this + policy. The Personal Information that we collect is + used for providing and improving the Service. we will not use or share your information with + anyone except as described in this Privacy Policy. +

+ The terms used in this Privacy Policy have the same meanings + as in our Terms and Conditions, which is accessible at + Modern Admin unless otherwise defined in this Privacy Policy. +

Information Collection and Use

+ For a better experience, while using our Service, we + may require you to provide us with certain personally + identifiable information, including but not limited to Email, First name, Last name, Profile picture. The information that + we request will be retained by us and used as described in this privacy policy. +

+ The app does use third party services that may collect + information used to identify you. +

+ Link to privacy policy of third party service providers used + by the app +

Log Data

+ we want to inform you that whenever you + use our Service, in a case of an error in the app + we collect data and information (through third party + products) on your phone called Log Data. This Log Data may + include information such as your device Internet Protocol + (“IP”) address, device name, operating system version, the + configuration of the app when utilizing our Service, + the time and date of your use of the Service, and other + statistics. +

Cookies

+ Cookies are files with a small amount of data that are + commonly used as anonymous unique identifiers. These are sent + to your browser from the websites that you visit and are + stored on your device's internal memory. +

+ This Service does not use these “cookies” explicitly. However, + the app may use third party code and libraries that use + “cookies” to collect information and improve their services. + You have the option to either accept or refuse these cookies + and know when a cookie is being sent to your device. If you + choose to refuse our cookies, you may not be able to use some + portions of this Service. +

Service Providers

+ we may employ third-party companies and + individuals due to the following reasons: +

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

+ we want to inform users of this Service + that these third parties have access to your Personal + Information. The reason is to perform the tasks assigned to + them on our behalf. However, they are obligated not to + disclose or use the information for any other purpose. +

Security

+ we value your trust in providing us your + Personal Information, thus we are striving to use commercially + acceptable means of protecting it. But remember that no method + of transmission over the internet, or method of electronic + storage is 100% secure and reliable, and we cannot + guarantee its absolute security. +

Links to Other Sites

+ This Service may contain links to other sites. If you click on + a third-party link, you will be directed to that site. Note + that these external sites are not operated by us. + Therefore, we strongly advise you to review the + Privacy Policy of these websites. we have + no control over and assume no responsibility for the content, + privacy policies, or practices of any third-party sites or + services. +

Children’s Privacy

+ These Services do not address anyone under the age of 13. + we do not knowingly collect personally + identifiable information from children under 13. In the case + we discover that a child under 13 has provided + us with personal information, we immediately + delete this from our servers. If you are a parent or guardian + and you are aware that your child has provided us with + personal information, please contact us so that + we will be able to do necessary actions. +

Changes to This Privacy Policy

+ we may update our Privacy Policy from + time to time. Thus, you are advised to review this page + periodically for any changes. we will + notify you of any changes by posting the new Privacy Policy on + this page. +

This policy is effective as of 2020-06-01

Contact Us

+ If you have any questions or suggestions about our + Privacy Policy, do not hesitate to contact us at jimit@evolvision.com. +

+ This privacy policy page was created at + privacypolicytemplate.net + and modified/generated by + App Privacy Policy Generator

+ + + diff --git a/src/app/login/privacy-policy/privacy-policy.component.ts b/src/app/login/privacy-policy/privacy-policy.component.ts new file mode 100644 index 0000000..f832fcc --- /dev/null +++ b/src/app/login/privacy-policy/privacy-policy.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-privacy-policy', + templateUrl: './privacy-policy.component.html', + styleUrls: ['./privacy-policy.component.css'] +}) +export class PrivacyPolicyComponent { + + constructor() { } +} diff --git a/src/app/login/terms-condition/terms-condition.component.css b/src/app/login/terms-condition/terms-condition.component.css new file mode 100644 index 0000000..e1741fd --- /dev/null +++ b/src/app/login/terms-condition/terms-condition.component.css @@ -0,0 +1,13 @@ +body { + display: block !important; + margin: 8px !important; + color: #141415; + font-size: larger; +} +p { + display: block; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; +} \ No newline at end of file diff --git a/src/app/login/terms-condition/terms-condition.component.html b/src/app/login/terms-condition/terms-condition.component.html new file mode 100644 index 0000000..36bc256 --- /dev/null +++ b/src/app/login/terms-condition/terms-condition.component.html @@ -0,0 +1,116 @@ + + + + + + Terms & Conditions + + + + Terms & Conditions

+ By downloading or using the app, these terms will + automatically apply to you – you should make sure therefore + that you read them carefully before using the app. You’re not + allowed to copy, or modify the app, any part of the app, or + our trademarks in any way. You’re not allowed to attempt to + extract the source code of the app, and you also shouldn’t try + to translate the app into other languages, or make derivative + versions. The app itself, and all the trade marks, copyright, + database rights and other intellectual property rights related + to it, still belong to Evolvision Technologies. +

+ Evolvision Technologies is committed to ensuring that the app is + as useful and efficient as possible. For that reason, we + reserve the right to make changes to the app or to charge for + its services, at any time and for any reason. We will never + charge you for the app or its services without making it very + clear to you exactly what you’re paying for. +

+ The Modern Admin app stores and processes personal data that + you have provided to us, in order to provide our + Service. It’s your responsibility to keep your phone and + access to the app secure. We therefore recommend that you do + not jailbreak or root your phone, which is the process of + removing software restrictions and limitations imposed by the + official operating system of your device. It could make your + phone vulnerable to malware/viruses/malicious programs, + compromise your phone’s security features and it could mean + that the Modern Admin app won’t work properly or at all. +

+ The app does use third party services that declare their own + Terms and Conditions. +

+ Link to Terms and Conditions of third party service + providers used by the app +

+ You should be aware that there are certain things that + Evolvision Technologies will not take responsibility for. Certain + functions of the app will require the app to have an active + internet connection. The connection can be Wi-Fi, or provided + by your mobile network provider, but Evolvision Technologies + cannot take responsibility for the app not working at full + functionality if you don’t have access to Wi-Fi, and you don’t + have any of your data allowance left. +

+ If you’re using the app outside of an area with Wi-Fi, you + should remember that your terms of the agreement with your + mobile network provider will still apply. As a result, you may + be charged by your mobile provider for the cost of data for + the duration of the connection while accessing the app, or + other third party charges. In using the app, you’re accepting + responsibility for any such charges, including roaming data + charges if you use the app outside of your home territory + (i.e. region or country) without turning off data roaming. If + you are not the bill payer for the device on which you’re + using the app, please be aware that we assume that you have + received permission from the bill payer for using the app. +

+ Along the same lines, Evolvision Technologies cannot always take + responsibility for the way you use the app i.e. You need to + make sure that your device stays charged – if it runs out of + battery and you can’t turn it on to avail the Service, + Evolvision Technologies cannot accept responsibility. +

+ With respect to Evolvision Technologies’s responsibility for your + use of the app, when you’re using the app, it’s important to + bear in mind that although we endeavour to ensure that it is + updated and correct at all times, we do rely on third parties + to provide information to us so that we can make it available + to you. Evolvision Technologies accepts no liability for any + loss, direct or indirect, you experience as a result of + relying wholly on this functionality of the app. +

+ At some point, we may wish to update the app. The app is + currently available on – the requirements for + system(and for any additional systems we + decide to extend the availability of the app to) may change, + and you’ll need to download the updates if you want to keep + using the app. Evolvision Technologies does not promise that it + will always update the app so that it is relevant to you + and/or works with the version that you have + installed on your device. However, you promise to always + accept updates to the application when offered to you, We may + also wish to stop providing the app, and may terminate use of + it at any time without giving notice of termination to you. + Unless we tell you otherwise, upon any termination, (a) the + rights and licenses granted to you in these terms will end; + (b) you must stop using the app, and (if needed) delete it + from your device. +

Changes to This Terms and Conditions

+ we may update our Terms and Conditions + from time to time. Thus, you are advised to review this page + periodically for any changes. we will + notify you of any changes by posting the new Terms and + Conditions on this page. +

+ These terms and conditions are effective as of 2020-06-01 +

Contact Us

+ If you have any questions or suggestions about our + Terms and Conditions, do not hesitate to contact us + at jimit@evolvision.com. +

+ This Terms and Conditions page was generated by + App Privacy Policy Generator

+ + + \ No newline at end of file diff --git a/src/app/login/terms-condition/terms-condition.component.ts b/src/app/login/terms-condition/terms-condition.component.ts new file mode 100644 index 0000000..571b994 --- /dev/null +++ b/src/app/login/terms-condition/terms-condition.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-terms-condition', + templateUrl: './terms-condition.component.html', + styleUrls: ['./terms-condition.component.css'] +}) +export class TermsConditionComponent { + + constructor() { } + +} diff --git a/src/app/register/index.ts b/src/app/register/index.ts new file mode 100644 index 0000000..9c179d3 --- /dev/null +++ b/src/app/register/index.ts @@ -0,0 +1 @@ +export * from './register.component'; diff --git a/src/app/register/register.component.css b/src/app/register/register.component.css new file mode 100644 index 0000000..a72e6c0 --- /dev/null +++ b/src/app/register/register.component.css @@ -0,0 +1,3 @@ +.margin-left-5{ + margin-left: 5px; +} \ No newline at end of file diff --git a/src/app/register/register.component.html b/src/app/register/register.component.html new file mode 100644 index 0000000..1fe116d --- /dev/null +++ b/src/app/register/register.component.html @@ -0,0 +1,89 @@ +
+
+
+
+
+
+
+
+
+
+
+ branding logo +
+
+ Easily Using
+
+
+ +

+ OR Using Email

+
+
+
+ +
+ +
+
+
Username is required
+
+
+
+ +
+ +
+
+
Email is required
+
+
+
+ +
+ +
+
+
Password is required
+
Password must be at least 6 + characters
+
+
+
+
+
+ + +
+
+ +
+ +
+
+
+ Login +
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/register/register.component.ts b/src/app/register/register.component.ts new file mode 100644 index 0000000..4a55699 --- /dev/null +++ b/src/app/register/register.component.ts @@ -0,0 +1,110 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { AuthService } from '../_services/auth.service'; +import { AlertService } from '../_services/alert.service'; +import { UserService } from '../_api/user/user.service'; +import { ToastrService } from 'ngx-toastr'; +import firebase from 'firebase/compat/app'; +import 'firebase/compat/auth'; +import 'firebase/compat/firestore'; + +@Component({ + templateUrl: 'register.component.html', + styleUrls: ['./register.component.css'] +}) +export class RegisterComponent implements OnInit { + registerForm: FormGroup; + loading = false; + submitted = false; + errorMessage = ''; + successMessage = ''; + user = {}; + users = []; + defaultImage = '../assets/images/portrait/small/default.png'; + constructor( + private formBuilder: FormBuilder, + private router: Router, + private alertService: AlertService, + private authService: AuthService, + private userService: UserService) { + } + + ngOnInit() { + this.registerForm = this.formBuilder.group({ + firstName: ['', Validators.required], + email: ['', Validators.required], + password: ['', [Validators.required, Validators.minLength(6)]] + }); + + this.userService.getUsers().subscribe(users => { + this.users = users.map(item => { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + }); + }); + } + + // convenience getter for easy access to form fields + get f() { + return this.registerForm.controls; + } + + tryRegister() { + this.submitted = true; + if (this.registerForm.invalid) { + return; + } + this.loading = true; + + + this.authService.doRegister(this.registerForm.value).then( + res => { + this.user = { + name: this.registerForm.value.firstName, + image: '../../../../assets/images/portrait/small/default.png', + uid: res.user.uid + }; + const currentUser = firebase.auth().currentUser; + currentUser.updateProfile({ + photoURL: this.defaultImage, + displayName: this.registerForm.value.firstName + }).then( user => { + console.log(user, 'user succesfull update'); + }, err => { + console.log(err); + }); + this.loading = false; + console.log(res); + this.errorMessage = ''; + this.alertService.success('Registration successful', true); + if (this.users.length === 0) { + this.userService.createUser(this.user).then(user => { + console.log(user); + }); + } else if (this.users.length !== 0) { + for (let i = 0; i < this.users.length; i++) { + if (this.users[i].uid !== res.user.uid) { + this.userService.createUser(this.user).then(user => { + console.log(user); + }); + break; + } else { + console.log('error'); + } + } + } else { + console.log('error'); + } + this.router.navigate(['/login']); + }, + err => { + console.log(err); + this.loading = false; + this.alertService.error(err.message); + } + ); + } +} diff --git a/src/app/social-signin/social-signin.component.css b/src/app/social-signin/social-signin.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/social-signin/social-signin.component.html b/src/app/social-signin/social-signin.component.html new file mode 100644 index 0000000..48df324 --- /dev/null +++ b/src/app/social-signin/social-signin.component.html @@ -0,0 +1,10 @@ +
+ + + + +
\ No newline at end of file diff --git a/src/app/social-signin/social-signin.component.spec.ts b/src/app/social-signin/social-signin.component.spec.ts new file mode 100644 index 0000000..177a402 --- /dev/null +++ b/src/app/social-signin/social-signin.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { SocialSigninComponent } from './social-signin.component'; + +describe('SocialSigninComponent', () => { + let component: SocialSigninComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [SocialSigninComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SocialSigninComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/social-signin/social-signin.component.ts b/src/app/social-signin/social-signin.component.ts new file mode 100644 index 0000000..de28088 --- /dev/null +++ b/src/app/social-signin/social-signin.component.ts @@ -0,0 +1,135 @@ +import { Component, OnInit } from '@angular/core'; +import { AlertService } from '../_services/alert.service'; +import { AuthService } from '../_services/auth.service'; +import { Router, ActivatedRoute } from '@angular/router'; +import { UserService } from '../_api/user/user.service'; + +@Component({ + selector: 'app-social-signin', + templateUrl: './social-signin.component.html', + styleUrls: ['./social-signin.component.css'] +}) +export class SocialSigninComponent implements OnInit { + private homeURL = '/home'; + private returnUrl: string; + users = []; + user = {}; + constructor( + private route: ActivatedRoute, + private router: Router, + private alertService: AlertService, + public authService: AuthService, + private userService: UserService + ) { + this.route.queryParams.subscribe(params => { + this.returnUrl = params['returnUrl']; + }); + } + + ngOnInit() { + this.userService.getUsers().subscribe(users => { + this.users = users.map(item => { + return { + ...item.payload.doc.data() as {}, + id: item.payload.doc['id'] + }; + }); + }); + } + + tryGoogleLogin() { + this.authService.doGoogleLogin().then( + res => { + this.setUserInStorage(res); + if (this.returnUrl) { + this.homeURL = this.returnUrl; + } + this.router.navigate([this.homeURL]); + }, + err => { + this.alertService.error(err.message); + } + ); + } + + tryFacebookLogin() { + this.authService.doFacebookLogin().then( + res => { + this.setUserInStorage(res); + if (this.returnUrl) { + this.homeURL = this.returnUrl; + } + this.router.navigate([this.homeURL]); + }, + err => { + this.alertService.error(err.message); + } + ); + } + + tryTwitterLogin() { + this.authService.doTwitterLogin().then( + res => { + this.setUserInStorage(res); + if (this.returnUrl) { + this.homeURL = this.returnUrl; + } + this.router.navigate([this.homeURL]); + }, + err => { + console.log(err); + this.alertService.error(err.message); + } + ); + } + + tryGithubLogin() { + this.authService.doGitHubLogin().then( + res => { + this.setUserInStorage(res); + if (this.returnUrl) { + this.homeURL = this.returnUrl; + } + this.router.navigate([this.homeURL]); + }, + err => { + console.log(err); + this.alertService.error(err.message); + } + ); + } + + setUserInStorage(res) { + if (res.user) { + localStorage.setItem('currentUser', JSON.stringify(res.user)); + const loggedInUser = JSON.parse(localStorage.getItem('currentUser')); + this.user = { + name: loggedInUser.displayName, + image: loggedInUser.photoURL, + uid: loggedInUser.uid + }; + if (this.users.length === 0) { + this.userService.createUser(this.user).then(user => { + console.log(user); + }); + } else { + let userExists = false; + for (let i = 0; i < this.users.length; i++) { + const userUid = this.users[i].uid; + if (res.user.uid === userUid) { + userExists = true; + break; + } + } + + if (!userExists) { + this.userService.createUser(this.user).then(user => { + console.log(user); + }); + } + } + } else { + localStorage.setItem('currentUser', JSON.stringify(res)); + } + } +} diff --git a/src/assets/custom/images/logo.png b/src/assets/custom/images/logo.png new file mode 100644 index 0000000..09dbd72 Binary files /dev/null and b/src/assets/custom/images/logo.png differ diff --git a/src/assets/data/advancecard/statistics/chartist.json b/src/assets/data/advancecard/statistics/chartist.json new file mode 100644 index 0000000..45d701c --- /dev/null +++ b/src/assets/data/advancecard/statistics/chartist.json @@ -0,0 +1,209 @@ +{ + "lineArea": { + "labels": [], + "series": [ + [ + 14, + 12, + 4, + 9, + 3, + 6, + 11, + 10, + 13, + 9, + 14, + 11, + 16, + 20, + 15 + ] + ] + }, + "commentslineArea": { + "labels": [], + "series": [ + [ + 14, + 12, + 4, + 9, + 3, + 6, + 11, + 10, + 13, + 9, + 14, + 11, + 16, + 20, + 15 + ] + ] + }, + "viewslineArea": { + "labels": [], + "series": [ + [ + 14, + 12, + 4, + 9, + 3, + 6, + 11, + 10, + 13, + 9, + 14, + 11, + 16, + 20, + 15 + ] + ] + }, + "sparklineArea": { + "labels": [], + "series": [ + [ + 14, + 12, + 4, + 9, + 3, + 6, + 11, + 10, + 13, + 9, + 14, + 11, + 16, + 20, + 15 + ] + ] + }, + "Bar": { + "labels": [], + "series": [ + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ] + ] + }, + "Bar1": { + "labels": [], + "series": [ + [ + [ + 8, + 10 + ], + [ + 12, + 8 + ], + [ + 9, + 14 + ], + [ + 8, + 11 + ], + [ + 10, + 13 + ], + [ + 7, + 11 + ], + [ + 8, + 14 + ], + [ + 9, + 12 + ], + [ + 10, + 11 + ], + [ + 12, + 14 + ], + [ + 8, + 12 + ], + [ + 9, + 12 + ], + [ + 9, + 14 + ] + ] + ] + }, + "feedbacksdonutChart": { + "series": [ + 95, + 5 + ] + }, + "subscribersdonutChart": { + "series": [ + 60, + 40 + ] + }, + "usersdonutChart": { + "series": [ + 78, + 22 + ] + } +} diff --git a/src/assets/data/application/chatcontact.json b/src/assets/data/application/chatcontact.json new file mode 100644 index 0000000..8cebde6 --- /dev/null +++ b/src/assets/data/application/chatcontact.json @@ -0,0 +1,26 @@ +[ + { + "contactHeader" :[{ + "senderName": "Kristopher Candy", + "headerImage": "../../../assets/images/portrait/small/avatar-s-9.png" + }] + }, + { + "contactHeader" :[{ + "senderName": "Jenny Perich", + "headerImage": "../../../assets/images/portrait/small/avatar-s-10.png" + }] + }, + { + "contactHeader" :[{ + "senderName": "Rock Montgomery", + "headerImage": "../../../assets/images/portrait/small/avatar-s-11.png" + }] + }, + { + "contactHeader" :[{ + "senderName": "John Nowak", + "headerImage": "../../../assets/images/portrait/small/avatar-s-12.png" + }] + } +] diff --git a/src/assets/data/application/chats.json b/src/assets/data/application/chats.json new file mode 100644 index 0000000..c888e70 --- /dev/null +++ b/src/assets/data/application/chats.json @@ -0,0 +1,230 @@ +[ + { + "uid": "", + "name": "Elizabeth Elliott", + "image": "../../../assets/images/portrait/small/avatar-s-3.png", + "showMessage": "Okay", + "isSelected": false, + "ChatHistory": [ + { + "message": "How can we help? We're here for you!", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:18AM" + }, + { + "message": "Hey John, I am looking for the best admin template.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-3.png", + "time":"3:19AM" + }, + { + "message": "Could you please help me to find it out?", + "sender": 1, + "senderImage": "", + "time":"3:20AM" + }, + { + "message": "It should be Angular 11+ Bootstrap compatible.", + "sender": 1, + "senderImage": "", + "time":"3:20AM" + }, + { + "message": "Absolutely!", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:22AM" + }, + { + "message": "Modern admin is the responsive Angular 10 bootstrap admin template.", + "sender": 0, + "senderImage": "", + "time":"3:22AM" + }, + { + "message": "Looks clean and fresh UI.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-3.png", + "time":"3:24AM" + }, + { + "message": "It is perfect for my next project.", + "sender": 1, + "senderImage": "", + "time":"3:24AM" + }, + { + "message": "How can I purchase it?", + "sender": 1, + "senderImage": "", + "time":"3:25AM" + }, + { + "message": "Thanks, from ThemeForest.", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:26AM" + }, + { + "message": "I will purchase it for sure.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-3.png", + "time":"3:27AM" + }, + { + "message": "Thanks.", + "sender": 1, + "senderImage": "", + "time":"3:27AM" + }, + { + "message": "It's my pleasure.", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:28AM" + } + ], + "chatHeader" :[{ + "senderName": "Elizabeth Elliott", + "headerImage": "../../../assets/images/portrait/small/avatar-s-3.png" + }] + }, + { + "uid": "", + "name": "Kristopher Candy", + "image": "../../../assets/images/portrait/small/avatar-s-7.png", + + "showMessage": "Thank you", + "isSelected": false, + "ChatHistory": [ + { + "message": "How can we help?", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:35AM" + }, + { + "message": "Hi, I spoke with a representative yesterday.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-7.png", + "time":"3:36AM" + }, + { + "message": "he gave me some steps to fix my problem.", + "sender": 1, + "senderImage": "", + "time":"3:36AM" + }, + { + "message": "but they didn’t help.", + "sender": 1, + "senderImage": "", + "time":"3:37AM" + }, + { + "message": "Ok, I will help you.", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:38AM" + } + ], + + "chatHeader" :[{ + "senderName": "Kristopher Candy", + "headerImage": "../../../assets/images/portrait/small/avatar-s-7.png" + }] + }, + { + "uid": "", + "name": "Sarah Woods", + "image": "../../../assets/images/portrait/small/avatar-s-8.png", + "showMessage": "Hello krish!", + "isSelected": false, + "ChatHistory": [ + { + "message": "How can we help? We're here for you!", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:10AM" + }, + { + "message": "Hey John, I am looking for the best admin template.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-8.png", + "time":"3:12AM" + }, + { + "message": "Could you please help me to find it out?", + "sender": 1, + "senderImage": "", + "time":"3:12AM" + }, + { + "message": "It should be Angular 10 bootstrap compatible.", + "sender": 1, + "senderImage": "", + "time":"3:12AM" + }, + { + "message": "Absolutely!", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:13AM" + }, + { + "message": "Modern admin is the responsive Angular 11+ Bootstrap admin template.", + "sender": 0, + "senderImage": "", + "time":"3:13AM" + }, + { + "message": "Looks clean and fresh UI.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-8.png", + "time":"3:15AM" + }, + { + "message": "It is perfect for my next project.", + "sender": 1, + "senderImage": "", + "time":"3:15AM" + }, + { + "message": "How can I purchase it?", + "sender": 1, + "senderImage": "", + "time":"3:15AM" + }, + { + "message": "Thanks, from ThemeForest.", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:15AM" + }, + { + "message": "I will purchase it for sure.", + "sender": 1, + "senderImage": "../../../assets/images/portrait/small/avatar-s-8.png", + "time":"3:17AM" + }, + { + "message": "Thanks.", + "sender": 1, + "senderImage": "", + "time":"3:17AM" + }, + { + "message": "It's my pleasure.", + "sender": 0, + "senderImage": "../../../assets/images/portrait/small/avatar-s-1.png", + "time":"3:18AM" + } + ], + "chatHeader" :[{ + "senderName": "Sarah Woods", + "headerImage": "../../../assets/images/portrait/small/avatar-s-8.png" + }] + } + + ] diff --git a/src/assets/data/application/email.json b/src/assets/data/application/email.json new file mode 100644 index 0000000..c877ca1 --- /dev/null +++ b/src/assets/data/application/email.json @@ -0,0 +1,274 @@ +{ + "Email": [ + [ + { + "emailId": 1, + "name": "Tonny Momery", + "image": "../../../assets/images/portrait/small/avatar-s-1.png", + "time": "4.14 AM", + "title": "PixInvent, I fount you...", + "message": "I would be good.", + "badge": "Family", + "badgeClass": "danger", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[0]" + } + ], + [ + { + "emailId": 2, + "name": "Louis Wellchay", + "image": "../../../assets/images/portrait/small/avatar-s-2.png", + "time": "2.15 AM", + "title": "Thanks, Lets do it.", + "message": "Can we connect today...", + "badge": "", + "badgeClass": "", + "iconClass": "warning", + "Emailhistory": "emailArray.EmailHistory[1]" + } + ], + [ + { + "emailId": 3, + "name": "Saraha Deepal", + "image": "../../../assets/images/portrait/small/avatar-s-3.png", + "time": "11.14 AM", + "title": "You have new comment", + "message": "Hi, Pixivent lets...", + "badge": "Work", + "badgeClass": "warning", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[2]" + } + ], + [ + { + "emailId": 4, + "name": "Healther Howel", + "image": "../../../assets/images/portrait/small/avatar-s-4.png", + "time": "Today", + "title": "Project ABC Stauts ", + "message": "Hi! Louis Wellchy,.", + "badge": "Private", + "badgeClass": "success", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[3]" + } + ], + [ + { + "emailId": 5, + "name": "Kellya Nelason", + "image": "../../../assets/images/portrait/small/avatar-s-5.png", + "time": "24 Feb", + "title": "Your new UI ", + "message": "Everything looks good", + "badge": "", + "badgeClass": "", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[4]" + } + ], + [ + { + "emailId": 6, + "name": "Healther Howel", + "image": "../../../assets/images/portrait/small/avatar-s-6.png", + "time": "15 March", + "title": "Where are you John?", + "message": "We can party to night", + "badge": "", + "badgeClass": "", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[5]" + } + ], + [ + { + "emailId": 7, + "name": "Healther Howel", + "image": "../../../assets/images/portrait/small/avatar-s-7.png", + "time": "5 Jan", + "title": "Will connect you", + "message": "Hi Kelly!", + "badge": "Friends", + "badgeClass": "primary", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[6]" + } + ], + [ + { + "emailId": 8, + "name": "Healther Howel", + "image": "../../../assets/images/portrait/small/avatar-s-8.png", + "time": "15 March", + "title": "Who you are?", + "message": "I would be good.", + "badge": "", + "badgeClass": "", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[7]" + } + ], + [ + { + "emailId": 9, + "name": "Vincent Nelson", + "image": "../../../assets/images/portrait/small/avatar-s-9.png", + "time": "8:23 AM", + "title": "Okey", + "message": "We can party to night", + "badge": "", + "badgeClass": "", + "iconClass": "blue-grey lighten-3", + "Emailhistory": "emailArray.EmailHistory[8]" + } + ] + ], + "EmailHistory": [ + { + "emailId": 1, + "username": "Elnora Reese ", + "email": "elnora@gmail.com", + "image": "../../../assets/images/portrait/small/avatar-s-1.png", + "date": " 15 Jul 2019, 10:30 ", + "title": "to Lois Jimenez ", + "message": "Greetings!", + "descrition": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.", + "descrition_detail": "It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.", + "sender": "Sincerely yours,", + "iconClass": "favorite warning", + "image_icon1": "../../../assets/images/icons/psd.png", + "file_name1": "uikit-design.psd", + "image_icon2": "../../../assets/images/icons/sketch.png", + "file_name2": "uikit-design.sketch" + }, + { + "emailId": 2, + "username": "Lois Jimenez ", + "email": "lois_jim@gmail.com", + "image": "../../../assets/images/portrait/small/avatar-s-19.png", + "date": " 10 Jul 2019, 10:30 ", + "title": "to Elnora Reese ", + "message": "Greetings!", + "descrition": "Successful businesses have many things in common, today we’ll look at the big ‘R’of recognition and how a digital advertising network may help. Recognition can be illustrated by two individuals entering a crowded room at a party. Both walk to the far side of the room, one of them slips through the crowd easily and unnoticed as they reach the far side.", + "descrition_detail": "Gummies sweet tart marzipan lemon drops donut pie. Chocolate cake gingerbread jujubes gingerbread chocolate cake tart bear claw apple pie jelly-o. Gummies biscuit brownie marshmallow oat cake tootsie roll bear claw topping. Oat cake sesame snaps icing cupcake wafer tiramisu jelly-o sugar plum carrot cake.", + "sender": "Sincerely yours,", + "sender_name": "Envato Design Team", + "iconClass": "favorite", + "image_icon1": "../../../assets/images/icons/psd.png", + "file_name1": "uikit-design.psd", + "image_icon2": "../../../assets/images/icons/sketch.png", + "file_name2": "uikit-design.sketch" + }, + { + "emailId": 3, + "username": "Elnora Reese ", + "email": "elnora@gmail.com", + "image": "../../../assets/images/portrait/small/avatar-s-4.png", + "date": " 15 Jul 2019, 10:30 ", + "title": "to Lois Jimenez ", + "message": "Greetings!", + "descrition": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here',making it look like readable English.", + "descrition_detail": "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.", + "sender": "Sincerely yours,", + "sender_name": "Envato Design Team", + "iconClass": "favorite warning", + "image_icon1": "../../../assets/images/icons/psd.png", + "file_name1": "uikit-design.psd", + "image_icon2": "../../../assets/images/icons/sketch.png", + "file_name2": "uikit-design.sketch" + } + ], + "EmailMenu": [ + { + "Id":1, + "name": "Inbox", + "icon": "ficon feather ft-mail", + "budge": "5", + "budgeClass": "badge badge-success badge-pill badge-round float-right", + "budgeIcon": true, + "isSelected":true + }, + { + "Id":2, + "name": "Sent", + "icon": "ficon feather ft-play", + "budge": "", + "budgeClass": "", + "budgeIcon": false, + "isSelected":false + }, + { + "Id":3, + "name": "Draft", + "icon": "ficon feather ft-edit-1", + "budge": "", + "budgeClass": "", + "budgeIcon": false, + "isSelected":false + }, + { + "Id":4, + "name": "Starred", + "icon": "ficon feather ft-star", + "budge": "", + "budgeClass": "", + "budgeIcon": false, + "isSelected":false + }, + { + "Id":5, + "name": "Spam", + "icon": "ficon feather ft-info", + "budge": "", + "budgeClass": "", + "budgeIcon": false, + "isSelected":false + }, + { + "Id":6, + "name": "Trash", + "icon": "ficon feather ft-trash-2", + "budge": "3", + "budgeClass": "badge badge-warning badge-pill badge-round float-right", + "budgeIcon": true, + "isSelected":false + + } + ], + "EmailLable": [ + { + "Id":1, + "name": "Product", + "isSelected":false, + "bulletClass":"gradient-mint" + }, + { + "Id":2, + "name": "Work", + "isSelected":false, + "bulletClass":"gradient-primary" + }, + { + "Id":3, + "name": "Misc", + "isSelected":false, + "bulletClass":"gradient-warning" + }, + { + "Id":4, + "name": "Family", + "isSelected":false, + "bulletClass":"gradient-danger" + }, + { + "Id":5, + "name": "Design", + "isSelected":false, + "bulletClass":"gradient-info" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/application/kanban.json b/src/assets/data/application/kanban.json new file mode 100644 index 0000000..24c4b7e --- /dev/null +++ b/src/assets/data/application/kanban.json @@ -0,0 +1,66 @@ +[ + { + "name": "Marketing", + "showNewItem": false, + "kanbanId": 1, + "tickets": [{ + "name": "Facebook Campaign 😎","date":"02/06/2021","comment": "1", "attachment": "3", + "image": ["../../../assets/images/portrait/small/avatar-s-11.png", + "../../../assets/images/portrait/small/avatar-s-12.png"],"description":"Campaign","selectedLabel":"Primary" + }, + { + "name": "Type Something", "date":"10/02/2021" ,"showImage":true,"comment": "", "attachment": "", + "bg_image":" ../../../assets/images/banner/banner-21.jpg","description":"","selectedLabel":"Primary" + }, + { + "name": " Social Media Graphics", "date":"03/01/2021" , "comment": "23", "attachment": "4", + "image": ["../../../assets/images/portrait/small/avatar-s-1.png", + "../../../assets/images/portrait/small/avatar-s-2.png"],"description":"Social Media Graphics","selectedLabel":"Primary" + }, + { + "name": " Book newspaper ads online in popular newspapers", "date": "", "comment": "56", "attachment": "2", + "image": ["../../../assets/images/portrait/small/avatar-s-3.png", + "../../../assets/images/portrait/small/avatar-s-4.png"],"description":"Book newspaper ads online in popular newspapers","selectedLabel":"Danger" + }, + { + "name": "Twitter Marketing","date": "", "comment": "", "attachment": "","description":"Twitter Marketing","selectedLabel":"Primary" + } + ] + }, + { + "name": "UI Desiging", + "showNewItem": false, + "kanbanId": 2, + "tickets": [ + { + "name": "Flat UI Kit Design","date": "", "comment": "", "attachment": "","description":"Flat UI Kit Design","selectedLabel":"Primary" + }, + { + "name": "Drag people onto a card to indicate that.", "date": "01/01/2021", "comment": "8","attachment": "", + "image": ["../../../assets/images/portrait/small/avatar-s-5.png", + "../../../assets/images/portrait/small/avatar-s-6.png"],"description":"Drag people onto a card to indicate that","selectedLabel":"Primary" + }, + { + "name": "Application Design","date": "", "comment": "", "attachment": "","description":"Application Design","selectedLabel":"Info" + }, + { + "name": "BBQ Logo Design 😱", "date": "06/01/2021", "comment": "56", "attachment": "2","description":"Application Design","selectedLabel":"Primary" + }] + }, + { + "name": "Develpoing", + "showNewItem": false, + "kanbanId": 3, + "tickets": [{ + "name": "Database Management System (DBMS) is a collection of programs", "date": "01/03/2021", "comment": "10", "image": ["../../../assets/images/portrait/small/avatar-s-7.png", + "../../../assets/images/portrait/small/avatar-s-8.png", "../../../assets/images/portrait/small/avatar-s-9.png"],"description":"Application Design","selectedLabel":"Primary" + }, + { + "name": "Admin Dashboard 🙂", "date": "06/03/2021", "comment": "7","description":"Application Design","selectedLabel":"Danger" + }, + { + "name": "Fix bootstrap progess bar with & issue", "date": "09/03/2021", "image": ["../../../assets/images/portrait/small/avatar-s-10.png", + "../../../assets/images/portrait/small/avatar-s-11.png"],"description":"Application Design","selectedLabel":"Success" + }] + } + ] \ No newline at end of file diff --git a/src/assets/data/application/todo.json b/src/assets/data/application/todo.json new file mode 100644 index 0000000..2014521 --- /dev/null +++ b/src/assets/data/application/todo.json @@ -0,0 +1,62 @@ +[ + { + "title": "Brownie marzipan gingerbread cake muffin", + "description": "Oat cake biscuit liquorice biscuit cookie chocolate marshmallow dragée.", + "badge": "Project", + "type": "warning", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + }, + { + "title": "Ice cream toffee pudding caramels donut ice cream", + "description": "Chocolate bar chupa chups biscuit. Icing pudding cake caramels halvah.", + "badge": "", + "type": "", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + }, + { + "title": "Danish liquorice candy lemon drops gingerbread", + "description": "Jelly beans sesame snaps wafer sweet roll. Biscuit tart pastry lemon drops brownie.", + "badge": "Product", + "type": "secondary", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + }, + { + "title": "Chocolate macaroon oat cake pudding marzipan", + "description": "Sweet tart cake jujubes. Jelly beans carrot cake sugar plum candy dessert.", + "badge": "", + "type": "", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + }, + { + "title": "Toffee biscuit muffin toffee tootsie roll macaroon", + "description": "Tootsie roll caramels tart chupa chups tiramisu lollipop. Tiramisu soufflé bonbon.", + "badge": "UI", + "type": "danger", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + }, + { + "title": "Powder chocolate fruitcake apple pie marshmallow", + "description": "Chocolate cookie tart apple pie cake cupcake gingerbread fruitcake cookie.", + "badge": "", + "type": "", + "completed": false, + "isDeleted": false, + "createdDate": "", + "uid": "" + } +] diff --git a/src/assets/data/application/todo_lable.json b/src/assets/data/application/todo_lable.json new file mode 100644 index 0000000..f282bed --- /dev/null +++ b/src/assets/data/application/todo_lable.json @@ -0,0 +1,54 @@ +{ + "todoFilterList":[ + { + "Id": 1, + "lableName": "Favourite", + "lableIcon": "ficon feather ficon feather ft-star", + "isSelected":true + }, + { + "Id": 2, + "lableName": "Done", + "lableIcon": "ficon feather ft-check", + "isSelected":false + }, + { + "Id": 3, + "lableName": "Deleted", + "lableIcon": "ficon feather ft-trash-2", + "isSelected":false + } + ], + "todoLableList":[ + { + "Id": 1, + "lableName": "Frontend", + "isSelected":false, + "bulletClass":"gradient-primary" + }, + { + "Id": 2, + "lableName": "Backend", + "isSelected":false, + "bulletClass":"gradient-mint" + }, + { + "Id": 3, + "lableName": "Issue", + "isSelected":false, + "bulletClass":"gradient-warning" + }, + { + "Id": 4, + "lableName": "Design", + "isSelected":false, + "bulletClass":"gradient-danger" + }, + { + "Id": 5, + "lableName": "Wireframe", + "isSelected":false, + "bulletClass":"gradient-info" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/boostraptable/basictable.json b/src/assets/data/boostraptable/basictable.json new file mode 100644 index 0000000..97767c2 --- /dev/null +++ b/src/assets/data/boostraptable/basictable.json @@ -0,0 +1,39 @@ +{ + "rows": [ + { + "firstname": "Mark", + "lastname": "Otto", + "username": "@mdo" + }, + { + "firstname": "Jacob", + "lastname": "Thornton", + "username": "@fat" + }, + { + "firstname": "Larry", + "lastname": "The Bird", + "username": "@twitter" + }, + { + "firstname": "Mark", + "lastname": "Otto", + "username": "@mdo" + }, + { + "firstname": "Marry", + "lastname": "Pmo", + "username": "@grhj" + }, + { + "firstname": "Pitar", + "lastname": "Jio", + "username": "@mdt" + }, + { + "firstname": "Jacob", + "lastname": "Thornton", + "username": "@fat" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/boostraptable/ngxboostraptables.json b/src/assets/data/boostraptable/ngxboostraptables.json new file mode 100644 index 0000000..9cebc51 --- /dev/null +++ b/src/assets/data/boostraptable/ngxboostraptables.json @@ -0,0 +1,40 @@ +{ + "EmployeeDetail": [ + { + "id": 1, + "firstname": "Mark", + "lastname": "Otto", + "username": "@mdo" + }, + { + "id": 2, + "firstname": "Jacob", + "lastname": "Thornton", + "username": "@fat" + }, + { + "id": 3, + "firstname": "Larry", + "lastname": "the Bird", + "username": "@twitter" + }, + { + "id": 4, + "firstname": "Fensy", + "lastname": "loir", + "username": "@kort" + }, + { + "id": 5, + "firstname": "Piter", + "lastname": "Pan", + "username": "@google" + }, + { + "id": 6, + "firstname": "July", + "lastname": "Dooley", + "username": "@bat" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/boostraptable/tableborder.json b/src/assets/data/boostraptable/tableborder.json new file mode 100644 index 0000000..b3e8bfc --- /dev/null +++ b/src/assets/data/boostraptable/tableborder.json @@ -0,0 +1,19 @@ +{ + "rows": [ + { + "firstname": "Mark", + "lastname": "Otto", + "username": "@mdo" + }, + { + "firstname": "Jacob", + "lastname": "Thornton", + "username": "@fat" + }, + { + "firstname": "Larry", + "lastname": "The Bird", + "username": "@twitter" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/boostraptable/tablestyling.json b/src/assets/data/boostraptable/tablestyling.json new file mode 100644 index 0000000..987028e --- /dev/null +++ b/src/assets/data/boostraptable/tablestyling.json @@ -0,0 +1,28 @@ +{ + "rows": [ + { + "firstname": "John", + "lastname": "Deo", + "email": "john@example.com", + "password":"********" + }, + { + "firstname": "Mary", + "lastname": "Moe", + "email": "mary@example.com", + "password":"********" + }, + { + "firstname": "July", + "lastname": "Dooley", + "email": "july@example.com", + "password":"********" + }, + { + "firstname": "Pitar", + "lastname": "Pen", + "email": "pen@example.com", + "password" : "*****" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/chartist/charts/chartist.json b/src/assets/data/chartist/charts/chartist.json new file mode 100644 index 0000000..5be20bd --- /dev/null +++ b/src/assets/data/chartist/charts/chartist.json @@ -0,0 +1,963 @@ +{ + "Bar": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "June", + "July", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "series": [ + [ + 5, + 4, + 3, + 7, + 6, + 7, + 3, + 9, + 9, + 6, + 2, + 7 + ], + [ + 3, + 6, + 10, + 5, + 7, + 3, + 8, + 5, + 7, + 5, + 9, + 3 + ] + ] + }, + "Line3": { + "labels": [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + "series": [ + [ + 12, + 9, + 7, + 4, + 5, + 6, + 6 + ], + [ + 2, + 1, + 10, + 7, + 3, + 7, + 2 + ], + [ + 1, + 10, + 2, + 10, + 6, + 2, + 8 + ] + ] + }, + "ScatterLine": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ], + "series": [ + [ + 5, + 5, + 10, + 8, + 7, + 5, + 4, + null, + null, + null, + 10, + 10, + 7, + 8, + 6, + 9 + ], + [ + 10, + 15, + null, + 12, + null, + 10, + 12, + 15, + null, + null, + 12, + null, + 14, + null, + null, + null + ], + [ + null, + null, + null, + null, + 3, + 4, + 1, + 3, + 4, + 6, + 7, + 9, + 5, + null, + null, + null + ] + ] + }, + "Scatter": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52 + ], + "series": [ + [ + 53.761530227932376, + 55.06077543488965, + 90.15619763154757, + 37.945743703232026, + 90.15064659594809, + 72.37213982905773, + 29.242023161826005, + 10.613377393892765, + 41.13272180459888, + 66.89170357483623, + 85.47173517613665, + 80.61313435041848, + 33.86466777842112, + 6.993834151672074, + 58.93321826442517, + 84.4944785171936, + 66.47863439014286, + 26.61792342884319, + 64.7715312645164, + 66.7721238997995, + 24.81459377695263, + 82.09485043326285, + 94.28939258245515, + 81.16315118589196, + 26.285515136087987, + 94.25034710171474, + 82.86738500874603, + 42.275860431799764, + 7.252221593822195, + 12.509815755028853, + 57.592396396889086, + 16.98227807583916, + 82.13296667627357, + 20.7798608815297, + 1.4886093931434141, + 27.717128889831557, + 83.02006467579533, + 46.825802760236044, + 4.449951322677559, + 63.949111152579285, + 76.2705142938321, + 92.84217568625859, + 33.34033701723147, + 83.32421059421287, + 30.95015406095809, + 99.26555827017742, + 64.73104862164556, + 58.3205528852039, + 98.07205383638176, + 34.217237701943006, + 76.84029415694194, + 77.51086205882534 + ], + [ + 68.01743447487219, + 33.569040390627556, + 55.83518094287856, + 6.424873491809824, + 40.24108430485855, + 12.867529962712322, + 33.9171424717146, + 66.13486382709537, + 75.36042883674916, + 37.18758127466557, + 46.080488500245266, + 40.98286341759507, + 25.372664387026923, + 40.063178151024424, + 73.6495194240123, + 48.56310577188692, + 22.903651846539972, + 91.5635618730181, + 84.08459591966795, + 49.153284675642595, + 34.82239557500657, + 38.7753190443602, + 77.57931404198679, + 78.24594487949813, + 42.96149738863182, + 68.87344162290039, + 73.35891706187205, + 79.20638493178991, + 39.862955442611494, + 67.72254472880542, + 32.5667298714178, + 67.8951691474951, + 68.22845079029227, + 24.013142038835245, + 84.77387385278308, + 81.96540495436318, + 21.938120212431865, + 20.591735159801374, + 44.392082366517926, + 99.42917256114683, + 75.80197000496361, + 44.95928290576234, + 56.30251437622547, + 81.39575345403685, + 46.6480941362678, + 60.30444929651577, + 63.904344644822956, + 96.31525902388087, + 80.79036620032171, + 67.94970208668927, + 81.84914397158013, + 64.34930133297705 + ], + [ + 94.83796449464408, + 0.05012881656139001, + 78.03842883107683, + 86.85066315022306, + 63.09834842166116, + 23.82558487142836, + 95.04013234951407, + 91.84355248378253, + 12.28927042529946, + 91.59027939302398, + 44.15426456286402, + 38.40309269293461, + 3.0323072732378, + 51.442756807992104, + 51.067878308530304, + 68.87925798432126, + 9.786004373688861, + 93.42472024399827, + 7.196590706996409, + 90.61672585107475, + 82.64800742042794, + 29.33983554466535, + 27.575295787547738, + 63.76900610636933, + 44.31691167371892, + 35.02049600051234, + 77.91406665575869, + 9.594366007019817, + 33.17507518940415, + 45.94854823450043, + 6.028395302814493, + 97.36303808493578, + 20.735238575670635, + 11.577295085428618, + 49.377810037702986, + 7.984978938697163, + 81.52380171386066, + 86.62152122764415, + 46.81516933597669, + 72.70055546352265, + 39.482785893198404, + 2.1729768023229346, + 32.730007414228865, + 11.8384494034782, + 97.04367174876609, + 37.87839695714026, + 96.1605067491887, + 24.340714355822968, + 90.92986653306863, + 1.9182109464024322, + 36.43773292877359, + 51.562138311337314 + ], + [ + 90.93023971442824, + 91.24607758668748, + 83.11135627737995, + 38.89630350329263, + 47.48702934796674, + 83.10718371512166, + 93.40725921590878, + 62.65211828434698, + 76.93458061916239, + 94.13663459332706, + 15.47636651231441, + 93.70144628274673, + 80.7911280644665, + 32.06886936152644, + 6.458421962605865, + 14.668285135928372, + 10.700783089925082, + 46.997088144127886, + 53.02589740808132, + 15.662154340561152, + 94.70275097718405, + 59.27632659816442, + 53.88591373783527, + 21.602789791233846, + 29.326094253488066, + 8.159091366607441, + 52.57892041859127, + 71.68439221439431, + 61.773032787481455, + 43.02319475997418, + 97.7745443722398, + 41.77024219267196, + 32.79576671635134, + 26.614574588124352, + 96.60428591791621, + 68.90454201273897, + 33.39711159158707, + 94.56531035270376, + 83.77269890317353, + 72.91107164394433, + 50.31188574983041, + 54.67801129631369, + 69.65510719649639, + 59.96153020907791, + 50.66882388014429, + 97.73196339743835, + 12.936677564924759, + 30.197501751145396, + 7.071721221094629, + 60.85688790258899, + 51.276925828485446, + 30.951614223635193 + ] + ] + }, + "lineArea4": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "series": [ + [ + 5, + 9, + 7, + 8, + 5, + 3, + 5, + 4 + ] + ] + }, + "lineArea3": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "series": [ + [ + 0, + 5, + 15, + 8, + 15, + 9, + 30, + 0 + ], + [ + 0, + 3, + 5, + 2, + 8, + 1, + 5, + 0 + ] + ] + }, + "lineArea2": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "series": [ + [ + 5, + 30, + 25, + 55, + 45, + 65, + 60, + 105, + 80, + 110, + 120, + 150 + ], + [ + 80, + 95, + 87, + 155, + 140, + 147, + 130, + 180, + 160, + 175, + 165, + 200 + ] + ] + }, + "lineAreaDashboard": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "series": [ + [ + 0, + 20, + 10, + 45, + 20, + 36, + 21, + 0 + ], + [ + 0, + 5, + 22, + 14, + 32, + 12, + 28, + 0 + ] + ] + }, + "lineArea1": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "series": [ + [ + 10, + 30, + 10, + 35, + 15, + 45, + 15, + 35, + 20, + 30 + ], + [ + 0, + 10, + 30, + 10, + 30, + 15, + 30, + 15, + 30, + 0 + ] + ] + }, + "Bi-PolarLine": { + "labels": [ + "1st", + + "2nd", + + "3rd", + + " 4th", + + " 5th", + + "6th", + + "7th" + + ], + "series": [ + [ + 2, + 5, + 3, + 4, + 5, + 3, + 1, + 6 + ], + [ + 2, + 1, + 4, + 2, + 6, + 3, + 5, + 1 + ], + + [ + 2.5, + 4, + 1, + 5, + 2, + 4, + 6, + 3 + ] + ] + }, + + + "DistributedSeries": { + "labels": [ + "XS", + "S", + "M", + "L", + "XL", + "XXL", + "XXXL" + ], + "series": [ + 50, + 70, + 120, + 200, + 180, + 120, + 150 + ] + }, + "donut": { + "series": [ + 20, + 10, + 30, + 40 + ] + }, + + + "LineDashboard": { + "labels": [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + "series": [ + [ + 80, + 85, + 75, + 65, + 63, + 70, + 82 + ] + ] + }, + "line2": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "series": [ + [ + 160, + 150, + 140, + 120, + 75, + 35, + 45, + 65, + 100, + 145, + 160, + 180 + ], + [ + 100, + 95, + 90, + 100, + 110, + 120, + 130, + 140, + 130, + 95, + 75, + 80 + ] + ] + }, + "line1": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun" + ], + "series": [ + [ + 65, + 105, + 145, + 105, + 145, + 185 + ], + [ + 125, + 80, + 30, + 70, + 110, + 150 + ], + [ + 175, + 190, + 160, + 190, + 140, + 100 + ] + ] + }, + "WidgetlineChart": { + "labels": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13" + ], + "series": [ + [ + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 0, + 0, + 0 + + ] + ] + }, + "WidgetlineChart2": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "June", + "July", + "Aug" + ], + "series": [ + [ + 55, + 60, + 50, + 55, + 50, + 60, + 55, + 57 + ] + ] + }, + "WidgetlineChart3": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May" + ], + "series": [ + [ + 50, + 70, + 45, + 75, + 85 + ] + ] + }, + "DashboardBar": { + "labels": [ + "Sport", + "Music", + "Travel", + "News" + ], + "series": [ + [ + 53, + 23, + 40, + 30 + ] + ] + }, + "Stackbarchart": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "July" + ], + "series": [ + [ + 8 + + ], + [ + 2 + ] + ] + }, + "barchart": { + "labels": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "July", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "series": [ + [ + 18, + 39, + 55, + 46, + 37, + 49, + 40, + 32, + 24, + 59, + 51, + 20 + ], + [ + 2, + 1, + 5, + 4, + 3, + 6, + 4, + 7, + 9, + 2, + 4, + 6 + + ] + ] + } +} diff --git a/src/assets/data/customizer/customizerColor.json b/src/assets/data/customizer/customizerColor.json new file mode 100644 index 0000000..61ed03a --- /dev/null +++ b/src/assets/data/customizer/customizerColor.json @@ -0,0 +1,70 @@ +{ + "colorArray": [ + { + "cssClass": "bg-blue-grey" + }, + { + "cssClass": "bg-primary" + }, + { + "cssClass": "bg-danger" + }, + { + "cssClass": "bg-success" + }, + { + "cssClass": "bg-blue" + }, + { + "cssClass": "bg-cyan" + }, + { + "cssClass": "bg-pink" + }, + { + "cssClass": "bg-gradient-x-grey-blue" + }, + { + "cssClass": "bg-gradient-x-primary" + }, + { + "cssClass": "bg-gradient-x-danger" + }, + { + "cssClass": "bg-gradient-x-success" + }, + { + "cssClass": "bg-gradient-x-blue" + }, + { + "cssClass": "bg-gradient-x-cyan" + }, + { + "cssClass": "bg-gradient-x-pink" + }, + { + "cssClass": "bg-default" + }, + { + "cssClass": "bg-blue-grey bg-lighten-4" + }, + { + "cssClass": "bg-primary bg-lighten-4" + }, + { + "cssClass": "bg-danger bg-lighten-4" + }, + { + "cssClass": "bg-success bg-lighten-4" + }, + { + "cssClass": "bg-blue bg-lighten-4" + }, + { + "cssClass": "bg-cyan bg-lighten-4" + }, + { + "cssClass": "bg-pink bg-lighten-4" + } + ] +} diff --git a/src/assets/data/dashboard/ecommerce/chartist.json b/src/assets/data/dashboard/ecommerce/chartist.json new file mode 100644 index 0000000..21aab20 --- /dev/null +++ b/src/assets/data/dashboard/ecommerce/chartist.json @@ -0,0 +1,184 @@ +{ + "Bar": { + "labels": [ + "Jan" , + "", + "", + "Apr", + "", + "", + "", + "Aug", + "", + "", + "", + "Dec" + ], + "series": [ + [ + 1835, + 2356, + 1459, + 1289, + 1647, + 2156, + 1835, + 2356, + 1459, + 1289, + 1647, + 2156 + ] + + ] + }, + "lineArea": { + "labels": ["1st","2nd","3rd","4th","5th","6th","7th","8th"], + "series": [ + [ + 0, + 4.5, + 2.6, + 6.1, + 2.6, + 6.5, + 3.2, + 6.8 + + ] + ] + }, + + "lineAreaWeek": { + "labels": ["W1","W2","W3","W4","W5","W6","W7","w8"], + "series": [ + [ + 77, + 18, + 61, + 26, + 58, + 32, + 70, + 45 + ] + ] + }, + + "lineAreaMonth": { + "labels": ["AUG","SEP","OCT","NOV","DEC","JAN","FEB","MAR"], + "series": [ + [ + 100, + 500, + 300, + 700, + 100, + 200, + 700, + 50 + ] + ] + }, + "lineArea2": { + "labels": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "series": [ + [ + 0, + 20, + 10, + 45, + 20, + 36, + 21, + 0 + ], + [ + 0, + 5, + 22, + 14, + 32, + 12, + 28, + 0 + ] + ] + }, + + "donutDashboard": { + "series": [ + { + "name": "Done", + "className": "ct-done", + "value": 23 + }, + { + "name": "Progress", + "className": "ct-progress", + "value": 14 + }, + { + "name": "Remaining", + "className": "ct-outstanding", + "value": 35 + }, + { + "name": "Started", + "className": "ct-started", + "value": 28 + } + ] + + }, + + "LineDashboard": { + "labels": [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + "series": [ + [ + 80, + 85, + 75, + 65, + 63, + 70, + 82 + ] + ] + }, + + "DashboardBar": { + "labels": [ + "Sport", + "Music", + "Travel", + "News" + ], + "series": [ + [ + 53, + 23, + 40, + 30 + ] + ] + } + +} diff --git a/src/assets/data/dashboard/ecommerce/datatable.json b/src/assets/data/dashboard/ecommerce/datatable.json new file mode 100644 index 0000000..1dff0e3 --- /dev/null +++ b/src/assets/data/dashboard/ecommerce/datatable.json @@ -0,0 +1,74 @@ +{ + "rows": [ + { + "status": "Paid", + "statusSymbol": "success", + "type": "danger", + "value": 25, + "invoice": "INV-001001", + "name": "Elizabeth W.", + "products": "+954-654-564", + "categories": "../../../assets/images/portfolio/portfolio-2.jpg", + "image": "../../../../assets/images/portrait/small/avatar-s-5.png", + "buttonname": "Food", + "progressColor": "gradient-x-danger", + "amount": "$ 1200.00" + }, + { + "status": "Declined", + "statusSymbol": "danger", + "type": "warning", + "value": 45, + "invoice": "INV-001002", + "name": " Doris R.", + "products": "+954-654-564", + "categories": "../../../assets/images/portfolio/portfolio-6.jpg", + "image": "../../../../assets/images/portrait/small/avatar-s-3.png", + "buttonname": "Electronics", + "progressColor": "gradient-x-warning", + "amount": "$ 1850.00" + }, + { + "status": "Pending", + "statusSymbol": "warning", + "type": "success", + "value": 75, + "invoice": "INV-001003", + "name": "Megan S.", + "products": "+954-654-564", + "categories": "../../../assets/images/portfolio/portfolio-5.jpg", + "image": "../../../../assets/images/portrait/small/avatar-s-1.png", + "buttonname": "Groceries", + "progressColor": "gradient-x-success", + "amount": "$ 3200.00" + }, + { + "status": "Paid", + "statusSymbol": "success", + "type": "info", + "value": 55, + "invoice": "INV-001004", + "name": "Andrew W.", + "products": "+954-654-564", + "categories": "../../../assets/images/portfolio/portfolio-1.jpg", + "image": "../../../../assets/images/portrait/small/avatar-s-2.png", + "buttonname": "Apparels", + "progressColor": "gradient-x-info", + "amount": "$ 4500.00" + }, + { + "status": "Declined", + "statusSymbol": "success", + "type": "danger", + "value": 35, + "invoice": "INV-001005", + "name": "Walter R.", + "products": "+954-654-564", + "categories": "../../../assets/images/portfolio/portfolio-3.jpg", + "image": "../../../../assets/images/portrait/small/avatar-s-4.png", + "buttonname": "Food", + "progressColor": "gradient-x-danger", + "amount": "$ 1500.00" + } + ] +} diff --git a/src/assets/data/dashboard/sales/chartist.json b/src/assets/data/dashboard/sales/chartist.json new file mode 100644 index 0000000..718a452 --- /dev/null +++ b/src/assets/data/dashboard/sales/chartist.json @@ -0,0 +1,52 @@ +{ + "lineArea": { + "labels": ["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Mon"], + "series": [ + [5000, 10000, 4000, 14500, 8000, 18500, 8000, 20000], + [7000, 15000, 6000, 10500, 3000, 11500, 4000, 10000] + ] + }, + + "earningchart": { + "series": [ + [23, 30, 31, 43, 41, 37, 53] + ] + }, + "donut1": { + "series": [ + 18, + 82 + ] + }, + "donut2": { + "series": [ + 24, + 76 + ] + }, + + "donutDashboard": { + "series": [ + { + "name": "done", + "className": "ct-done", + "value": 23 + }, + { + "name": "progress", + "className": "ct-progress", + "value": 14 + }, + { + "name": "outstanding", + "className": "ct-outstanding", + "value": 35 + }, + { + "name": "started", + "className": "ct-started", + "value": 28 + } + ] + } +} diff --git a/src/assets/data/datatables/buttons/tablebuttons.json b/src/assets/data/datatables/buttons/tablebuttons.json new file mode 100644 index 0000000..3f29519 --- /dev/null +++ b/src/assets/data/datatables/buttons/tablebuttons.json @@ -0,0 +1,19 @@ +{ + "rows": [ + { "id":"1","name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "id":"2","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"3","name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"4","name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "id":"5","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "id":"6","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "id":"7","name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "id":"8","name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "id":"9","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "id":"10","name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"11","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"12","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"}, + { "id":"13", "name": "Margi", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2015"}, + { "id":"14", "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017"} + ] + +} \ No newline at end of file diff --git a/src/assets/data/datatables/hiddentable/hiddentable.json b/src/assets/data/datatables/hiddentable/hiddentable.json new file mode 100644 index 0000000..7f1c6a9 --- /dev/null +++ b/src/assets/data/datatables/hiddentable/hiddentable.json @@ -0,0 +1,130 @@ +{ + "rows": [ + { + "id": "1", + "name": "Marban", + "position": "Otto", + "office": "@mdo", + "age": "34", + "salary": "16000", + "startdate": "16/05/2017" + }, + { + "id": "2", + "name": "Jacob", + "position": "Thornton", + "office": "@fat", + "age": "36", + "salary": "12000", + "startdate": "16/05/2017" + }, + { + "id": "3", + "name": "Albart", + "position": "the Bird", + "office": "@twitter", + "age": "38", + "salary": "12000", + "startdate": "16/05/2017" + }, + { + "id": "4", + "name": "Marken", + "position": "Otto", + "office": "@mdo", + "age": "32", + "salary": "12000", + "startdate": "26/05/2017" + }, + { + "id": "5", + "name": "Jacob", + "position": "Thornton", + "office": "@fat", + "age": "34", + "salary": "67000", + "startdate": "16/05/2017" + }, + { + "id": "6", + "name": "Larry", + "position": "the Bird", + "office": "@twitter", + "age": "39", + "salary": "22000", + "startdate": "16/05/2017" + }, + { + "id": "7", + "name": "Margi", + "position": "Otto", + "office": "@mdo", + "age": "31", + "salary": "42000", + "startdate": "16/05/2017" + }, + { + "id": "8", + "name": "Jhon", + "position": "Thornton", + "office": "@fat", + "age": "40", + "salary": "52000", + "startdate": "16/05/2017" + }, + { + "id": "9", + "name": "Larry", + "position": "the Bird", + "office": "@twitter", + "age": "48", + "salary": "20000", + "startdate": "16/05/2018" + }, + { + "id": "10", + "name": "Mark", + "position": "Otto", + "office": "@mdo", + "age": "36", + "salary": "12000", + "startdate": "16/05/2017" + }, + { + "id": "11", + "name": "Jacob", + "position": "Thornton", + "office": "@fat", + "age": "33", + "salary": "12000", + "startdate": "16/05/2017" + }, + { + "id": "12", + "name": "Larry", + "position": "the Bird", + "office": "@twitter", + "age": "34", + "salary": "19000", + "startdate": "16/05/2017" + }, + { + "id": "13", + "name": "Margi", + "position": "Otto", + "office": "@mdo", + "age": "34", + "salary": "16000", + "startdate": "16/05/2015" + }, + { + "id": "14", + "name": "Jacob", + "position": "Thornton", + "office": "@fat", + "age": "34", + "salary": "12000", + "startdate": "16/05/2017" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/datatables/html5dataexport/html5dataexport.json b/src/assets/data/datatables/html5dataexport/html5dataexport.json new file mode 100644 index 0000000..3f29519 --- /dev/null +++ b/src/assets/data/datatables/html5dataexport/html5dataexport.json @@ -0,0 +1,19 @@ +{ + "rows": [ + { "id":"1","name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "id":"2","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"3","name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"4","name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "id":"5","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "id":"6","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "id":"7","name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "id":"8","name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "id":"9","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "id":"10","name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"11","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"12","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"}, + { "id":"13", "name": "Margi", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2015"}, + { "id":"14", "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017"} + ] + +} \ No newline at end of file diff --git a/src/assets/data/datatables/tableapi/tableapi.json b/src/assets/data/datatables/tableapi/tableapi.json new file mode 100644 index 0000000..b838e14 --- /dev/null +++ b/src/assets/data/datatables/tableapi/tableapi.json @@ -0,0 +1,36 @@ +{ + "rows": [ + { "id":"1","name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "id":"2","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"3","name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"4","name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "id":"5","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "id":"6","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "id":"7","name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "id":"8","name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "id":"9","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "id":"10","name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"11","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "id":"12","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"}, + { "id":"13", "name": "Margi", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2015"}, + { "id":"14", "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017"} + ], + "row":[ + + { "id":"1","name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000","gender":"female" }, + { "id":"2","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000","gender":"male" }, + { "id":"3","name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "gender":"female" }, + { "id":"4","name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000","gender":"male" }, + { "id":"5","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "gender":"female" }, + { "id":"6","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000","gender":"female" }, + { "id":"7","name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "gender":"male" }, + { "id":"8","name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000","gender":"female" }, + { "id":"9","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000","gender":"female" }, + { "id":"10","name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000","gender":"male" }, + { "id":"11","name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000","gender":"female" }, + { "id":"12","name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000","gender":"male" }, + { "id":"13", "name": "Margi", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000","gender":"female" }, + { "id":"14", "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000","gender":"male" } + ] + +} \ No newline at end of file diff --git a/src/assets/data/datatables/tablecomponent/tablecomponent.json b/src/assets/data/datatables/tablecomponent/tablecomponent.json new file mode 100644 index 0000000..86eb606 --- /dev/null +++ b/src/assets/data/datatables/tablecomponent/tablecomponent.json @@ -0,0 +1,20 @@ +{ +"Cities":[ + {"item_id": 1, "item_text": "Alaska" }, + { "item_id": 2, "item_text": "California" }, + { "item_id": 3, "item_text": "Colorado" }, + { "item_id": 4, "item_text": "New Mexico" }, + { "item_id": 5, "item_text": "Alabama" }, + { "item_id": 6, "item_text": "Connecticut" }, + { "item_id": 7, "item_text": "New York" } + ], +"Select":[ + {"item_id": 1, "item_text": "Alaska" }, + { "item_id": 2, "item_text": "California" }, + { "item_id": 3, "item_text": "Colorado" }, + { "item_id": 4, "item_text": "New Mexico" }, + { "item_id": 5, "item_text": "Alabama" }, + { "item_id": 6, "item_text": "Connecticut" }, + { "item_id": 7, "item_text": "New York" } + ] +} \ No newline at end of file diff --git a/src/assets/data/datatables/tableinitialisation/tableinitialisation.json b/src/assets/data/datatables/tableinitialisation/tableinitialisation.json new file mode 100644 index 0000000..3778375 --- /dev/null +++ b/src/assets/data/datatables/tableinitialisation/tableinitialisation.json @@ -0,0 +1,78 @@ +{ + "rows":[ + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "31", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "40", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "12000", "startdate": "16/05/2018" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2015" } + + ], + "defaultrows" : [ + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "31", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "40", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "12000", "startdate": "16/05/2018" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2015" } + + ], + "DOMrows" :[ + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "31", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "40", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "12000", "startdate": "16/05/2018" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2015" } + + ], + "Scrollrows" : [ + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "31", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "40", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "12000", "startdate": "16/05/2018" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "54", "salary": "12000", "startdate": "16/05/2015" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "44000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "22000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "42000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "31", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "40", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "26000", "startdate": "16/05/2018" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017" }, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "26000", "startdate": "16/05/2017" }, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "34", "salary": "12000", "startdate": "16/05/2015" } + ] + } \ No newline at end of file diff --git a/src/assets/data/datatables/tablestyling/tablestyling.json b/src/assets/data/datatables/tablestyling/tablestyling.json new file mode 100644 index 0000000..633e8c5 --- /dev/null +++ b/src/assets/data/datatables/tablestyling/tablestyling.json @@ -0,0 +1,44 @@ +{ + "rows": [ + { "name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"} + ], + "stylerows": [ + { "name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"} + ], + "baserows": [ + { "name": "Marban", "position": "Otto", "office": "@mdo", "age": "34", "salary": "16000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Albart", "position": "the Bird", "office": "@twitter", "age": "38", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Marken", "position": "Otto", "office": "@mdo", "age": "32", "salary": "12000", "startdate": "26/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "34", "salary": "67000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "39", "salary": "22000", "startdate": "16/05/2017"}, + { "name": "Margi", "position": "Otto", "office": "@mdo", "age": "31", "salary": "42000", "startdate": "16/05/2017"}, + { "name": "Jhon", "position": "Thornton", "office": "@fat", "age": "40", "salary": "52000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "48", "salary": "20000", "startdate": "16/05/2018"}, + { "name": "Mark", "position": "Otto", "office": "@mdo", "age": "36", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Jacob", "position": "Thornton", "office": "@fat", "age": "33", "salary": "12000", "startdate": "16/05/2017"}, + { "name": "Larry", "position": "the Bird", "office": "@twitter", "age": "34", "salary": "19000", "startdate": "16/05/2017"} + ] +} diff --git a/src/assets/data/extra-components/typeahead/typeahead.json b/src/assets/data/extra-components/typeahead/typeahead.json new file mode 100644 index 0000000..ce8ca7c --- /dev/null +++ b/src/assets/data/extra-components/typeahead/typeahead.json @@ -0,0 +1,265 @@ +{ + "states": [ + "Alabama", + "Alaska", + "American Samoa", + "Arizona", + "Arkansas", + "California", + "Colorado", + "Connecticut", + "Delaware", + "District Of Columbia", + "Federated States Of Micronesia", + "Florida", + "Georgia", + "Guam", + "Hawaii", + "Idaho", + "Illinois", + "Indiana", + "Iowa", + "Kansas", + "Kentucky", + "Louisiana", + "Maine", + "Marshall Islands", + "Maryland", + "Massachusetts", + "Michigan", + "Minnesota", + "Mississippi", + "Missouri", + "Montana", + "Nebraska", + "Nevada", + "New Hampshire", + "New Jersey", + "New Mexico", + "New York", + "North Carolina", + "North Dakota", + "Northern Mariana Islands", + "Ohio", + "Oklahoma", + "Oregon", + "Palau", + "Pennsylvania", + "Puerto Rico", + "Rhode Island", + "South Carolina", + "South Dakota", + "Tennessee", + "Texas", + "Utah", + "Vermont", + "Virgin Islands", + "Virginia", + "Washington", + "West Virginia", + "Wisconsin", + "Wyoming" + ], + "statesWithFlags": [ + { + "name": "Alabama", + "flag": "5/5c/Flag_of_Alabama.svg/45px-Flag_of_Alabama.svg.png" + }, + { + "name": "Alaska", + "flag": "e/e6/Flag_of_Alaska.svg/43px-Flag_of_Alaska.svg.png" + }, + { + "name": "Arizona", + "flag": "9/9d/Flag_of_Arizona.svg/45px-Flag_of_Arizona.svg.png" + }, + { + "name": "Arkansas", + "flag": "9/9d/Flag_of_Arkansas.svg/45px-Flag_of_Arkansas.svg.png" + }, + { + "name": "California", + "flag": "0/01/Flag_of_California.svg/45px-Flag_of_California.svg.png" + }, + { + "name": "Colorado", + "flag": "4/46/Flag_of_Colorado.svg/45px-Flag_of_Colorado.svg.png" + }, + { + "name": "Connecticut", + "flag": "9/96/Flag_of_Connecticut.svg/39px-Flag_of_Connecticut.svg.png" + }, + { + "name": "Delaware", + "flag": "c/c6/Flag_of_Delaware.svg/45px-Flag_of_Delaware.svg.png" + }, + { + "name": "Florida", + "flag": "f/f7/Flag_of_Florida.svg/45px-Flag_of_Florida.svg.png" + }, + { + "name": "Georgia", + "flag": "5/54/Flag_of_Georgia_%28U.S._state%29.svg/46px-Flag_of_Georgia_%28U.S._state%29.svg.png" + }, + { + "name": "Hawaii", + "flag": "e/ef/Flag_of_Hawaii.svg/46px-Flag_of_Hawaii.svg.png" + }, + { + "name": "Idaho", + "flag": "a/a4/Flag_of_Idaho.svg/38px-Flag_of_Idaho.svg.png" + }, + { + "name": "Illinois", + "flag": "0/01/Flag_of_Illinois.svg/46px-Flag_of_Illinois.svg.png" + }, + { + "name": "Indiana", + "flag": "a/ac/Flag_of_Indiana.svg/45px-Flag_of_Indiana.svg.png" + }, + { + "name": "Iowa", + "flag": "a/aa/Flag_of_Iowa.svg/44px-Flag_of_Iowa.svg.png" + }, + { + "name": "Kansas", + "flag": "d/da/Flag_of_Kansas.svg/46px-Flag_of_Kansas.svg.png" + }, + { + "name": "Kentucky", + "flag": "8/8d/Flag_of_Kentucky.svg/46px-Flag_of_Kentucky.svg.png" + }, + { + "name": "Louisiana", + "flag": "e/e0/Flag_of_Louisiana.svg/46px-Flag_of_Louisiana.svg.png" + }, + { + "name": "Maine", + "flag": "3/35/Flag_of_Maine.svg/45px-Flag_of_Maine.svg.png" + }, + { + "name": "Maryland", + "flag": "a/a0/Flag_of_Maryland.svg/45px-Flag_of_Maryland.svg.png" + }, + { + "name": "Massachusetts", + "flag": "f/f2/Flag_of_Massachusetts.svg/46px-Flag_of_Massachusetts.svg.png" + }, + { + "name": "Michigan", + "flag": "b/b5/Flag_of_Michigan.svg/45px-Flag_of_Michigan.svg.png" + }, + { + "name": "Minnesota", + "flag": "b/b9/Flag_of_Minnesota.svg/46px-Flag_of_Minnesota.svg.png" + }, + { + "name": "Mississippi", + "flag": "4/42/Flag_of_Mississippi.svg/45px-Flag_of_Mississippi.svg.png" + }, + { + "name": "Missouri", + "flag": "5/5a/Flag_of_Missouri.svg/46px-Flag_of_Missouri.svg.png" + }, + { + "name": "Montana", + "flag": "c/cb/Flag_of_Montana.svg/45px-Flag_of_Montana.svg.png" + }, + { + "name": "Nebraska", + "flag": "4/4d/Flag_of_Nebraska.svg/46px-Flag_of_Nebraska.svg.png" + }, + { + "name": "Nevada", + "flag": "f/f1/Flag_of_Nevada.svg/45px-Flag_of_Nevada.svg.png" + }, + { + "name": "New Hampshire", + "flag": "2/28/Flag_of_New_Hampshire.svg/45px-Flag_of_New_Hampshire.svg.png" + }, + { + "name": "New Jersey", + "flag": "9/92/Flag_of_New_Jersey.svg/45px-Flag_of_New_Jersey.svg.png" + }, + { + "name": "New Mexico", + "flag": "c/c3/Flag_of_New_Mexico.svg/45px-Flag_of_New_Mexico.svg.png" + }, + { + "name": "New York", + "flag": "1/1a/Flag_of_New_York.svg/46px-Flag_of_New_York.svg.png" + }, + { + "name": "North Carolina", + "flag": "b/bb/Flag_of_North_Carolina.svg/45px-Flag_of_North_Carolina.svg.png" + }, + { + "name": "North Dakota", + "flag": "e/ee/Flag_of_North_Dakota.svg/38px-Flag_of_North_Dakota.svg.png" + }, + { + "name": "Ohio", + "flag": "4/4c/Flag_of_Ohio.svg/46px-Flag_of_Ohio.svg.png" + }, + { + "name": "Oklahoma", + "flag": "6/6e/Flag_of_Oklahoma.svg/45px-Flag_of_Oklahoma.svg.png" + }, + { + "name": "Oregon", + "flag": "b/b9/Flag_of_Oregon.svg/46px-Flag_of_Oregon.svg.png" + }, + { + "name": "Pennsylvania", + "flag": "f/f7/Flag_of_Pennsylvania.svg/45px-Flag_of_Pennsylvania.svg.png" + }, + { + "name": "Rhode Island", + "flag": "f/f3/Flag_of_Rhode_Island.svg/32px-Flag_of_Rhode_Island.svg.png" + }, + { + "name": "South Carolina", + "flag": "6/69/Flag_of_South_Carolina.svg/45px-Flag_of_South_Carolina.svg.png" + }, + { + "name": "South Dakota", + "flag": "1/1a/Flag_of_South_Dakota.svg/46px-Flag_of_South_Dakota.svg.png" + }, + { + "name": "Tennessee", + "flag": "9/9e/Flag_of_Tennessee.svg/46px-Flag_of_Tennessee.svg.png" + }, + { + "name": "Texas", + "flag": "f/f7/Flag_of_Texas.svg/45px-Flag_of_Texas.svg.png" + }, + { + "name": "Utah", + "flag": "f/f6/Flag_of_Utah.svg/45px-Flag_of_Utah.svg.png" + }, + { + "name": "Vermont", + "flag": "4/49/Flag_of_Vermont.svg/46px-Flag_of_Vermont.svg.png" + }, + { + "name": "Virginia", + "flag": "4/47/Flag_of_Virginia.svg/44px-Flag_of_Virginia.svg.png" + }, + { + "name": "Washington", + "flag": "5/54/Flag_of_Washington.svg/46px-Flag_of_Washington.svg.png" + }, + { + "name": "West Virginia", + "flag": "2/22/Flag_of_West_Virginia.svg/46px-Flag_of_West_Virginia.svg.png" + }, + { + "name": "Wisconsin", + "flag": "2/22/Flag_of_Wisconsin.svg/45px-Flag_of_Wisconsin.svg.png" + }, + { + "name": "Wyoming", + "flag": "b/bc/Flag_of_Wyoming.svg/43px-Flag_of_Wyoming.svg.png" + } + ] +} diff --git a/src/assets/data/forms/form-elements/form-inputs.json b/src/assets/data/forms/form-elements/form-inputs.json new file mode 100644 index 0000000..fa63313 --- /dev/null +++ b/src/assets/data/forms/form-elements/form-inputs.json @@ -0,0 +1,32 @@ +{ + "multipleSelectArray": [ + { + "item_id": 1, + "item_text": "Alaska" + }, + { + "item_id": 2, + "item_text": "California" + }, + { + "item_id": 3, + "item_text": "Colorado" + }, + { + "item_id": 4, + "item_text": "New Mexico" + }, + { + "item_id": 5, + "item_text": "Alabama" + }, + { + "item_id": 6, + "item_text": "Connecticut" + }, + { + "item_id": 7, + "item_text": "New York" + } + ] +} diff --git a/src/assets/data/forms/form-elements/select.json b/src/assets/data/forms/form-elements/select.json new file mode 100644 index 0000000..629c382 --- /dev/null +++ b/src/assets/data/forms/form-elements/select.json @@ -0,0 +1,130 @@ +{ + "singleSelectArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "multipleSelectArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "eventArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "programmaticArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "loadArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "templatingArray" : [ + { "item_id": 1, "item_text": "Alaska", "avtar": "../../../assets/images/flags/ak.png" + }, + { "item_id": 2, "item_text": "California", "avtar": "../../../assets/images/flags/ca.png" + }, + { "item_id": 3, "item_text": "Colorado", "avtar": "../../../assets/images/flags/co.png" + }, + { "item_id": 4, "item_text": "New Mexico", "avtar": "../../../assets/images/flags/nm.png" + }, + { "item_id": 5, "item_text": "Alabama", "avtar": "../../../assets/images/flags/al.png" + }, + { "item_id": 6, "item_text": "Connecticut", "avtar": "../../../assets/images/flags/ct.png" + }, + { "item_id": 7, "item_text": "New York", "avtar": "../../../assets/images/flags/ny.png" + } + ], + "singleSelect" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ], + "taggingSupportArray" : [ + { "item_id": 1, "item_text": "Alaska" + }, + { "item_id": 2, "item_text": "California" + }, + { "item_id": 3, "item_text": "Colorado" + }, + { "item_id": 4, "item_text": "New Mexico" + }, + { "item_id": 5, "item_text": "Alabama" + }, + { "item_id": 6, "item_text": "Connecticut" + }, + { "item_id": 7, "item_text": "New York" + } + ] +} diff --git a/src/assets/data/fullcalendar/json/events.json b/src/assets/data/fullcalendar/json/events.json new file mode 100644 index 0000000..20b0c6b --- /dev/null +++ b/src/assets/data/fullcalendar/json/events.json @@ -0,0 +1,56 @@ +[ + { + "title": "All Day Event", + "start": "2016-06-01" + }, + { + "title": "Long Event", + "start": "2016-06-07", + "end": "2016-06-10" + }, + { + "id": "999", + "title": "Repeating Event", + "start": "2016-06-09T16:00:00-05:00" + }, + { + "id": "999", + "title": "Repeating Event", + "start": "2016-06-16T16:00:00-05:00" + }, + { + "title": "Conference", + "start": "2016-06-11", + "end": "2016-06-13" + }, + { + "title": "Meeting", + "start": "2016-06-12T10:30:00-05:00", + "end": "2016-06-12T12:30:00-05:00" + }, + { + "title": "Lunch", + "start": "2016-06-12T12:00:00-05:00" + }, + { + "title": "Meeting", + "start": "2016-06-12T14:30:00-05:00" + }, + { + "title": "Happy Hour", + "start": "2016-06-12T17:30:00-05:00" + }, + { + "title": "Dinner", + "start": "2016-06-12T20:00:00" + }, + { + "title": "Birthday Party", + "start": "2016-06-13T07:00:00-05:00" + }, + { + "title": "Click for Google", + "url": "http://google.com/", + "start": "2016-06-28" + } +] diff --git a/src/assets/data/gmaps/foursquare.json b/src/assets/data/gmaps/foursquare.json new file mode 100644 index 0000000..1339822 --- /dev/null +++ b/src/assets/data/gmaps/foursquare.json @@ -0,0 +1 @@ +{"venues":[{"id":"52b331da498e25c00246191c","name":"Cevichería Super Ceviche","contact":{},"location":{"lat":-12.058553451600776,"lng":-77.0330945435819,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4eb1bfa43b7b52c0e1adc2e8","name":"Peruvian Restaurant","pluralName":"Peruvian Restaurants","shortName":"Peruvian","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/peruvian_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":7,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"53ea6a1b498eb1c0147ecc83","name":"ceviche de carretilla @ngel","contact":{},"location":{"lat":-12.033483505249023,"lng":-77.03278350830078,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"52e81612bcbc57f1066b7a00","name":"Comfort Food Restaurant","pluralName":"Comfort Food Restaurants","shortName":"Comfort Food","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/default_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":2,"usersCount":2,"tipCount":1},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4f20aa5de4b0628b53a9d963","name":"Oh! Maki - Ceviche & Sushi Bar","contact":{"phone":"+5112634627","formattedPhone":"+51 1 2634627"},"location":{"address":"Universitaria 770, Lima District 15086","lat":-12.080728942303972,"lng":-77.08191260280462,"cc":"PE","city":"Lima","state":"Lima","country":"Perú","formattedAddress":["Universitaria 770, Lima District 15086","Lima District","Perú"]},"categories":[{"id":"4bf58dd8d48988d1d2941735","name":"Sushi Restaurant","pluralName":"Sushi Restaurants","shortName":"Sushi","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/sushi_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1338,"usersCount":500,"tipCount":48},"url":"http://www.oh-maki.com","allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"51001923e4b0176c76613862","name":"Ceviche de pota - Wilson","contact":{},"location":{"lat":-12.055221,"lng":-77.037577,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1cb941735","name":"Food Truck","pluralName":"Food Trucks","shortName":"Food Truck","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/streetfood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4fa04293e4b0b74f34bc7d56","name":"Ceviche payasito","contact":{},"location":{"lat":-12.118860270010648,"lng":-77.02619523671082,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1cb941735","name":"Food Truck","pluralName":"Food Trucks","shortName":"Food Truck","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/streetfood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":6,"usersCount":4,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"53de8662498ec77445dc4794","name":"Ceviche de pota","contact":{},"location":{"address":"Emilio Grec (ex Avenida 2)","lat":-12.024888,"lng":-77.034267,"cc":"PE","country":"Perú","formattedAddress":["Emilio Grec (ex Avenida 2)","Perú"]},"categories":[{"id":"4bf58dd8d48988d1cb941735","name":"Food Truck","pluralName":"Food Trucks","shortName":"Food Truck","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/streetfood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4f3aca32e4b053d310e0e398","name":"JW Sushi Ceviche Lounge","contact":{"phone":"+5112177000","formattedPhone":"+51 1 2177000"},"location":{"address":"Malecón de la Reserva, Miraflores 15074","lat":-12.135123470084007,"lng":-77.02726361477528,"cc":"PE","city":"Miraflores","state":"Lima","country":"Perú","formattedAddress":["Malecón de la Reserva, Miraflores 15074","Miraflores","Perú"]},"categories":[{"id":"4bf58dd8d48988d1d2941735","name":"Sushi Restaurant","pluralName":"Sushi Restaurants","shortName":"Sushi","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/sushi_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":152,"usersCount":69,"tipCount":4},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"56eda88ecd10d9e2508fb63a","name":"Ceviche","contact":{},"location":{"lat":-12.025992,"lng":-77.05356,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"566b1844498e28dcd2ca30d3","name":"José Juana #CevicheConSentimiento","contact":{},"location":{"address":"Av. Risso 460","lat":-12.085254968999074,"lng":-77.03163262061291,"cc":"PE","country":"Perú","formattedAddress":["Av. Risso 460","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":33,"usersCount":19,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"50d1fd06e4b032983f93eb9a","name":"Ceviche de Pota - Petronila","contact":{},"location":{"lat":-12.027432,"lng":-76.993001,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1cb941735","name":"Food Truck","pluralName":"Food Trucks","shortName":"Food Truck","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/streetfood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":9,"usersCount":2,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"512d0202e4b0b45ad46b6bfb","name":"Ceviche Factory","contact":{},"location":{"lat":-12.086583,"lng":-77.031983,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":4,"usersCount":3,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4d69585a4c4637044c0ea1b3","name":"Ceviche Bar","contact":{},"location":{"address":"Elias Aguirre 369","crossStreet":"Piura","lat":-12.116169681227259,"lng":-77.03486680984497,"postalCode":"LI18","cc":"PE","city":"Miraflores","state":"Lima","country":"Perú","formattedAddress":["Elias Aguirre 369 (Piura)","Miraflores","LI18","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":450,"usersCount":205,"tipCount":20},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"5197ea9e498e45955a0e8303","name":"Cevichería El Firme","contact":{},"location":{"address":"Jirón Ica 273","crossStreet":"Cayoma","lat":-12.045734494996319,"lng":-77.0328358969584,"cc":"PE","state":"Lima","country":"Perú","formattedAddress":["Jirón Ica 273 (Cayoma)","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":22,"usersCount":11,"tipCount":3},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4e330a6f7d8b6946c1ea1133","name":"Cevichería La Bahía","contact":{},"location":{"address":"Jr. Camana 318","lat":-12.046172302466823,"lng":-77.03271567821503,"postalCode":"1","cc":"PE","city":"Cercado de Lima","state":"Lima","country":"Perú","formattedAddress":["Jr. Camana 318","Cercado de Lima","1","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":23,"usersCount":13,"tipCount":1},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"52b0b2e6498e004fb6cf0539","name":"Cevichería Puerto 260","contact":{"phone":"+5117195698","formattedPhone":"+51 1 7195698"},"location":{"address":"Avenida Abancay 260","lat":-12.048555727241208,"lng":-77.0270611859713,"cc":"PE","city":"Lima","state":"Lima","country":"Perú","formattedAddress":["Avenida Abancay 260","Lima","Perú"]},"categories":[{"id":"4eb1bfa43b7b52c0e1adc2e8","name":"Peruvian Restaurant","pluralName":"Peruvian Restaurants","shortName":"Peruvian","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/peruvian_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":16,"usersCount":16,"tipCount":1},"url":"http://www.cevicheriapuerto260.es.tl","allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"5738bf48cd1015663e716914","name":"El Señor Ceviche","contact":{},"location":{"address":"Av. Cesar Vallejo 1633","lat":-12.039849,"lng":-76.99138,"cc":"PE","city":"El Agustino","state":"Lima","country":"Perú","formattedAddress":["Av. Cesar Vallejo 1633","El Agustino","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":2,"usersCount":2,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"50a7e477e4b007904aeeec2e","name":"Cevicheria Fabian","contact":{},"location":{"address":"Jr. Callao 403","crossStreet":"Lima","lat":-12.04440331696166,"lng":-77.03463516635837,"cc":"PE","city":"Lima","state":"Lima","country":"Perú","formattedAddress":["Jr. Callao 403 (Lima)","Lima","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":3,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4e482647c65bd6ffbea8ba4f","name":"Ceviche Conchas Negras","contact":{},"location":{"address":"Av. Risso 539 - Lince","crossStreet":"Av. Militar","lat":-12.095089023032525,"lng":-77.01281159729828,"cc":"PE","city":"Lima","state":"Lima","country":"Perú","formattedAddress":["Av. Risso 539 - Lince (Av. Militar)","Lima","Perú"]},"categories":[],"verified":false,"stats":{"checkinsCount":4,"usersCount":3,"tipCount":0},"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"52015bd48bbdf8b4e696c084","name":"Cevichería K-bo Blanco","contact":{},"location":{"address":"Jr. Azángaro 726","crossStreet":"Lima","lat":-12.05223694765955,"lng":-77.03145503997803,"postalCode":"01","cc":"PE","city":"Lima","state":"Lima","country":"Perú","formattedAddress":["Jr. Azángaro 726 (Lima)","Lima","01","Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":13,"usersCount":7,"tipCount":2},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"503ba9a7e4b07c3e08b2890d","name":"Ceviche de callejón xD","contact":{},"location":{"lat":-12.055334,"lng":-77.0814461,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4edd64a0c7ddd24ca188df1a","name":"Fish & Chips Shop","pluralName":"Fish & Chips Shops","shortName":"Fish & Chips","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/fishandchips_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":11,"usersCount":3,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"50da0dc4e4b028bbe6c2dda5","name":"Cevicheria Piscis","contact":{},"location":{"lat":-12.04516959001763,"lng":-77.03649625747865,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":2,"usersCount":2,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"5249c20d498e4ed36e5da714","name":"Cevichería Cabo Blanco","contact":{},"location":{"lat":-12.051013946533203,"lng":-77.02432250976562,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1cd941735","name":"South American Restaurant","pluralName":"South American Restaurants","shortName":"South American","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/argentinian_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"5021652de4b0f17f049cf7ca","name":"Ceviche al buen paso","contact":{},"location":{"lat":-12.027588844299316,"lng":-77.08501434326172,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"54c674af498ec3e20f715a25","name":"Cevichería Magariño","contact":{},"location":{"lat":-12.036185365308686,"lng":-77.0339829342937,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4eb1bfa43b7b52c0e1adc2e8","name":"Peruvian Restaurant","pluralName":"Peruvian Restaurants","shortName":"Peruvian","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/peruvian_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":2,"usersCount":2,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4f218c9ce4b08ed6b586b85e","name":"Ceviche Pedrito","contact":{},"location":{"address":"Junin y Castilla!","lat":-12.08183830473782,"lng":-77.07276212817077,"cc":"PE","country":"Perú","formattedAddress":["Junin y Castilla!","Perú"]},"categories":[{"id":"4eb1bfa43b7b52c0e1adc2e8","name":"Peruvian Restaurant","pluralName":"Peruvian Restaurants","shortName":"Peruvian","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/peruvian_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":39,"usersCount":31,"tipCount":1},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"5335aa5a498eb6f118ca1c19","name":"Ceviche Movil \"El Tiburon\"","contact":{},"location":{"lat":-11.990018844604492,"lng":-77.06237030029297,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":1,"usersCount":1,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"52ee8c46498e90aea62fe657","name":"Ceviche Loco","contact":{},"location":{"lat":-12.098509788513184,"lng":-77.0627212524414,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":2,"usersCount":2,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"4bc7546a0050b713c07ab83b","name":"Cevicheria Picanteria El Paisa","contact":{},"location":{"address":"Jr.Apurimac 259","lat":-12.05154165,"lng":-77.03292341,"cc":"PE","state":"Lima","country":"Perú","formattedAddress":["Jr.Apurimac 259","Perú"]},"categories":[{"id":"4bf58dd8d48988d1be941735","name":"Latin American Restaurant","pluralName":"Latin American Restaurants","shortName":"Latin American","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/latinamerican_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":150,"usersCount":116,"tipCount":15},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"50a7b1a6e4b01c67631fcc1b","name":"Cevicheria \"Los Tumbesinos\"","contact":{},"location":{"lat":-12.033714228390009,"lng":-77.04255163362976,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":11,"usersCount":9,"tipCount":0},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]},{"id":"52641bd7498ea0cd43c46d11","name":"Cevichería El Pulpito","contact":{},"location":{"lat":-12.054739842080673,"lng":-77.0198578740869,"cc":"PE","country":"Perú","formattedAddress":["Perú"]},"categories":[{"id":"4bf58dd8d48988d1ce941735","name":"Seafood Restaurant","pluralName":"Seafood Restaurants","shortName":"Seafood","icon":{"prefix":"https://ss3.4sqi.net/img/categories_v2/food/seafood_","suffix":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":8,"usersCount":7,"tipCount":1},"allowMenuUrlEdit":true,"specials":{"count":0,"items":[]},"hereNow":{"count":0,"summary":"Nobody here","groups":[]},"referralId":"v-1464874514","venueChains":[]}],"geocode":{"what":"","where":"lima pe","feature":{"cc":"PE","name":"Lima","displayName":"Lima, Peru","matchedName":"Lima, PE","highlightedName":"Lima, PE","woeType":7,"slug":"lima","id":"geonameid:3936456","longId":"72057594041864392","geometry":{"center":{"lat":-12.04318,"lng":-77.02824},"bounds":{"ne":{"lat":-11.656775003499892,"lng":-76.62062601154459},"sw":{"lat":-12.512180998561522,"lng":-77.20014996416089}}}},"parents":[]}} \ No newline at end of file diff --git a/src/assets/data/invoice-summary/invoice-summary.json b/src/assets/data/invoice-summary/invoice-summary.json new file mode 100644 index 0000000..ec6db48 --- /dev/null +++ b/src/assets/data/invoice-summary/invoice-summary.json @@ -0,0 +1,48 @@ +{ + "sales": + [ + { + "name": "Today", + "sales": "$250.00", + "receipts": "$200.00", + "due": "$50.00" + }, + { + "name": "This Week", + "sales": "$450.00", + "receipts": "$300.00", + "due": "$150.00" + }, + { + "name": "This Month", + "sales": "$800", + "receipts": "$600.00", + "due": "$200.00" + }, + { + "name": "This Quarter", + "sales": "$1200.00", + "receipts": "$950.00", + "due": "$250.00" + }, + { + "name": "This Year", + "sales": "$1500.00", + "receipts": "$1200.00", + "due": "$300.00" + } +], +"TotalSales":{ + "TotalSales":[ +[1000, 1800, 1200, 0, 2000, 1500, 700, 900, 1600, 1400, 1550, 1800] +]}, +"TotalReceipts":{ + "TotalReceipts":[ +[850, 1650, 1000, 0, 1850, 1350, 450, 0, 1500, 900, 1250, 1500] +]}, +"TotalExpenses":{ + "TotalExpenses":[ +[50, 150, 100, 10, 850, 350, 0, 60, 250, 90, 120, 230] +]} + } + \ No newline at end of file diff --git a/src/assets/data/invoice/invoicelist/invoicetable.json b/src/assets/data/invoice/invoicelist/invoicetable.json new file mode 100644 index 0000000..5f10e36 --- /dev/null +++ b/src/assets/data/invoice/invoicelist/invoicetable.json @@ -0,0 +1,262 @@ +{ +"invoice":[ + { "date": "06/05/2017", + "invoice": "INV-001001", + "orderno": "PO-005201", + "customername": "Elizabeth Washington", + "due": "10/05/2017", + "amount": "$ 1200.00", + "balancedue": "$ 200.00", + "actions": "" + }, + { + "date": "16/07/2017", + "invoice": "INV-001012", + "orderno": "PO- 001201", + "customername": "Andrew Davis", + "due": "20/07/2017", + "amount": "$ 152.00", + "balancedue": "$ 100.00", + "actions": "" + }, + { + "date": "12/11/2017", + "invoice": "INV-001401", + "orderno": "PO-14561", + "customername": "Megan Stephens", + "due": "16/11/2017", + "amount": "$ 1450.00", + "balancedue": "$ 50.00", + "actions": "" + }, + { + "date": "15/05/2017", + "invoice": "INV-001201", + "orderno": "PO-015201", + "customername": "Judith Carlson", + "due": "20/05/2017", + "amount": "$ 1340.00", + "balancedue": "$ 150.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + } +], +"invoice1":[ + { + "date": "12/11/2017", + "invoice": "INV-001401", + "orderno": "PO-14561", + "customername": "Megan Stephens", + "due": "16/11/2017", + "amount": "$ 1450.00", + "balancedue": "$ 50.00", + "actions": "" + }, + { + "date": "16/07/2017", + "invoice": "INV-001012", + "orderno": "PO- 001201", + "customername": "Andrew Davis", + "due": "20/07/2017", + "amount": "$ 152.00", + "balancedue": "$ 100.00", + "actions": "" + }, + { + "date": "15/05/2017", + "invoice": "INV-001201", + "orderno": "PO-015201", + "customername": "Judith Carlson", + "due": "20/05/2017", + "amount": "$ 1340.00", + "balancedue": "$ 150.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + } +], +"invoice2":[ + { "date": "06/05/2017", + "invoice": "INV-001001", + "orderno": "PO-005201", + "customername": "Elizabeth Washington", + "due": "10/05/2017", + "amount": "$ 1200.00", + "balancedue": "$ 200.00", + "actions": "" + }, + { + "date": "16/07/2017", + "invoice": "INV-001012", + "orderno": "PO- 001201", + "customername": "Andrew Davis", + "due": "20/07/2017", + "amount": "$ 152.00", + "balancedue": "$ 100.00", + "actions": "" + }, + { + "date": "12/11/2017", + "invoice": "INV-001401", + "orderno": "PO-14561", + "customername": "Megan Stephens", + "due": "16/11/2017", + "amount": "$ 1450.00", + "balancedue": "$ 50.00", + "actions": "" + }, + { + "date": "15/05/2017", + "invoice": "INV-001201", + "orderno": "PO-015201", + "customername": "Judith Carlson", + "due": "20/05/2017", + "amount": "$ 1340.00", + "balancedue": "$ 150.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + } +], +"invoice3":[ + { "date": "06/05/2017", + "invoice": "INV-001001", + "orderno": "PO-005201", + "customername": "Elizabeth Washington", + "due": "10/05/2017", + "amount": "$ 1200.00", + "balancedue": "$ 200.00", + "actions": "" + }, + { + "date": "16/07/2017", + "invoice": "INV-001012", + "orderno": "PO- 001201", + "customername": "Andrew Davis", + "due": "20/07/2017", + "amount": "$ 152.00", + "balancedue": "$ 100.00", + "actions": "" + }, + { + "date": "12/11/2017", + "invoice": "INV-001401", + "orderno": "PO-14561", + "customername": "Megan Stephens", + "due": "16/11/2017", + "amount": "$ 1450.00", + "balancedue": "$ 50.00", + "actions": "" + }, + { + "date": "15/05/2017", + "invoice": "INV-001201", + "orderno": "PO-015201", + "customername": "Judith Carlson", + "due": "20/05/2017", + "amount": "$ 1340.00", + "balancedue": "$ 150.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + } + +], +"invoice4":[ + + + { + "date": "16/07/2017", + "invoice": "INV-001012", + "orderno": "PO- 001201", + "customername": "Andrew Davis", + "due": "20/07/2017", + "amount": "$ 152.00", + "balancedue": "$ 100.00", + "actions": "" + }, + { + "date": "15/05/2017", + "invoice": "INV-001201", + "orderno": "PO-015201", + "customername": "Judith Carlson", + "due": "20/05/2017", + "amount": "$ 1340.00", + "balancedue": "$ 150.00", + "actions": "" + }, + { + "date": "18/06/2017", + "invoice": "INV-005801", + "orderno": "PO-002201", + "customername": "Harry Banks", + "due": "23/06/2017", + "amount": "$ 560.00", + "balancedue": "$20.00", + "actions": "" + } +] +} \ No newline at end of file diff --git a/src/assets/data/user-profile/user-profile.json b/src/assets/data/user-profile/user-profile.json new file mode 100644 index 0000000..1e7f8f4 --- /dev/null +++ b/src/assets/data/user-profile/user-profile.json @@ -0,0 +1,37 @@ +{ +"punchdata" : { +"data":[ + [0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0], [0, 6, 0], + [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2], [0, 12, 4], [0, 13, 1], [0, 14, 1], + [0, 15, 3], [0, 16, 4], [0, 17, 6], [0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], + [0, 22, 2], [0, 23, 5], [1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0], + [1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2], [1, 12, 2], [1, 13, 6], + [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7], [1, 18, 8], [1, 19, 12], [1, 20, 5], + [1, 21, 5], [1, 22, 7], [1, 23, 2], [2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], + [2, 4, 0], [2, 5, 0], [2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], + [2, 11, 2], [2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], + [2, 17, 5], [2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], + [2, 23, 4], [3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0], + [3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4], [3, 12, 7], + [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5], [3, 18, 5], + [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1], [4, 0, 1], + [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1], [4, 6, 0], [4, 7, 0], + [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4], [4, 12, 2], [4, 13, 4], + [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1], [4, 18, 8], [4, 19, 5], + [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0], [5, 0, 2], [5, 1, 1], + [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0], [5, 6, 0], [5, 7, 0], [5, 8, 2], + [5, 9, 0], [5, 10, 4], [5, 11, 1], [5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], + [5, 16, 11], [5, 17, 6], [5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], + [5, 23, 0], [6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0], + [6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0], [6, 12, 2], + [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0], [6, 18, 0], [6, 19, 0], + [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6] + ] +}, +"report":{ + "data":["Direct access", "Email marketing", "Advertising alliance", "Video ads", + "Search engine", "Google", "Safari", "Opera", "Firefox"] + + } + } + \ No newline at end of file diff --git a/src/assets/fonts/feather/fonts/feather.eot b/src/assets/fonts/feather/fonts/feather.eot new file mode 100644 index 0000000..58371d9 Binary files /dev/null and b/src/assets/fonts/feather/fonts/feather.eot differ diff --git a/src/assets/fonts/feather/fonts/feather.svg b/src/assets/fonts/feather/fonts/feather.svg new file mode 100644 index 0000000..5dda143 --- /dev/null +++ b/src/assets/fonts/feather/fonts/feather.svg @@ -0,0 +1,849 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/feather/fonts/feather.ttf b/src/assets/fonts/feather/fonts/feather.ttf new file mode 100644 index 0000000..0b33dac Binary files /dev/null and b/src/assets/fonts/feather/fonts/feather.ttf differ diff --git a/src/assets/fonts/feather/fonts/feather.woff b/src/assets/fonts/feather/fonts/feather.woff new file mode 100644 index 0000000..9b03a72 Binary files /dev/null and b/src/assets/fonts/feather/fonts/feather.woff differ diff --git a/src/assets/fonts/feather/style.css b/src/assets/fonts/feather/style.css new file mode 100644 index 0000000..32b162f --- /dev/null +++ b/src/assets/fonts/feather/style.css @@ -0,0 +1,568 @@ + +@font-face { + font-family: "feather"; + src: url('fonts/feather.eot?t=1525787366991'); /* IE9*/ + src: url('fonts/feather.eot?t=1525787366991#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('fonts/feather.woff?t=1525787366991') format('woff'), /* chrome, firefox */ + url('fonts/feather.ttf?t=1525787366991') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('fonts/feather.svg?t=1525787366991#feather') format('svg'); /* iOS 4.1- */ +} + +.feather { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'feather' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ft-alert-octagon:before { content: "\e81b"; } + +.ft-alert-circle:before { content: "\e81c"; } + +.ft-activity:before { content: "\e81d"; } + +.ft-alert-triangle:before { content: "\e81e"; } + +.ft-align-center:before { content: "\e81f"; } + +.ft-airplay:before { content: "\e820"; } + +.ft-align-justify:before { content: "\e821"; } + +.ft-align-left:before { content: "\e822"; } + +.ft-align-right:before { content: "\e823"; } + +.ft-arrow-down-left:before { content: "\e824"; } + +.ft-arrow-down-right:before { content: "\e825"; } + +.ft-anchor:before { content: "\e826"; } + +.ft-aperture:before { content: "\e827"; } + +.ft-arrow-left:before { content: "\e828"; } + +.ft-arrow-right:before { content: "\e829"; } + +.ft-arrow-down:before { content: "\e82a"; } + +.ft-arrow-up-left:before { content: "\e82b"; } + +.ft-arrow-up-right:before { content: "\e82c"; } + +.ft-arrow-up:before { content: "\e82d"; } + +.ft-award:before { content: "\e82e"; } + +.ft-bar-chart:before { content: "\e82f"; } + +.ft-at-sign:before { content: "\e830"; } + +.ft-bar-chart-2:before { content: "\e831"; } + +.ft-battery-charging:before { content: "\e832"; } + +.ft-bell-off:before { content: "\e833"; } + +.ft-battery:before { content: "\e834"; } + +.ft-bluetooth:before { content: "\e835"; } + +.ft-bell:before { content: "\e836"; } + +.ft-book:before { content: "\e837"; } + +.ft-briefcase:before { content: "\e838"; } + +.ft-camera-off:before { content: "\e839"; } + +.ft-calendar:before { content: "\e83a"; } + +.ft-bookmark:before { content: "\e83b"; } + +.ft-box:before { content: "\e83c"; } + +.ft-camera:before { content: "\e83d"; } + +.ft-check-circle:before { content: "\e83e"; } + +.ft-check:before { content: "\e83f"; } + +.ft-check-square:before { content: "\e840"; } + +.ft-cast:before { content: "\e841"; } + +.ft-chevron-down:before { content: "\e842"; } + +.ft-chevron-left:before { content: "\e843"; } + +.ft-chevron-right:before { content: "\e844"; } + +.ft-chevron-up:before { content: "\e845"; } + +.ft-chevrons-down:before { content: "\e846"; } + +.ft-chevrons-right:before { content: "\e847"; } + +.ft-chevrons-up:before { content: "\e848"; } + +.ft-chevrons-left:before { content: "\e849"; } + +.ft-circle:before { content: "\e84a"; } + +.ft-clipboard:before { content: "\e84b"; } + +.ft-chrome:before { content: "\e84c"; } + +.ft-clock:before { content: "\e84d"; } + +.ft-cloud-lightning:before { content: "\e84e"; } + +.ft-cloud-drizzle:before { content: "\e84f"; } + +.ft-cloud-rain:before { content: "\e850"; } + +.ft-cloud-off:before { content: "\e851"; } + +.ft-codepen:before { content: "\e852"; } + +.ft-cloud-snow:before { content: "\e853"; } + +.ft-compass:before { content: "\e854"; } + +.ft-copy:before { content: "\e855"; } + +.ft-corner-down-right:before { content: "\e856"; } + +.ft-corner-down-left:before { content: "\e857"; } + +.ft-corner-left-down:before { content: "\e858"; } + +.ft-corner-left-up:before { content: "\e859"; } + +.ft-corner-up-left:before { content: "\e85a"; } + +.ft-corner-up-right:before { content: "\e85b"; } + +.ft-corner-right-down:before { content: "\e85c"; } + +.ft-corner-right-up:before { content: "\e85d"; } + +.ft-cpu:before { content: "\e85e"; } + +.ft-credit-card:before { content: "\e85f"; } + +.ft-crosshair:before { content: "\e860"; } + +.ft-disc:before { content: "\e861"; } + +.ft-delete:before { content: "\e862"; } + +.ft-download-cloud:before { content: "\e863"; } + +.ft-download:before { content: "\e864"; } + +.ft-droplet:before { content: "\e865"; } + +.ft-edit-2:before { content: "\e866"; } + +.ft-edit:before { content: "\e867"; } + +.ft-edit-1:before { content: "\e868"; } + +.ft-external-link:before { content: "\e869"; } + +.ft-eye:before { content: "\e86a"; } + +.ft-feather:before { content: "\e86b"; } + +.ft-facebook:before { content: "\e86c"; } + +.ft-file-minus:before { content: "\e86d"; } + +.ft-eye-off:before { content: "\e86e"; } + +.ft-fast-forward:before { content: "\e86f"; } + +.ft-file-text:before { content: "\e870"; } + +.ft-film:before { content: "\e871"; } + +.ft-file:before { content: "\e872"; } + +.ft-file-plus:before { content: "\e873"; } + +.ft-folder:before { content: "\e874"; } + +.ft-filter:before { content: "\e875"; } + +.ft-flag:before { content: "\e876"; } + +.ft-globe:before { content: "\e877"; } + +.ft-grid:before { content: "\e878"; } + +.ft-heart:before { content: "\e879"; } + +.ft-home:before { content: "\e87a"; } + +.ft-github:before { content: "\e87b"; } + +.ft-image:before { content: "\e87c"; } + +.ft-inbox:before { content: "\e87d"; } + +.ft-layers:before { content: "\e87e"; } + +.ft-info:before { content: "\e87f"; } + +.ft-instagram:before { content: "\e880"; } + +.ft-layout:before { content: "\e881"; } + +.ft-link-2:before { content: "\e882"; } + +.ft-life-buoy:before { content: "\e883"; } + +.ft-link:before { content: "\e884"; } + +.ft-log-in:before { content: "\e885"; } + +.ft-list:before { content: "\e886"; } + +.ft-lock:before { content: "\e887"; } + +.ft-log-out:before { content: "\e888"; } + +.ft-loader:before { content: "\e889"; } + +.ft-mail:before { content: "\e88a"; } + +.ft-maximize-2:before { content: "\e88b"; } + +.ft-map:before { content: "\e88c"; } + +.ft-map-pin:before { content: "\e88e"; } + +.ft-menu:before { content: "\e88f"; } + +.ft-message-circle:before { content: "\e890"; } + +.ft-message-square:before { content: "\e891"; } + +.ft-minimize-2:before { content: "\e892"; } + +.ft-mic-off:before { content: "\e893"; } + +.ft-minus-circle:before { content: "\e894"; } + +.ft-mic:before { content: "\e895"; } + +.ft-minus-square:before { content: "\e896"; } + +.ft-minus:before { content: "\e897"; } + +.ft-moon:before { content: "\e898"; } + +.ft-monitor:before { content: "\e899"; } + +.ft-more-vertical:before { content: "\e89a"; } + +.ft-more-horizontal:before { content: "\e89b"; } + +.ft-move:before { content: "\e89c"; } + +.ft-music:before { content: "\e89d"; } + +.ft-navigation-2:before { content: "\e89e"; } + +.ft-navigation:before { content: "\e89f"; } + +.ft-octagon:before { content: "\e8a0"; } + +.ft-package:before { content: "\e8a1"; } + +.ft-pause-circle:before { content: "\e8a2"; } + +.ft-pause:before { content: "\e8a3"; } + +.ft-percent:before { content: "\e8a4"; } + +.ft-phone-call:before { content: "\e8a5"; } + +.ft-phone-forwarded:before { content: "\e8a6"; } + +.ft-phone-missed:before { content: "\e8a7"; } + +.ft-phone-off:before { content: "\e8a8"; } + +.ft-phone-incoming:before { content: "\e8a9"; } + +.ft-phone:before { content: "\e8aa"; } + +.ft-phone-outgoing:before { content: "\e8ab"; } + +.ft-pie-chart:before { content: "\e8ac"; } + +.ft-play-circle:before { content: "\e8ad"; } + +.ft-play:before { content: "\e8ae"; } + +.ft-plus-square:before { content: "\e8af"; } + +.ft-plus-circle:before { content: "\e8b0"; } + +.ft-plus:before { content: "\e8b1"; } + +.ft-pocket:before { content: "\e8b2"; } + +.ft-printer:before { content: "\e8b3"; } + +.ft-power:before { content: "\e8b4"; } + +.ft-radio:before { content: "\e8b5"; } + +.ft-repeat:before { content: "\e8b6"; } + +.ft-refresh-ccw:before { content: "\e8b7"; } + +.ft-rewind:before { content: "\e8b8"; } + +.ft-rotate-ccw:before { content: "\e8b9"; } + +.ft-refresh-cw:before { content: "\e8ba"; } + +.ft-rotate-cw:before { content: "\e8bb"; } + +.ft-save:before { content: "\e8bc"; } + +.ft-search:before { content: "\e8bd"; } + +.ft-server:before { content: "\e8be"; } + +.ft-scissors:before { content: "\e8bf"; } + +.ft-share-2:before { content: "\e8c0"; } + +.ft-share:before { content: "\e8c1"; } + +.ft-shield:before { content: "\e8c2"; } + +.ft-settings:before { content: "\e8c3"; } + +.ft-skip-back:before { content: "\e8c4"; } + +.ft-shuffle:before { content: "\e8c5"; } + +.ft-sidebar:before { content: "\e8c6"; } + +.ft-skip-forward:before { content: "\e8c7"; } + +.ft-slack:before { content: "\e8c8"; } + +.ft-slash:before { content: "\e8c9"; } + +.ft-smartphone:before { content: "\e8ca"; } + +.ft-square:before { content: "\e8cb"; } + +.ft-speaker:before { content: "\e8cc"; } + +.ft-star:before { content: "\e8cd"; } + +.ft-stop-circle:before { content: "\e8ce"; } + +.ft-sun:before { content: "\e8cf"; } + +.ft-sunrise:before { content: "\e8d0"; } + +.ft-tablet:before { content: "\e8d1"; } + +.ft-tag:before { content: "\e8d2"; } + +.ft-sunset:before { content: "\e8d3"; } + +.ft-target:before { content: "\e8d4"; } + +.ft-thermometer:before { content: "\e8d5"; } + +.ft-thumbs-up:before { content: "\e8d6"; } + +.ft-thumbs-down:before { content: "\e8d7"; } + +.ft-toggle-left:before { content: "\e8d8"; } + +.ft-toggle-right:before { content: "\e8d9"; } + +.ft-trash-2:before { content: "\e8da"; } + +.ft-trash:before { content: "\e8db"; } + +.ft-trending-up:before { content: "\e8dc"; } + +.ft-trending-down:before { content: "\e8dd"; } + +.ft-triangle:before { content: "\e8de"; } + +.ft-type:before { content: "\e8df"; } + +.ft-twitter:before { content: "\e8e0"; } + +.ft-upload:before { content: "\e8e1"; } + +.ft-umbrella:before { content: "\e8e2"; } + +.ft-upload-cloud:before { content: "\e8e3"; } + +.ft-unlock:before { content: "\e8e4"; } + +.ft-user-check:before { content: "\e8e5"; } + +.ft-user-minus:before { content: "\e8e6"; } + +.ft-user-plus:before { content: "\e8e7"; } + +.ft-user-x:before { content: "\e8e8"; } + +.ft-user:before { content: "\e8e9"; } + +.ft-users:before { content: "\e8ea"; } + +.ft-video-off:before { content: "\e8eb"; } + +.ft-video:before { content: "\e8ec"; } + +.ft-voicemail:before { content: "\e8ed"; } + +.ft-volume-x:before { content: "\e8ee"; } + +.ft-volume-2:before { content: "\e8ef"; } + +.ft-volume-1:before { content: "\e8f0"; } + +.ft-volume:before { content: "\e8f1"; } + +.ft-watch:before { content: "\e8f2"; } + +.ft-wifi:before { content: "\e8f3"; } + +.ft-x-square:before { content: "\e8f4"; } + +.ft-wind:before { content: "\e8f5"; } + +.ft-x:before { content: "\e8f6"; } + +.ft-x-circle:before { content: "\e8f7"; } + +.ft-zap:before { content: "\e8f8"; } + +.ft-zoom-in:before { content: "\e8f9"; } + +.ft-zoom-out:before { content: "\e8fa"; } + +.ft-command:before { content: "\e8fb"; } + +.ft-cloud:before { content: "\e8fc"; } + +.ft-hash:before { content: "\e8fd"; } + +.ft-headphones:before { content: "\e8fe"; } + +.ft-underline:before { content: "\e8ff"; } + +.ft-italic:before { content: "\e900"; } + +.ft-bold:before { content: "\e901"; } + +.ft-crop:before { content: "\e902"; } + +.ft-help-circle:before { content: "\e903"; } + +.ft-paperclip:before { content: "\e904"; } + +.ft-shopping-cart:before { content: "\e905"; } + +.ft-tv:before { content: "\e906"; } + +.ft-wifi-off:before { content: "\e907"; } + +.ft-minimize:before { content: "\e88d"; } + +.ft-maximize:before { content: "\e908"; } + +.ft-gitlab:before { content: "\e909"; } + +.ft-sliders:before { content: "\e90a"; } + +.ft-star-on:before { content: "\e90b"; } + +.ft-heart-on:before { content: "\e90c"; } + +.ft-archive:before { content: "\e90d"; } + +.ft-arrow-down-circle:before { content: "\e90e"; } + +.ft-arrow-up-circle:before { content: "\e90f"; } + +.ft-arrow-left-circle:before { content: "\e910"; } + +.ft-arrow-right-circle:before { content: "\e911"; } + +.ft-bar-chart-line-:before { content: "\e912"; } + +.ft-bar-chart-line:before { content: "\e913"; } + +.ft-book-open:before { content: "\e914"; } + +.ft-code:before { content: "\e915"; } + +.ft-database:before { content: "\e916"; } + +.ft-dollar-sign:before { content: "\e917"; } + +.ft-folder-plus:before { content: "\e918"; } + +.ft-gift:before { content: "\e919"; } + +.ft-folder-minus:before { content: "\e91a"; } + +.ft-git-commit:before { content: "\e91b"; } + +.ft-git-branch:before { content: "\e91c"; } + +.ft-git-pull-request:before { content: "\e91d"; } + +.ft-git-merge:before { content: "\e91e"; } + +.ft-linkedin:before { content: "\e91f"; } + +.ft-hard-drive:before { content: "\e920"; } + +.ft-more-vertical-:before { content: "\e921"; } + +.ft-more-horizontal-:before { content: "\e922"; } + +.ft-rss:before { content: "\e923"; } + +.ft-send:before { content: "\e924"; } + +.ft-shield-off:before { content: "\e925"; } + +.ft-shopping-bag:before { content: "\e926"; } + +.ft-terminal:before { content: "\e927"; } + +.ft-truck:before { content: "\e928"; } + +.ft-zap-off:before { content: "\e929"; } + +.ft-youtube:before { content: "\e92a"; } diff --git a/src/assets/fonts/feather/style.min.css b/src/assets/fonts/feather/style.min.css new file mode 100644 index 0000000..2141e2e --- /dev/null +++ b/src/assets/fonts/feather/style.min.css @@ -0,0 +1 @@ +@font-face{font-family:feather;src:url(fonts/feather.eot?t=1525787366991);src:url(fonts/feather.eot?t=1525787366991#iefix) format('embedded-opentype'),url(fonts/feather.woff?t=1525787366991) format('woff'),url(fonts/feather.ttf?t=1525787366991) format('truetype'),url(fonts/feather.svg?t=1525787366991#feather) format('svg')}.feather{font-family:feather!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ft-alert-octagon:before{content:"\e81b"}.ft-alert-circle:before{content:"\e81c"}.ft-activity:before{content:"\e81d"}.ft-alert-triangle:before{content:"\e81e"}.ft-align-center:before{content:"\e81f"}.ft-airplay:before{content:"\e820"}.ft-align-justify:before{content:"\e821"}.ft-align-left:before{content:"\e822"}.ft-align-right:before{content:"\e823"}.ft-arrow-down-left:before{content:"\e824"}.ft-arrow-down-right:before{content:"\e825"}.ft-anchor:before{content:"\e826"}.ft-aperture:before{content:"\e827"}.ft-arrow-left:before{content:"\e828"}.ft-arrow-right:before{content:"\e829"}.ft-arrow-down:before{content:"\e82a"}.ft-arrow-up-left:before{content:"\e82b"}.ft-arrow-up-right:before{content:"\e82c"}.ft-arrow-up:before{content:"\e82d"}.ft-award:before{content:"\e82e"}.ft-bar-chart:before{content:"\e82f"}.ft-at-sign:before{content:"\e830"}.ft-bar-chart-2:before{content:"\e831"}.ft-battery-charging:before{content:"\e832"}.ft-bell-off:before{content:"\e833"}.ft-battery:before{content:"\e834"}.ft-bluetooth:before{content:"\e835"}.ft-bell:before{content:"\e836"}.ft-book:before{content:"\e837"}.ft-briefcase:before{content:"\e838"}.ft-camera-off:before{content:"\e839"}.ft-calendar:before{content:"\e83a"}.ft-bookmark:before{content:"\e83b"}.ft-box:before{content:"\e83c"}.ft-camera:before{content:"\e83d"}.ft-check-circle:before{content:"\e83e"}.ft-check:before{content:"\e83f"}.ft-check-square:before{content:"\e840"}.ft-cast:before{content:"\e841"}.ft-chevron-down:before{content:"\e842"}.ft-chevron-left:before{content:"\e843"}.ft-chevron-right:before{content:"\e844"}.ft-chevron-up:before{content:"\e845"}.ft-chevrons-down:before{content:"\e846"}.ft-chevrons-right:before{content:"\e847"}.ft-chevrons-up:before{content:"\e848"}.ft-chevrons-left:before{content:"\e849"}.ft-circle:before{content:"\e84a"}.ft-clipboard:before{content:"\e84b"}.ft-chrome:before{content:"\e84c"}.ft-clock:before{content:"\e84d"}.ft-cloud-lightning:before{content:"\e84e"}.ft-cloud-drizzle:before{content:"\e84f"}.ft-cloud-rain:before{content:"\e850"}.ft-cloud-off:before{content:"\e851"}.ft-codepen:before{content:"\e852"}.ft-cloud-snow:before{content:"\e853"}.ft-compass:before{content:"\e854"}.ft-copy:before{content:"\e855"}.ft-corner-down-right:before{content:"\e856"}.ft-corner-down-left:before{content:"\e857"}.ft-corner-left-down:before{content:"\e858"}.ft-corner-left-up:before{content:"\e859"}.ft-corner-up-left:before{content:"\e85a"}.ft-corner-up-right:before{content:"\e85b"}.ft-corner-right-down:before{content:"\e85c"}.ft-corner-right-up:before{content:"\e85d"}.ft-cpu:before{content:"\e85e"}.ft-credit-card:before{content:"\e85f"}.ft-crosshair:before{content:"\e860"}.ft-disc:before{content:"\e861"}.ft-delete:before{content:"\e862"}.ft-download-cloud:before{content:"\e863"}.ft-download:before{content:"\e864"}.ft-droplet:before{content:"\e865"}.ft-edit-2:before{content:"\e866"}.ft-edit:before{content:"\e867"}.ft-edit-1:before{content:"\e868"}.ft-external-link:before{content:"\e869"}.ft-eye:before{content:"\e86a"}.ft-feather:before{content:"\e86b"}.ft-facebook:before{content:"\e86c"}.ft-file-minus:before{content:"\e86d"}.ft-eye-off:before{content:"\e86e"}.ft-fast-forward:before{content:"\e86f"}.ft-file-text:before{content:"\e870"}.ft-film:before{content:"\e871"}.ft-file:before{content:"\e872"}.ft-file-plus:before{content:"\e873"}.ft-folder:before{content:"\e874"}.ft-filter:before{content:"\e875"}.ft-flag:before{content:"\e876"}.ft-globe:before{content:"\e877"}.ft-grid:before{content:"\e878"}.ft-heart:before{content:"\e879"}.ft-home:before{content:"\e87a"}.ft-github:before{content:"\e87b"}.ft-image:before{content:"\e87c"}.ft-inbox:before{content:"\e87d"}.ft-layers:before{content:"\e87e"}.ft-info:before{content:"\e87f"}.ft-instagram:before{content:"\e880"}.ft-layout:before{content:"\e881"}.ft-link-2:before{content:"\e882"}.ft-life-buoy:before{content:"\e883"}.ft-link:before{content:"\e884"}.ft-log-in:before{content:"\e885"}.ft-list:before{content:"\e886"}.ft-lock:before{content:"\e887"}.ft-log-out:before{content:"\e888"}.ft-loader:before{content:"\e889"}.ft-mail:before{content:"\e88a"}.ft-maximize-2:before{content:"\e88b"}.ft-map:before{content:"\e88c"}.ft-map-pin:before{content:"\e88e"}.ft-menu:before{content:"\e88f"}.ft-message-circle:before{content:"\e890"}.ft-message-square:before{content:"\e891"}.ft-minimize-2:before{content:"\e892"}.ft-mic-off:before{content:"\e893"}.ft-minus-circle:before{content:"\e894"}.ft-mic:before{content:"\e895"}.ft-minus-square:before{content:"\e896"}.ft-minus:before{content:"\e897"}.ft-moon:before{content:"\e898"}.ft-monitor:before{content:"\e899"}.ft-more-vertical:before{content:"\e89a"}.ft-more-horizontal:before{content:"\e89b"}.ft-move:before{content:"\e89c"}.ft-music:before{content:"\e89d"}.ft-navigation-2:before{content:"\e89e"}.ft-navigation:before{content:"\e89f"}.ft-octagon:before{content:"\e8a0"}.ft-package:before{content:"\e8a1"}.ft-pause-circle:before{content:"\e8a2"}.ft-pause:before{content:"\e8a3"}.ft-percent:before{content:"\e8a4"}.ft-phone-call:before{content:"\e8a5"}.ft-phone-forwarded:before{content:"\e8a6"}.ft-phone-missed:before{content:"\e8a7"}.ft-phone-off:before{content:"\e8a8"}.ft-phone-incoming:before{content:"\e8a9"}.ft-phone:before{content:"\e8aa"}.ft-phone-outgoing:before{content:"\e8ab"}.ft-pie-chart:before{content:"\e8ac"}.ft-play-circle:before{content:"\e8ad"}.ft-play:before{content:"\e8ae"}.ft-plus-square:before{content:"\e8af"}.ft-plus-circle:before{content:"\e8b0"}.ft-plus:before{content:"\e8b1"}.ft-pocket:before{content:"\e8b2"}.ft-printer:before{content:"\e8b3"}.ft-power:before{content:"\e8b4"}.ft-radio:before{content:"\e8b5"}.ft-repeat:before{content:"\e8b6"}.ft-refresh-ccw:before{content:"\e8b7"}.ft-rewind:before{content:"\e8b8"}.ft-rotate-ccw:before{content:"\e8b9"}.ft-refresh-cw:before{content:"\e8ba"}.ft-rotate-cw:before{content:"\e8bb"}.ft-save:before{content:"\e8bc"}.ft-search:before{content:"\e8bd"}.ft-server:before{content:"\e8be"}.ft-scissors:before{content:"\e8bf"}.ft-share-2:before{content:"\e8c0"}.ft-share:before{content:"\e8c1"}.ft-shield:before{content:"\e8c2"}.ft-settings:before{content:"\e8c3"}.ft-skip-back:before{content:"\e8c4"}.ft-shuffle:before{content:"\e8c5"}.ft-sidebar:before{content:"\e8c6"}.ft-skip-forward:before{content:"\e8c7"}.ft-slack:before{content:"\e8c8"}.ft-slash:before{content:"\e8c9"}.ft-smartphone:before{content:"\e8ca"}.ft-square:before{content:"\e8cb"}.ft-speaker:before{content:"\e8cc"}.ft-star:before{content:"\e8cd"}.ft-stop-circle:before{content:"\e8ce"}.ft-sun:before{content:"\e8cf"}.ft-sunrise:before{content:"\e8d0"}.ft-tablet:before{content:"\e8d1"}.ft-tag:before{content:"\e8d2"}.ft-sunset:before{content:"\e8d3"}.ft-target:before{content:"\e8d4"}.ft-thermometer:before{content:"\e8d5"}.ft-thumbs-up:before{content:"\e8d6"}.ft-thumbs-down:before{content:"\e8d7"}.ft-toggle-left:before{content:"\e8d8"}.ft-toggle-right:before{content:"\e8d9"}.ft-trash-2:before{content:"\e8da"}.ft-trash:before{content:"\e8db"}.ft-trending-up:before{content:"\e8dc"}.ft-trending-down:before{content:"\e8dd"}.ft-triangle:before{content:"\e8de"}.ft-type:before{content:"\e8df"}.ft-twitter:before{content:"\e8e0"}.ft-upload:before{content:"\e8e1"}.ft-umbrella:before{content:"\e8e2"}.ft-upload-cloud:before{content:"\e8e3"}.ft-unlock:before{content:"\e8e4"}.ft-user-check:before{content:"\e8e5"}.ft-user-minus:before{content:"\e8e6"}.ft-user-plus:before{content:"\e8e7"}.ft-user-x:before{content:"\e8e8"}.ft-user:before{content:"\e8e9"}.ft-users:before{content:"\e8ea"}.ft-video-off:before{content:"\e8eb"}.ft-video:before{content:"\e8ec"}.ft-voicemail:before{content:"\e8ed"}.ft-volume-x:before{content:"\e8ee"}.ft-volume-2:before{content:"\e8ef"}.ft-volume-1:before{content:"\e8f0"}.ft-volume:before{content:"\e8f1"}.ft-watch:before{content:"\e8f2"}.ft-wifi:before{content:"\e8f3"}.ft-x-square:before{content:"\e8f4"}.ft-wind:before{content:"\e8f5"}.ft-x:before{content:"\e8f6"}.ft-x-circle:before{content:"\e8f7"}.ft-zap:before{content:"\e8f8"}.ft-zoom-in:before{content:"\e8f9"}.ft-zoom-out:before{content:"\e8fa"}.ft-command:before{content:"\e8fb"}.ft-cloud:before{content:"\e8fc"}.ft-hash:before{content:"\e8fd"}.ft-headphones:before{content:"\e8fe"}.ft-underline:before{content:"\e8ff"}.ft-italic:before{content:"\e900"}.ft-bold:before{content:"\e901"}.ft-crop:before{content:"\e902"}.ft-help-circle:before{content:"\e903"}.ft-paperclip:before{content:"\e904"}.ft-shopping-cart:before{content:"\e905"}.ft-tv:before{content:"\e906"}.ft-wifi-off:before{content:"\e907"}.ft-minimize:before{content:"\e88d"}.ft-maximize:before{content:"\e908"}.ft-gitlab:before{content:"\e909"}.ft-sliders:before{content:"\e90a"}.ft-star-on:before{content:"\e90b"}.ft-heart-on:before{content:"\e90c"}.ft-archive:before{content:"\e90d"}.ft-arrow-down-circle:before{content:"\e90e"}.ft-arrow-up-circle:before{content:"\e90f"}.ft-arrow-left-circle:before{content:"\e910"}.ft-arrow-right-circle:before{content:"\e911"}.ft-bar-chart-line-:before{content:"\e912"}.ft-bar-chart-line:before{content:"\e913"}.ft-book-open:before{content:"\e914"}.ft-code:before{content:"\e915"}.ft-database:before{content:"\e916"}.ft-dollar-sign:before{content:"\e917"}.ft-folder-plus:before{content:"\e918"}.ft-gift:before{content:"\e919"}.ft-folder-minus:before{content:"\e91a"}.ft-git-commit:before{content:"\e91b"}.ft-git-branch:before{content:"\e91c"}.ft-git-pull-request:before{content:"\e91d"}.ft-git-merge:before{content:"\e91e"}.ft-linkedin:before{content:"\e91f"}.ft-hard-drive:before{content:"\e920"}.ft-more-vertical-:before{content:"\e921"}.ft-more-horizontal-:before{content:"\e922"}.ft-rss:before{content:"\e923"}.ft-send:before{content:"\e924"}.ft-shield-off:before{content:"\e925"}.ft-shopping-bag:before{content:"\e926"}.ft-terminal:before{content:"\e927"}.ft-truck:before{content:"\e928"}.ft-zap-off:before{content:"\e929"}.ft-youtube:before{content:"\e92a"} diff --git a/src/assets/fonts/flag-icon-css/LICENSE b/src/assets/fonts/flag-icon-css/LICENSE new file mode 100644 index 0000000..ee959dc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Panayiotis Lipiridis + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/assets/fonts/flag-icon-css/README.md b/src/assets/fonts/flag-icon-css/README.md new file mode 100644 index 0000000..67714a2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/README.md @@ -0,0 +1,70 @@ +flag-icon-css +============= +[![npm version](https://badge.fury.io/js/flag-icon-css.svg)](https://badge.fury.io/js/flag-icon-css) +[![Bower version](https://badge.fury.io/bo/flag-icon-css.svg)](https://badge.fury.io/bo/flag-icon-css) + +A collection of all country flags in SVG — plus the CSS for easier integration. +See the [demo](http://lipis.github.io/flag-icon-css/). + +Usage +----- + +For using the flags inline with text add the classes `.flag-icon` and +`.flag-icon-xx` (where `xx` is the +[ISO 3166-1-alpha-2 code](http://www.iso.org/iso/country_names_and_code_elements) +of a country) to an empty ``. If you want to have a squared version flag +then add the class `flag-icon-squared` as well. Example: + +```html + + +``` + +You could also apply this to any element, but in that case you'll have to use the +`flag-icon-background` instead of `flag-icon` and you're set. This will add the +correct background with the following CSS properties: + +```css +background-size: contain; +background-position: 50%; +background-repeat: no-repeat; +``` + +Which means that the flag is just going to appear in the middle of an element, so +you will have to set manually the correct size of 4 by 3 ratio or if it's squared +add also the `flag-icon-squared` class. + +Development +----------- + +Run the `npm install` to install the dependencies after cloning the project and +you'll be able to: + +To watch for changes and live reload if served + +```bash +$ grunt +``` + +To build `*.less` files + +```bash +$ grunt build +``` + +To serve it on `localhost:8000` + +```bash +$ grunt connect +``` + +To have only specific countries in the css file, remove the ones that you don't +need from the +[`flag-icon-list.less`](https://github.com/lipis/flag-icon-css/blob/master/less/flag-icon-list.less) +file and build it again. + +Credits +------- + +This project wouldn't exist without the awesome and now deleted collection of +SVG flags by [koppi](https://github.com/koppi). diff --git a/src/assets/fonts/flag-icon-css/css/flag-icon.css b/src/assets/fonts/flag-icon-css/css/flag-icon.css new file mode 100644 index 0000000..44ed6d0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/css/flag-icon.css @@ -0,0 +1,1538 @@ +.flag-icon-background { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; +} +.flag-icon { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; + position: relative; + display: inline-block; + width: 1.33333333em; + line-height: 1em; +} +.flag-icon:before { + content: "\00a0"; +} +.flag-icon.flag-icon-squared { + width: 1em; +} +.flag-icon-ad { + background-image: url(../flags/4x3/ad.svg); +} +.flag-icon-ad.flag-icon-squared { + background-image: url(../flags/1x1/ad.svg); +} +.flag-icon-ae { + background-image: url(../flags/4x3/ae.svg); +} +.flag-icon-ae.flag-icon-squared { + background-image: url(../flags/1x1/ae.svg); +} +.flag-icon-af { + background-image: url(../flags/4x3/af.svg); +} +.flag-icon-af.flag-icon-squared { + background-image: url(../flags/1x1/af.svg); +} +.flag-icon-ag { + background-image: url(../flags/4x3/ag.svg); +} +.flag-icon-ag.flag-icon-squared { + background-image: url(../flags/1x1/ag.svg); +} +.flag-icon-ai { + background-image: url(../flags/4x3/ai.svg); +} +.flag-icon-ai.flag-icon-squared { + background-image: url(../flags/1x1/ai.svg); +} +.flag-icon-al { + background-image: url(../flags/4x3/al.svg); +} +.flag-icon-al.flag-icon-squared { + background-image: url(../flags/1x1/al.svg); +} +.flag-icon-am { + background-image: url(../flags/4x3/am.svg); +} +.flag-icon-am.flag-icon-squared { + background-image: url(../flags/1x1/am.svg); +} +.flag-icon-ao { + background-image: url(../flags/4x3/ao.svg); +} +.flag-icon-ao.flag-icon-squared { + background-image: url(../flags/1x1/ao.svg); +} +.flag-icon-aq { + background-image: url(../flags/4x3/aq.svg); +} +.flag-icon-aq.flag-icon-squared { + background-image: url(../flags/1x1/aq.svg); +} +.flag-icon-ar { + background-image: url(../flags/4x3/ar.svg); +} +.flag-icon-ar.flag-icon-squared { + background-image: url(../flags/1x1/ar.svg); +} +.flag-icon-as { + background-image: url(../flags/4x3/as.svg); +} +.flag-icon-as.flag-icon-squared { + background-image: url(../flags/1x1/as.svg); +} +.flag-icon-at { + background-image: url(../flags/4x3/at.svg); +} +.flag-icon-at.flag-icon-squared { + background-image: url(../flags/1x1/at.svg); +} +.flag-icon-au { + background-image: url(../flags/4x3/au.svg); +} +.flag-icon-au.flag-icon-squared { + background-image: url(../flags/1x1/au.svg); +} +.flag-icon-aw { + background-image: url(../flags/4x3/aw.svg); +} +.flag-icon-aw.flag-icon-squared { + background-image: url(../flags/1x1/aw.svg); +} +.flag-icon-ax { + background-image: url(../flags/4x3/ax.svg); +} +.flag-icon-ax.flag-icon-squared { + background-image: url(../flags/1x1/ax.svg); +} +.flag-icon-az { + background-image: url(../flags/4x3/az.svg); +} +.flag-icon-az.flag-icon-squared { + background-image: url(../flags/1x1/az.svg); +} +.flag-icon-ba { + background-image: url(../flags/4x3/ba.svg); +} +.flag-icon-ba.flag-icon-squared { + background-image: url(../flags/1x1/ba.svg); +} +.flag-icon-bb { + background-image: url(../flags/4x3/bb.svg); +} +.flag-icon-bb.flag-icon-squared { + background-image: url(../flags/1x1/bb.svg); +} +.flag-icon-bd { + background-image: url(../flags/4x3/bd.svg); +} +.flag-icon-bd.flag-icon-squared { + background-image: url(../flags/1x1/bd.svg); +} +.flag-icon-be { + background-image: url(../flags/4x3/be.svg); +} +.flag-icon-be.flag-icon-squared { + background-image: url(../flags/1x1/be.svg); +} +.flag-icon-bf { + background-image: url(../flags/4x3/bf.svg); +} +.flag-icon-bf.flag-icon-squared { + background-image: url(../flags/1x1/bf.svg); +} +.flag-icon-bg { + background-image: url(../flags/4x3/bg.svg); +} +.flag-icon-bg.flag-icon-squared { + background-image: url(../flags/1x1/bg.svg); +} +.flag-icon-bh { + background-image: url(../flags/4x3/bh.svg); +} +.flag-icon-bh.flag-icon-squared { + background-image: url(../flags/1x1/bh.svg); +} +.flag-icon-bi { + background-image: url(../flags/4x3/bi.svg); +} +.flag-icon-bi.flag-icon-squared { + background-image: url(../flags/1x1/bi.svg); +} +.flag-icon-bj { + background-image: url(../flags/4x3/bj.svg); +} +.flag-icon-bj.flag-icon-squared { + background-image: url(../flags/1x1/bj.svg); +} +.flag-icon-bl { + background-image: url(../flags/4x3/bl.svg); +} +.flag-icon-bl.flag-icon-squared { + background-image: url(../flags/1x1/bl.svg); +} +.flag-icon-bm { + background-image: url(../flags/4x3/bm.svg); +} +.flag-icon-bm.flag-icon-squared { + background-image: url(../flags/1x1/bm.svg); +} +.flag-icon-bn { + background-image: url(../flags/4x3/bn.svg); +} +.flag-icon-bn.flag-icon-squared { + background-image: url(../flags/1x1/bn.svg); +} +.flag-icon-bo { + background-image: url(../flags/4x3/bo.svg); +} +.flag-icon-bo.flag-icon-squared { + background-image: url(../flags/1x1/bo.svg); +} +.flag-icon-bq { + background-image: url(../flags/4x3/bq.svg); +} +.flag-icon-bq.flag-icon-squared { + background-image: url(../flags/1x1/bq.svg); +} +.flag-icon-br { + background-image: url(../flags/4x3/br.svg); +} +.flag-icon-br.flag-icon-squared { + background-image: url(../flags/1x1/br.svg); +} +.flag-icon-bs { + background-image: url(../flags/4x3/bs.svg); +} +.flag-icon-bs.flag-icon-squared { + background-image: url(../flags/1x1/bs.svg); +} +.flag-icon-bt { + background-image: url(../flags/4x3/bt.svg); +} +.flag-icon-bt.flag-icon-squared { + background-image: url(../flags/1x1/bt.svg); +} +.flag-icon-bv { + background-image: url(../flags/4x3/bv.svg); +} +.flag-icon-bv.flag-icon-squared { + background-image: url(../flags/1x1/bv.svg); +} +.flag-icon-bw { + background-image: url(../flags/4x3/bw.svg); +} +.flag-icon-bw.flag-icon-squared { + background-image: url(../flags/1x1/bw.svg); +} +.flag-icon-by { + background-image: url(../flags/4x3/by.svg); +} +.flag-icon-by.flag-icon-squared { + background-image: url(../flags/1x1/by.svg); +} +.flag-icon-bz { + background-image: url(../flags/4x3/bz.svg); +} +.flag-icon-bz.flag-icon-squared { + background-image: url(../flags/1x1/bz.svg); +} +.flag-icon-ca { + background-image: url(../flags/4x3/ca.svg); +} +.flag-icon-ca.flag-icon-squared { + background-image: url(../flags/1x1/ca.svg); +} +.flag-icon-cc { + background-image: url(../flags/4x3/cc.svg); +} +.flag-icon-cc.flag-icon-squared { + background-image: url(../flags/1x1/cc.svg); +} +.flag-icon-cd { + background-image: url(../flags/4x3/cd.svg); +} +.flag-icon-cd.flag-icon-squared { + background-image: url(../flags/1x1/cd.svg); +} +.flag-icon-cf { + background-image: url(../flags/4x3/cf.svg); +} +.flag-icon-cf.flag-icon-squared { + background-image: url(../flags/1x1/cf.svg); +} +.flag-icon-cg { + background-image: url(../flags/4x3/cg.svg); +} +.flag-icon-cg.flag-icon-squared { + background-image: url(../flags/1x1/cg.svg); +} +.flag-icon-ch { + background-image: url(../flags/4x3/ch.svg); +} +.flag-icon-ch.flag-icon-squared { + background-image: url(../flags/1x1/ch.svg); +} +.flag-icon-ci { + background-image: url(../flags/4x3/ci.svg); +} +.flag-icon-ci.flag-icon-squared { + background-image: url(../flags/1x1/ci.svg); +} +.flag-icon-ck { + background-image: url(../flags/4x3/ck.svg); +} +.flag-icon-ck.flag-icon-squared { + background-image: url(../flags/1x1/ck.svg); +} +.flag-icon-cl { + background-image: url(../flags/4x3/cl.svg); +} +.flag-icon-cl.flag-icon-squared { + background-image: url(../flags/1x1/cl.svg); +} +.flag-icon-cm { + background-image: url(../flags/4x3/cm.svg); +} +.flag-icon-cm.flag-icon-squared { + background-image: url(../flags/1x1/cm.svg); +} +.flag-icon-cn { + background-image: url(../flags/4x3/cn.svg); +} +.flag-icon-cn.flag-icon-squared { + background-image: url(../flags/1x1/cn.svg); +} +.flag-icon-co { + background-image: url(../flags/4x3/co.svg); +} +.flag-icon-co.flag-icon-squared { + background-image: url(../flags/1x1/co.svg); +} +.flag-icon-cr { + background-image: url(../flags/4x3/cr.svg); +} +.flag-icon-cr.flag-icon-squared { + background-image: url(../flags/1x1/cr.svg); +} +.flag-icon-cu { + background-image: url(../flags/4x3/cu.svg); +} +.flag-icon-cu.flag-icon-squared { + background-image: url(../flags/1x1/cu.svg); +} +.flag-icon-cv { + background-image: url(../flags/4x3/cv.svg); +} +.flag-icon-cv.flag-icon-squared { + background-image: url(../flags/1x1/cv.svg); +} +.flag-icon-cw { + background-image: url(../flags/4x3/cw.svg); +} +.flag-icon-cw.flag-icon-squared { + background-image: url(../flags/1x1/cw.svg); +} +.flag-icon-cx { + background-image: url(../flags/4x3/cx.svg); +} +.flag-icon-cx.flag-icon-squared { + background-image: url(../flags/1x1/cx.svg); +} +.flag-icon-cy { + background-image: url(../flags/4x3/cy.svg); +} +.flag-icon-cy.flag-icon-squared { + background-image: url(../flags/1x1/cy.svg); +} +.flag-icon-cz { + background-image: url(../flags/4x3/cz.svg); +} +.flag-icon-cz.flag-icon-squared { + background-image: url(../flags/1x1/cz.svg); +} +.flag-icon-de { + background-image: url(../flags/4x3/de.svg); +} +.flag-icon-de.flag-icon-squared { + background-image: url(../flags/1x1/de.svg); +} +.flag-icon-dj { + background-image: url(../flags/4x3/dj.svg); +} +.flag-icon-dj.flag-icon-squared { + background-image: url(../flags/1x1/dj.svg); +} +.flag-icon-dk { + background-image: url(../flags/4x3/dk.svg); +} +.flag-icon-dk.flag-icon-squared { + background-image: url(../flags/1x1/dk.svg); +} +.flag-icon-dm { + background-image: url(../flags/4x3/dm.svg); +} +.flag-icon-dm.flag-icon-squared { + background-image: url(../flags/1x1/dm.svg); +} +.flag-icon-do { + background-image: url(../flags/4x3/do.svg); +} +.flag-icon-do.flag-icon-squared { + background-image: url(../flags/1x1/do.svg); +} +.flag-icon-dz { + background-image: url(../flags/4x3/dz.svg); +} +.flag-icon-dz.flag-icon-squared { + background-image: url(../flags/1x1/dz.svg); +} +.flag-icon-ec { + background-image: url(../flags/4x3/ec.svg); +} +.flag-icon-ec.flag-icon-squared { + background-image: url(../flags/1x1/ec.svg); +} +.flag-icon-ee { + background-image: url(../flags/4x3/ee.svg); +} +.flag-icon-ee.flag-icon-squared { + background-image: url(../flags/1x1/ee.svg); +} +.flag-icon-eg { + background-image: url(../flags/4x3/eg.svg); +} +.flag-icon-eg.flag-icon-squared { + background-image: url(../flags/1x1/eg.svg); +} +.flag-icon-eh { + background-image: url(../flags/4x3/eh.svg); +} +.flag-icon-eh.flag-icon-squared { + background-image: url(../flags/1x1/eh.svg); +} +.flag-icon-er { + background-image: url(../flags/4x3/er.svg); +} +.flag-icon-er.flag-icon-squared { + background-image: url(../flags/1x1/er.svg); +} +.flag-icon-es { + background-image: url(../flags/4x3/es.svg); +} +.flag-icon-es.flag-icon-squared { + background-image: url(../flags/1x1/es.svg); +} +.flag-icon-et { + background-image: url(../flags/4x3/et.svg); +} +.flag-icon-et.flag-icon-squared { + background-image: url(../flags/1x1/et.svg); +} +.flag-icon-fi { + background-image: url(../flags/4x3/fi.svg); +} +.flag-icon-fi.flag-icon-squared { + background-image: url(../flags/1x1/fi.svg); +} +.flag-icon-fj { + background-image: url(../flags/4x3/fj.svg); +} +.flag-icon-fj.flag-icon-squared { + background-image: url(../flags/1x1/fj.svg); +} +.flag-icon-fk { + background-image: url(../flags/4x3/fk.svg); +} +.flag-icon-fk.flag-icon-squared { + background-image: url(../flags/1x1/fk.svg); +} +.flag-icon-fm { + background-image: url(../flags/4x3/fm.svg); +} +.flag-icon-fm.flag-icon-squared { + background-image: url(../flags/1x1/fm.svg); +} +.flag-icon-fo { + background-image: url(../flags/4x3/fo.svg); +} +.flag-icon-fo.flag-icon-squared { + background-image: url(../flags/1x1/fo.svg); +} +.flag-icon-fr { + background-image: url(../flags/4x3/fr.svg); +} +.flag-icon-fr.flag-icon-squared { + background-image: url(../flags/1x1/fr.svg); +} +.flag-icon-ga { + background-image: url(../flags/4x3/ga.svg); +} +.flag-icon-ga.flag-icon-squared { + background-image: url(../flags/1x1/ga.svg); +} +.flag-icon-gb { + background-image: url(../flags/4x3/gb.svg); +} +.flag-icon-gb.flag-icon-squared { + background-image: url(../flags/1x1/gb.svg); +} +.flag-icon-gd { + background-image: url(../flags/4x3/gd.svg); +} +.flag-icon-gd.flag-icon-squared { + background-image: url(../flags/1x1/gd.svg); +} +.flag-icon-ge { + background-image: url(../flags/4x3/ge.svg); +} +.flag-icon-ge.flag-icon-squared { + background-image: url(../flags/1x1/ge.svg); +} +.flag-icon-gf { + background-image: url(../flags/4x3/gf.svg); +} +.flag-icon-gf.flag-icon-squared { + background-image: url(../flags/1x1/gf.svg); +} +.flag-icon-gg { + background-image: url(../flags/4x3/gg.svg); +} +.flag-icon-gg.flag-icon-squared { + background-image: url(../flags/1x1/gg.svg); +} +.flag-icon-gh { + background-image: url(../flags/4x3/gh.svg); +} +.flag-icon-gh.flag-icon-squared { + background-image: url(../flags/1x1/gh.svg); +} +.flag-icon-gi { + background-image: url(../flags/4x3/gi.svg); +} +.flag-icon-gi.flag-icon-squared { + background-image: url(../flags/1x1/gi.svg); +} +.flag-icon-gl { + background-image: url(../flags/4x3/gl.svg); +} +.flag-icon-gl.flag-icon-squared { + background-image: url(../flags/1x1/gl.svg); +} +.flag-icon-gm { + background-image: url(../flags/4x3/gm.svg); +} +.flag-icon-gm.flag-icon-squared { + background-image: url(../flags/1x1/gm.svg); +} +.flag-icon-gn { + background-image: url(../flags/4x3/gn.svg); +} +.flag-icon-gn.flag-icon-squared { + background-image: url(../flags/1x1/gn.svg); +} +.flag-icon-gp { + background-image: url(../flags/4x3/gp.svg); +} +.flag-icon-gp.flag-icon-squared { + background-image: url(../flags/1x1/gp.svg); +} +.flag-icon-gq { + background-image: url(../flags/4x3/gq.svg); +} +.flag-icon-gq.flag-icon-squared { + background-image: url(../flags/1x1/gq.svg); +} +.flag-icon-gr { + background-image: url(../flags/4x3/gr.svg); +} +.flag-icon-gr.flag-icon-squared { + background-image: url(../flags/1x1/gr.svg); +} +.flag-icon-gs { + background-image: url(../flags/4x3/gs.svg); +} +.flag-icon-gs.flag-icon-squared { + background-image: url(../flags/1x1/gs.svg); +} +.flag-icon-gt { + background-image: url(../flags/4x3/gt.svg); +} +.flag-icon-gt.flag-icon-squared { + background-image: url(../flags/1x1/gt.svg); +} +.flag-icon-gu { + background-image: url(../flags/4x3/gu.svg); +} +.flag-icon-gu.flag-icon-squared { + background-image: url(../flags/1x1/gu.svg); +} +.flag-icon-gw { + background-image: url(../flags/4x3/gw.svg); +} +.flag-icon-gw.flag-icon-squared { + background-image: url(../flags/1x1/gw.svg); +} +.flag-icon-gy { + background-image: url(../flags/4x3/gy.svg); +} +.flag-icon-gy.flag-icon-squared { + background-image: url(../flags/1x1/gy.svg); +} +.flag-icon-hk { + background-image: url(../flags/4x3/hk.svg); +} +.flag-icon-hk.flag-icon-squared { + background-image: url(../flags/1x1/hk.svg); +} +.flag-icon-hm { + background-image: url(../flags/4x3/hm.svg); +} +.flag-icon-hm.flag-icon-squared { + background-image: url(../flags/1x1/hm.svg); +} +.flag-icon-hn { + background-image: url(../flags/4x3/hn.svg); +} +.flag-icon-hn.flag-icon-squared { + background-image: url(../flags/1x1/hn.svg); +} +.flag-icon-hr { + background-image: url(../flags/4x3/hr.svg); +} +.flag-icon-hr.flag-icon-squared { + background-image: url(../flags/1x1/hr.svg); +} +.flag-icon-ht { + background-image: url(../flags/4x3/ht.svg); +} +.flag-icon-ht.flag-icon-squared { + background-image: url(../flags/1x1/ht.svg); +} +.flag-icon-hu { + background-image: url(../flags/4x3/hu.svg); +} +.flag-icon-hu.flag-icon-squared { + background-image: url(../flags/1x1/hu.svg); +} +.flag-icon-id { + background-image: url(../flags/4x3/id.svg); +} +.flag-icon-id.flag-icon-squared { + background-image: url(../flags/1x1/id.svg); +} +.flag-icon-ie { + background-image: url(../flags/4x3/ie.svg); +} +.flag-icon-ie.flag-icon-squared { + background-image: url(../flags/1x1/ie.svg); +} +.flag-icon-il { + background-image: url(../flags/4x3/il.svg); +} +.flag-icon-il.flag-icon-squared { + background-image: url(../flags/1x1/il.svg); +} +.flag-icon-im { + background-image: url(../flags/4x3/im.svg); +} +.flag-icon-im.flag-icon-squared { + background-image: url(../flags/1x1/im.svg); +} +.flag-icon-in { + background-image: url(../flags/4x3/in.svg); +} +.flag-icon-in.flag-icon-squared { + background-image: url(../flags/1x1/in.svg); +} +.flag-icon-io { + background-image: url(../flags/4x3/io.svg); +} +.flag-icon-io.flag-icon-squared { + background-image: url(../flags/1x1/io.svg); +} +.flag-icon-iq { + background-image: url(../flags/4x3/iq.svg); +} +.flag-icon-iq.flag-icon-squared { + background-image: url(../flags/1x1/iq.svg); +} +.flag-icon-ir { + background-image: url(../flags/4x3/ir.svg); +} +.flag-icon-ir.flag-icon-squared { + background-image: url(../flags/1x1/ir.svg); +} +.flag-icon-is { + background-image: url(../flags/4x3/is.svg); +} +.flag-icon-is.flag-icon-squared { + background-image: url(../flags/1x1/is.svg); +} +.flag-icon-it { + background-image: url(../flags/4x3/it.svg); +} +.flag-icon-it.flag-icon-squared { + background-image: url(../flags/1x1/it.svg); +} +.flag-icon-je { + background-image: url(../flags/4x3/je.svg); +} +.flag-icon-je.flag-icon-squared { + background-image: url(../flags/1x1/je.svg); +} +.flag-icon-jm { + background-image: url(../flags/4x3/jm.svg); +} +.flag-icon-jm.flag-icon-squared { + background-image: url(../flags/1x1/jm.svg); +} +.flag-icon-jo { + background-image: url(../flags/4x3/jo.svg); +} +.flag-icon-jo.flag-icon-squared { + background-image: url(../flags/1x1/jo.svg); +} +.flag-icon-jp { + background-image: url(../flags/4x3/jp.svg); +} +.flag-icon-jp.flag-icon-squared { + background-image: url(../flags/1x1/jp.svg); +} +.flag-icon-ke { + background-image: url(../flags/4x3/ke.svg); +} +.flag-icon-ke.flag-icon-squared { + background-image: url(../flags/1x1/ke.svg); +} +.flag-icon-kg { + background-image: url(../flags/4x3/kg.svg); +} +.flag-icon-kg.flag-icon-squared { + background-image: url(../flags/1x1/kg.svg); +} +.flag-icon-kh { + background-image: url(../flags/4x3/kh.svg); +} +.flag-icon-kh.flag-icon-squared { + background-image: url(../flags/1x1/kh.svg); +} +.flag-icon-ki { + background-image: url(../flags/4x3/ki.svg); +} +.flag-icon-ki.flag-icon-squared { + background-image: url(../flags/1x1/ki.svg); +} +.flag-icon-km { + background-image: url(../flags/4x3/km.svg); +} +.flag-icon-km.flag-icon-squared { + background-image: url(../flags/1x1/km.svg); +} +.flag-icon-kn { + background-image: url(../flags/4x3/kn.svg); +} +.flag-icon-kn.flag-icon-squared { + background-image: url(../flags/1x1/kn.svg); +} +.flag-icon-kp { + background-image: url(../flags/4x3/kp.svg); +} +.flag-icon-kp.flag-icon-squared { + background-image: url(../flags/1x1/kp.svg); +} +.flag-icon-kr { + background-image: url(../flags/4x3/kr.svg); +} +.flag-icon-kr.flag-icon-squared { + background-image: url(../flags/1x1/kr.svg); +} +.flag-icon-kw { + background-image: url(../flags/4x3/kw.svg); +} +.flag-icon-kw.flag-icon-squared { + background-image: url(../flags/1x1/kw.svg); +} +.flag-icon-ky { + background-image: url(../flags/4x3/ky.svg); +} +.flag-icon-ky.flag-icon-squared { + background-image: url(../flags/1x1/ky.svg); +} +.flag-icon-kz { + background-image: url(../flags/4x3/kz.svg); +} +.flag-icon-kz.flag-icon-squared { + background-image: url(../flags/1x1/kz.svg); +} +.flag-icon-la { + background-image: url(../flags/4x3/la.svg); +} +.flag-icon-la.flag-icon-squared { + background-image: url(../flags/1x1/la.svg); +} +.flag-icon-lb { + background-image: url(../flags/4x3/lb.svg); +} +.flag-icon-lb.flag-icon-squared { + background-image: url(../flags/1x1/lb.svg); +} +.flag-icon-lc { + background-image: url(../flags/4x3/lc.svg); +} +.flag-icon-lc.flag-icon-squared { + background-image: url(../flags/1x1/lc.svg); +} +.flag-icon-li { + background-image: url(../flags/4x3/li.svg); +} +.flag-icon-li.flag-icon-squared { + background-image: url(../flags/1x1/li.svg); +} +.flag-icon-lk { + background-image: url(../flags/4x3/lk.svg); +} +.flag-icon-lk.flag-icon-squared { + background-image: url(../flags/1x1/lk.svg); +} +.flag-icon-lr { + background-image: url(../flags/4x3/lr.svg); +} +.flag-icon-lr.flag-icon-squared { + background-image: url(../flags/1x1/lr.svg); +} +.flag-icon-ls { + background-image: url(../flags/4x3/ls.svg); +} +.flag-icon-ls.flag-icon-squared { + background-image: url(../flags/1x1/ls.svg); +} +.flag-icon-lt { + background-image: url(../flags/4x3/lt.svg); +} +.flag-icon-lt.flag-icon-squared { + background-image: url(../flags/1x1/lt.svg); +} +.flag-icon-lu { + background-image: url(../flags/4x3/lu.svg); +} +.flag-icon-lu.flag-icon-squared { + background-image: url(../flags/1x1/lu.svg); +} +.flag-icon-lv { + background-image: url(../flags/4x3/lv.svg); +} +.flag-icon-lv.flag-icon-squared { + background-image: url(../flags/1x1/lv.svg); +} +.flag-icon-ly { + background-image: url(../flags/4x3/ly.svg); +} +.flag-icon-ly.flag-icon-squared { + background-image: url(../flags/1x1/ly.svg); +} +.flag-icon-ma { + background-image: url(../flags/4x3/ma.svg); +} +.flag-icon-ma.flag-icon-squared { + background-image: url(../flags/1x1/ma.svg); +} +.flag-icon-mc { + background-image: url(../flags/4x3/mc.svg); +} +.flag-icon-mc.flag-icon-squared { + background-image: url(../flags/1x1/mc.svg); +} +.flag-icon-md { + background-image: url(../flags/4x3/md.svg); +} +.flag-icon-md.flag-icon-squared { + background-image: url(../flags/1x1/md.svg); +} +.flag-icon-me { + background-image: url(../flags/4x3/me.svg); +} +.flag-icon-me.flag-icon-squared { + background-image: url(../flags/1x1/me.svg); +} +.flag-icon-mf { + background-image: url(../flags/4x3/mf.svg); +} +.flag-icon-mf.flag-icon-squared { + background-image: url(../flags/1x1/mf.svg); +} +.flag-icon-mg { + background-image: url(../flags/4x3/mg.svg); +} +.flag-icon-mg.flag-icon-squared { + background-image: url(../flags/1x1/mg.svg); +} +.flag-icon-mh { + background-image: url(../flags/4x3/mh.svg); +} +.flag-icon-mh.flag-icon-squared { + background-image: url(../flags/1x1/mh.svg); +} +.flag-icon-mk { + background-image: url(../flags/4x3/mk.svg); +} +.flag-icon-mk.flag-icon-squared { + background-image: url(../flags/1x1/mk.svg); +} +.flag-icon-ml { + background-image: url(../flags/4x3/ml.svg); +} +.flag-icon-ml.flag-icon-squared { + background-image: url(../flags/1x1/ml.svg); +} +.flag-icon-mm { + background-image: url(../flags/4x3/mm.svg); +} +.flag-icon-mm.flag-icon-squared { + background-image: url(../flags/1x1/mm.svg); +} +.flag-icon-mn { + background-image: url(../flags/4x3/mn.svg); +} +.flag-icon-mn.flag-icon-squared { + background-image: url(../flags/1x1/mn.svg); +} +.flag-icon-mo { + background-image: url(../flags/4x3/mo.svg); +} +.flag-icon-mo.flag-icon-squared { + background-image: url(../flags/1x1/mo.svg); +} +.flag-icon-mp { + background-image: url(../flags/4x3/mp.svg); +} +.flag-icon-mp.flag-icon-squared { + background-image: url(../flags/1x1/mp.svg); +} +.flag-icon-mq { + background-image: url(../flags/4x3/mq.svg); +} +.flag-icon-mq.flag-icon-squared { + background-image: url(../flags/1x1/mq.svg); +} +.flag-icon-mr { + background-image: url(../flags/4x3/mr.svg); +} +.flag-icon-mr.flag-icon-squared { + background-image: url(../flags/1x1/mr.svg); +} +.flag-icon-ms { + background-image: url(../flags/4x3/ms.svg); +} +.flag-icon-ms.flag-icon-squared { + background-image: url(../flags/1x1/ms.svg); +} +.flag-icon-mt { + background-image: url(../flags/4x3/mt.svg); +} +.flag-icon-mt.flag-icon-squared { + background-image: url(../flags/1x1/mt.svg); +} +.flag-icon-mu { + background-image: url(../flags/4x3/mu.svg); +} +.flag-icon-mu.flag-icon-squared { + background-image: url(../flags/1x1/mu.svg); +} +.flag-icon-mv { + background-image: url(../flags/4x3/mv.svg); +} +.flag-icon-mv.flag-icon-squared { + background-image: url(../flags/1x1/mv.svg); +} +.flag-icon-mw { + background-image: url(../flags/4x3/mw.svg); +} +.flag-icon-mw.flag-icon-squared { + background-image: url(../flags/1x1/mw.svg); +} +.flag-icon-mx { + background-image: url(../flags/4x3/mx.svg); +} +.flag-icon-mx.flag-icon-squared { + background-image: url(../flags/1x1/mx.svg); +} +.flag-icon-my { + background-image: url(../flags/4x3/my.svg); +} +.flag-icon-my.flag-icon-squared { + background-image: url(../flags/1x1/my.svg); +} +.flag-icon-mz { + background-image: url(../flags/4x3/mz.svg); +} +.flag-icon-mz.flag-icon-squared { + background-image: url(../flags/1x1/mz.svg); +} +.flag-icon-na { + background-image: url(../flags/4x3/na.svg); +} +.flag-icon-na.flag-icon-squared { + background-image: url(../flags/1x1/na.svg); +} +.flag-icon-nc { + background-image: url(../flags/4x3/nc.svg); +} +.flag-icon-nc.flag-icon-squared { + background-image: url(../flags/1x1/nc.svg); +} +.flag-icon-ne { + background-image: url(../flags/4x3/ne.svg); +} +.flag-icon-ne.flag-icon-squared { + background-image: url(../flags/1x1/ne.svg); +} +.flag-icon-nf { + background-image: url(../flags/4x3/nf.svg); +} +.flag-icon-nf.flag-icon-squared { + background-image: url(../flags/1x1/nf.svg); +} +.flag-icon-ng { + background-image: url(../flags/4x3/ng.svg); +} +.flag-icon-ng.flag-icon-squared { + background-image: url(../flags/1x1/ng.svg); +} +.flag-icon-ni { + background-image: url(../flags/4x3/ni.svg); +} +.flag-icon-ni.flag-icon-squared { + background-image: url(../flags/1x1/ni.svg); +} +.flag-icon-nl { + background-image: url(../flags/4x3/nl.svg); +} +.flag-icon-nl.flag-icon-squared { + background-image: url(../flags/1x1/nl.svg); +} +.flag-icon-no { + background-image: url(../flags/4x3/no.svg); +} +.flag-icon-no.flag-icon-squared { + background-image: url(../flags/1x1/no.svg); +} +.flag-icon-np { + background-image: url(../flags/4x3/np.svg); +} +.flag-icon-np.flag-icon-squared { + background-image: url(../flags/1x1/np.svg); +} +.flag-icon-nr { + background-image: url(../flags/4x3/nr.svg); +} +.flag-icon-nr.flag-icon-squared { + background-image: url(../flags/1x1/nr.svg); +} +.flag-icon-nu { + background-image: url(../flags/4x3/nu.svg); +} +.flag-icon-nu.flag-icon-squared { + background-image: url(../flags/1x1/nu.svg); +} +.flag-icon-nz { + background-image: url(../flags/4x3/nz.svg); +} +.flag-icon-nz.flag-icon-squared { + background-image: url(../flags/1x1/nz.svg); +} +.flag-icon-om { + background-image: url(../flags/4x3/om.svg); +} +.flag-icon-om.flag-icon-squared { + background-image: url(../flags/1x1/om.svg); +} +.flag-icon-pa { + background-image: url(../flags/4x3/pa.svg); +} +.flag-icon-pa.flag-icon-squared { + background-image: url(../flags/1x1/pa.svg); +} +.flag-icon-pe { + background-image: url(../flags/4x3/pe.svg); +} +.flag-icon-pe.flag-icon-squared { + background-image: url(../flags/1x1/pe.svg); +} +.flag-icon-pf { + background-image: url(../flags/4x3/pf.svg); +} +.flag-icon-pf.flag-icon-squared { + background-image: url(../flags/1x1/pf.svg); +} +.flag-icon-pg { + background-image: url(../flags/4x3/pg.svg); +} +.flag-icon-pg.flag-icon-squared { + background-image: url(../flags/1x1/pg.svg); +} +.flag-icon-ph { + background-image: url(../flags/4x3/ph.svg); +} +.flag-icon-ph.flag-icon-squared { + background-image: url(../flags/1x1/ph.svg); +} +.flag-icon-pk { + background-image: url(../flags/4x3/pk.svg); +} +.flag-icon-pk.flag-icon-squared { + background-image: url(../flags/1x1/pk.svg); +} +.flag-icon-pl { + background-image: url(../flags/4x3/pl.svg); +} +.flag-icon-pl.flag-icon-squared { + background-image: url(../flags/1x1/pl.svg); +} +.flag-icon-pm { + background-image: url(../flags/4x3/pm.svg); +} +.flag-icon-pm.flag-icon-squared { + background-image: url(../flags/1x1/pm.svg); +} +.flag-icon-pn { + background-image: url(../flags/4x3/pn.svg); +} +.flag-icon-pn.flag-icon-squared { + background-image: url(../flags/1x1/pn.svg); +} +.flag-icon-pr { + background-image: url(../flags/4x3/pr.svg); +} +.flag-icon-pr.flag-icon-squared { + background-image: url(../flags/1x1/pr.svg); +} +.flag-icon-ps { + background-image: url(../flags/4x3/ps.svg); +} +.flag-icon-ps.flag-icon-squared { + background-image: url(../flags/1x1/ps.svg); +} +.flag-icon-pt { + background-image: url(../flags/4x3/pt.svg); +} +.flag-icon-pt.flag-icon-squared { + background-image: url(../flags/1x1/pt.svg); +} +.flag-icon-pw { + background-image: url(../flags/4x3/pw.svg); +} +.flag-icon-pw.flag-icon-squared { + background-image: url(../flags/1x1/pw.svg); +} +.flag-icon-py { + background-image: url(../flags/4x3/py.svg); +} +.flag-icon-py.flag-icon-squared { + background-image: url(../flags/1x1/py.svg); +} +.flag-icon-qa { + background-image: url(../flags/4x3/qa.svg); +} +.flag-icon-qa.flag-icon-squared { + background-image: url(../flags/1x1/qa.svg); +} +.flag-icon-re { + background-image: url(../flags/4x3/re.svg); +} +.flag-icon-re.flag-icon-squared { + background-image: url(../flags/1x1/re.svg); +} +.flag-icon-ro { + background-image: url(../flags/4x3/ro.svg); +} +.flag-icon-ro.flag-icon-squared { + background-image: url(../flags/1x1/ro.svg); +} +.flag-icon-rs { + background-image: url(../flags/4x3/rs.svg); +} +.flag-icon-rs.flag-icon-squared { + background-image: url(../flags/1x1/rs.svg); +} +.flag-icon-ru { + background-image: url(../flags/4x3/ru.svg); +} +.flag-icon-ru.flag-icon-squared { + background-image: url(../flags/1x1/ru.svg); +} +.flag-icon-rw { + background-image: url(../flags/4x3/rw.svg); +} +.flag-icon-rw.flag-icon-squared { + background-image: url(../flags/1x1/rw.svg); +} +.flag-icon-sa { + background-image: url(../flags/4x3/sa.svg); +} +.flag-icon-sa.flag-icon-squared { + background-image: url(../flags/1x1/sa.svg); +} +.flag-icon-sb { + background-image: url(../flags/4x3/sb.svg); +} +.flag-icon-sb.flag-icon-squared { + background-image: url(../flags/1x1/sb.svg); +} +.flag-icon-sc { + background-image: url(../flags/4x3/sc.svg); +} +.flag-icon-sc.flag-icon-squared { + background-image: url(../flags/1x1/sc.svg); +} +.flag-icon-sd { + background-image: url(../flags/4x3/sd.svg); +} +.flag-icon-sd.flag-icon-squared { + background-image: url(../flags/1x1/sd.svg); +} +.flag-icon-se { + background-image: url(../flags/4x3/se.svg); +} +.flag-icon-se.flag-icon-squared { + background-image: url(../flags/1x1/se.svg); +} +.flag-icon-sg { + background-image: url(../flags/4x3/sg.svg); +} +.flag-icon-sg.flag-icon-squared { + background-image: url(../flags/1x1/sg.svg); +} +.flag-icon-sh { + background-image: url(../flags/4x3/sh.svg); +} +.flag-icon-sh.flag-icon-squared { + background-image: url(../flags/1x1/sh.svg); +} +.flag-icon-si { + background-image: url(../flags/4x3/si.svg); +} +.flag-icon-si.flag-icon-squared { + background-image: url(../flags/1x1/si.svg); +} +.flag-icon-sj { + background-image: url(../flags/4x3/sj.svg); +} +.flag-icon-sj.flag-icon-squared { + background-image: url(../flags/1x1/sj.svg); +} +.flag-icon-sk { + background-image: url(../flags/4x3/sk.svg); +} +.flag-icon-sk.flag-icon-squared { + background-image: url(../flags/1x1/sk.svg); +} +.flag-icon-sl { + background-image: url(../flags/4x3/sl.svg); +} +.flag-icon-sl.flag-icon-squared { + background-image: url(../flags/1x1/sl.svg); +} +.flag-icon-sm { + background-image: url(../flags/4x3/sm.svg); +} +.flag-icon-sm.flag-icon-squared { + background-image: url(../flags/1x1/sm.svg); +} +.flag-icon-sn { + background-image: url(../flags/4x3/sn.svg); +} +.flag-icon-sn.flag-icon-squared { + background-image: url(../flags/1x1/sn.svg); +} +.flag-icon-so { + background-image: url(../flags/4x3/so.svg); +} +.flag-icon-so.flag-icon-squared { + background-image: url(../flags/1x1/so.svg); +} +.flag-icon-sr { + background-image: url(../flags/4x3/sr.svg); +} +.flag-icon-sr.flag-icon-squared { + background-image: url(../flags/1x1/sr.svg); +} +.flag-icon-ss { + background-image: url(../flags/4x3/ss.svg); +} +.flag-icon-ss.flag-icon-squared { + background-image: url(../flags/1x1/ss.svg); +} +.flag-icon-st { + background-image: url(../flags/4x3/st.svg); +} +.flag-icon-st.flag-icon-squared { + background-image: url(../flags/1x1/st.svg); +} +.flag-icon-sv { + background-image: url(../flags/4x3/sv.svg); +} +.flag-icon-sv.flag-icon-squared { + background-image: url(../flags/1x1/sv.svg); +} +.flag-icon-sx { + background-image: url(../flags/4x3/sx.svg); +} +.flag-icon-sx.flag-icon-squared { + background-image: url(../flags/1x1/sx.svg); +} +.flag-icon-sy { + background-image: url(../flags/4x3/sy.svg); +} +.flag-icon-sy.flag-icon-squared { + background-image: url(../flags/1x1/sy.svg); +} +.flag-icon-sz { + background-image: url(../flags/4x3/sz.svg); +} +.flag-icon-sz.flag-icon-squared { + background-image: url(../flags/1x1/sz.svg); +} +.flag-icon-tc { + background-image: url(../flags/4x3/tc.svg); +} +.flag-icon-tc.flag-icon-squared { + background-image: url(../flags/1x1/tc.svg); +} +.flag-icon-td { + background-image: url(../flags/4x3/td.svg); +} +.flag-icon-td.flag-icon-squared { + background-image: url(../flags/1x1/td.svg); +} +.flag-icon-tf { + background-image: url(../flags/4x3/tf.svg); +} +.flag-icon-tf.flag-icon-squared { + background-image: url(../flags/1x1/tf.svg); +} +.flag-icon-tg { + background-image: url(../flags/4x3/tg.svg); +} +.flag-icon-tg.flag-icon-squared { + background-image: url(../flags/1x1/tg.svg); +} +.flag-icon-th { + background-image: url(../flags/4x3/th.svg); +} +.flag-icon-th.flag-icon-squared { + background-image: url(../flags/1x1/th.svg); +} +.flag-icon-tj { + background-image: url(../flags/4x3/tj.svg); +} +.flag-icon-tj.flag-icon-squared { + background-image: url(../flags/1x1/tj.svg); +} +.flag-icon-tk { + background-image: url(../flags/4x3/tk.svg); +} +.flag-icon-tk.flag-icon-squared { + background-image: url(../flags/1x1/tk.svg); +} +.flag-icon-tl { + background-image: url(../flags/4x3/tl.svg); +} +.flag-icon-tl.flag-icon-squared { + background-image: url(../flags/1x1/tl.svg); +} +.flag-icon-tm { + background-image: url(../flags/4x3/tm.svg); +} +.flag-icon-tm.flag-icon-squared { + background-image: url(../flags/1x1/tm.svg); +} +.flag-icon-tn { + background-image: url(../flags/4x3/tn.svg); +} +.flag-icon-tn.flag-icon-squared { + background-image: url(../flags/1x1/tn.svg); +} +.flag-icon-to { + background-image: url(../flags/4x3/to.svg); +} +.flag-icon-to.flag-icon-squared { + background-image: url(../flags/1x1/to.svg); +} +.flag-icon-tr { + background-image: url(../flags/4x3/tr.svg); +} +.flag-icon-tr.flag-icon-squared { + background-image: url(../flags/1x1/tr.svg); +} +.flag-icon-tt { + background-image: url(../flags/4x3/tt.svg); +} +.flag-icon-tt.flag-icon-squared { + background-image: url(../flags/1x1/tt.svg); +} +.flag-icon-tv { + background-image: url(../flags/4x3/tv.svg); +} +.flag-icon-tv.flag-icon-squared { + background-image: url(../flags/1x1/tv.svg); +} +.flag-icon-tw { + background-image: url(../flags/4x3/tw.svg); +} +.flag-icon-tw.flag-icon-squared { + background-image: url(../flags/1x1/tw.svg); +} +.flag-icon-tz { + background-image: url(../flags/4x3/tz.svg); +} +.flag-icon-tz.flag-icon-squared { + background-image: url(../flags/1x1/tz.svg); +} +.flag-icon-ua { + background-image: url(../flags/4x3/ua.svg); +} +.flag-icon-ua.flag-icon-squared { + background-image: url(../flags/1x1/ua.svg); +} +.flag-icon-ug { + background-image: url(../flags/4x3/ug.svg); +} +.flag-icon-ug.flag-icon-squared { + background-image: url(../flags/1x1/ug.svg); +} +.flag-icon-um { + background-image: url(../flags/4x3/um.svg); +} +.flag-icon-um.flag-icon-squared { + background-image: url(../flags/1x1/um.svg); +} +.flag-icon-us { + background-image: url(../flags/4x3/us.svg); +} +.flag-icon-us.flag-icon-squared { + background-image: url(../flags/1x1/us.svg); +} +.flag-icon-uy { + background-image: url(../flags/4x3/uy.svg); +} +.flag-icon-uy.flag-icon-squared { + background-image: url(../flags/1x1/uy.svg); +} +.flag-icon-uz { + background-image: url(../flags/4x3/uz.svg); +} +.flag-icon-uz.flag-icon-squared { + background-image: url(../flags/1x1/uz.svg); +} +.flag-icon-va { + background-image: url(../flags/4x3/va.svg); +} +.flag-icon-va.flag-icon-squared { + background-image: url(../flags/1x1/va.svg); +} +.flag-icon-vc { + background-image: url(../flags/4x3/vc.svg); +} +.flag-icon-vc.flag-icon-squared { + background-image: url(../flags/1x1/vc.svg); +} +.flag-icon-ve { + background-image: url(../flags/4x3/ve.svg); +} +.flag-icon-ve.flag-icon-squared { + background-image: url(../flags/1x1/ve.svg); +} +.flag-icon-vg { + background-image: url(../flags/4x3/vg.svg); +} +.flag-icon-vg.flag-icon-squared { + background-image: url(../flags/1x1/vg.svg); +} +.flag-icon-vi { + background-image: url(../flags/4x3/vi.svg); +} +.flag-icon-vi.flag-icon-squared { + background-image: url(../flags/1x1/vi.svg); +} +.flag-icon-vn { + background-image: url(../flags/4x3/vn.svg); +} +.flag-icon-vn.flag-icon-squared { + background-image: url(../flags/1x1/vn.svg); +} +.flag-icon-vu { + background-image: url(../flags/4x3/vu.svg); +} +.flag-icon-vu.flag-icon-squared { + background-image: url(../flags/1x1/vu.svg); +} +.flag-icon-wf { + background-image: url(../flags/4x3/wf.svg); +} +.flag-icon-wf.flag-icon-squared { + background-image: url(../flags/1x1/wf.svg); +} +.flag-icon-ws { + background-image: url(../flags/4x3/ws.svg); +} +.flag-icon-ws.flag-icon-squared { + background-image: url(../flags/1x1/ws.svg); +} +.flag-icon-ye { + background-image: url(../flags/4x3/ye.svg); +} +.flag-icon-ye.flag-icon-squared { + background-image: url(../flags/1x1/ye.svg); +} +.flag-icon-yt { + background-image: url(../flags/4x3/yt.svg); +} +.flag-icon-yt.flag-icon-squared { + background-image: url(../flags/1x1/yt.svg); +} +.flag-icon-za { + background-image: url(../flags/4x3/za.svg); +} +.flag-icon-za.flag-icon-squared { + background-image: url(../flags/1x1/za.svg); +} +.flag-icon-zm { + background-image: url(../flags/4x3/zm.svg); +} +.flag-icon-zm.flag-icon-squared { + background-image: url(../flags/1x1/zm.svg); +} +.flag-icon-zw { + background-image: url(../flags/4x3/zw.svg); +} +.flag-icon-zw.flag-icon-squared { + background-image: url(../flags/1x1/zw.svg); +} +.flag-icon-eu { + background-image: url(../flags/4x3/eu.svg); +} +.flag-icon-eu.flag-icon-squared { + background-image: url(../flags/1x1/eu.svg); +} +.flag-icon-gb-eng { + background-image: url(../flags/4x3/gb-eng.svg); +} +.flag-icon-gb-eng.flag-icon-squared { + background-image: url(../flags/1x1/gb-eng.svg); +} +.flag-icon-gb-sct { + background-image: url(../flags/4x3/gb-sct.svg); +} +.flag-icon-gb-sct.flag-icon-squared { + background-image: url(../flags/1x1/gb-sct.svg); +} +.flag-icon-gb-wls { + background-image: url(../flags/4x3/gb-wls.svg); +} +.flag-icon-gb-wls.flag-icon-squared { + background-image: url(../flags/1x1/gb-wls.svg); +} diff --git a/src/assets/fonts/flag-icon-css/css/flag-icon.min.css b/src/assets/fonts/flag-icon-css/css/flag-icon.min.css new file mode 100644 index 0000000..af9875a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/css/flag-icon.min.css @@ -0,0 +1 @@ +.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)} \ No newline at end of file diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ad.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ad.svg new file mode 100644 index 0000000..46833b5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ad.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ae.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ae.svg new file mode 100644 index 0000000..7fcc36c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ae.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/af.svg b/src/assets/fonts/flag-icon-css/flags/1x1/af.svg new file mode 100644 index 0000000..8022537 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/af.svg @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ag.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ag.svg new file mode 100644 index 0000000..2b78760 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ag.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ai.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ai.svg new file mode 100644 index 0000000..443643d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ai.svg @@ -0,0 +1,772 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/al.svg b/src/assets/fonts/flag-icon-css/flags/1x1/al.svg new file mode 100644 index 0000000..a784256 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/al.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/am.svg b/src/assets/fonts/flag-icon-css/flags/1x1/am.svg new file mode 100644 index 0000000..f546c53 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/am.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ao.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ao.svg new file mode 100644 index 0000000..b534a06 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ao.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/aq.svg b/src/assets/fonts/flag-icon-css/flags/1x1/aq.svg new file mode 100644 index 0000000..96f3cb5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/aq.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ar.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ar.svg new file mode 100644 index 0000000..61ddee8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ar.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/as.svg b/src/assets/fonts/flag-icon-css/flags/1x1/as.svg new file mode 100644 index 0000000..11de174 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/as.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/at.svg b/src/assets/fonts/flag-icon-css/flags/1x1/at.svg new file mode 100644 index 0000000..a1c333b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/at.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/au.svg b/src/assets/fonts/flag-icon-css/flags/1x1/au.svg new file mode 100644 index 0000000..98e7ea0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/au.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/aw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/aw.svg new file mode 100644 index 0000000..ab5544c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/aw.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ax.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ax.svg new file mode 100644 index 0000000..b522de5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ax.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/az.svg b/src/assets/fonts/flag-icon-css/flags/1x1/az.svg new file mode 100644 index 0000000..dfb014c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ba.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ba.svg new file mode 100644 index 0000000..56ec812 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ba.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bb.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bb.svg new file mode 100644 index 0000000..6cbe43a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bd.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bd.svg new file mode 100644 index 0000000..207f52e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bd.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/be.svg b/src/assets/fonts/flag-icon-css/flags/1x1/be.svg new file mode 100644 index 0000000..543f41b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/be.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bf.svg new file mode 100644 index 0000000..88fd355 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bf.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bg.svg new file mode 100644 index 0000000..9126938 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bg.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bh.svg new file mode 100644 index 0000000..02d5c63 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bh.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bi.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bi.svg new file mode 100644 index 0000000..b9f9002 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bi.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bj.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bj.svg new file mode 100644 index 0000000..ea8d491 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bj.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bl.svg new file mode 100644 index 0000000..0b3f47e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bl.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bm.svg new file mode 100644 index 0000000..56a862a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bm.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bn.svg new file mode 100644 index 0000000..18ffd5f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bn.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bo.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bo.svg new file mode 100644 index 0000000..7383407 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bq.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bq.svg new file mode 100644 index 0000000..fae0431 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bq.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/br.svg b/src/assets/fonts/flag-icon-css/flags/1x1/br.svg new file mode 100644 index 0000000..0a3798f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/br.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bs.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bs.svg new file mode 100644 index 0000000..5774f6c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bs.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bt.svg new file mode 100644 index 0000000..377a00a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bt.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bv.svg new file mode 100644 index 0000000..5079318 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bv.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bw.svg new file mode 100644 index 0000000..bd0cfda --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bw.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/by.svg b/src/assets/fonts/flag-icon-css/flags/1x1/by.svg new file mode 100644 index 0000000..a2f1e9f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/by.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/bz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/bz.svg new file mode 100644 index 0000000..715c55d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/bz.svg @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ca.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ca.svg new file mode 100644 index 0000000..2746a35 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ca.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cc.svg new file mode 100644 index 0000000..e4eafe1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cd.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cd.svg new file mode 100644 index 0000000..3cd0cb2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cd.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cf.svg new file mode 100644 index 0000000..6ae6fa7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cf.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cg.svg new file mode 100644 index 0000000..079c1e4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ch.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ch.svg new file mode 100644 index 0000000..1246c8f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ch.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ci.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ci.svg new file mode 100644 index 0000000..a344079 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ci.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ck.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ck.svg new file mode 100644 index 0000000..e10ecd3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ck.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cl.svg new file mode 100644 index 0000000..e1c78cf --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cl.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cm.svg new file mode 100644 index 0000000..d9cd19b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cn.svg new file mode 100644 index 0000000..7f7f405 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cn.svg @@ -0,0 +1,20 @@ + + + + Flag of the People's Republic of China + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/co.svg b/src/assets/fonts/flag-icon-css/flags/1x1/co.svg new file mode 100644 index 0000000..90727fd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/co.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cr.svg new file mode 100644 index 0000000..ec112d0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cu.svg new file mode 100644 index 0000000..df5ea90 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cu.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cv.svg new file mode 100644 index 0000000..5696e98 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cv.svg @@ -0,0 +1,17 @@ + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cw.svg new file mode 100644 index 0000000..e334f74 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cw.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cx.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cx.svg new file mode 100644 index 0000000..4b8198e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cx.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cy.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cy.svg new file mode 100644 index 0000000..023278c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/cz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/cz.svg new file mode 100644 index 0000000..f55b528 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/cz.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/de.svg b/src/assets/fonts/flag-icon-css/flags/1x1/de.svg new file mode 100644 index 0000000..c9deaf1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/de.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/dj.svg b/src/assets/fonts/flag-icon-css/flags/1x1/dj.svg new file mode 100644 index 0000000..a5fc124 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/dj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/dk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/dk.svg new file mode 100644 index 0000000..9211992 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/dm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/dm.svg new file mode 100644 index 0000000..bca8e45 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/dm.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/do.svg b/src/assets/fonts/flag-icon-css/flags/1x1/do.svg new file mode 100644 index 0000000..e01a4b8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/do.svg @@ -0,0 +1,6749 @@ + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/dz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/dz.svg new file mode 100644 index 0000000..0f13e71 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/dz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ec.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ec.svg new file mode 100644 index 0000000..41063bd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ec.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ee.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ee.svg new file mode 100644 index 0000000..8c59cf3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ee.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/eg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/eg.svg new file mode 100644 index 0000000..b268670 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/eg.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/eh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/eh.svg new file mode 100644 index 0000000..d34f467 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/eh.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/er.svg b/src/assets/fonts/flag-icon-css/flags/1x1/er.svg new file mode 100644 index 0000000..5231963 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/er.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/es.svg b/src/assets/fonts/flag-icon-css/flags/1x1/es.svg new file mode 100644 index 0000000..dafedec --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/es.svg @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/et.svg b/src/assets/fonts/flag-icon-css/flags/1x1/et.svg new file mode 100644 index 0000000..dcdc483 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/et.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/eu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/eu.svg new file mode 100644 index 0000000..712ff50 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/eu.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fi.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fi.svg new file mode 100644 index 0000000..4538b39 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fi.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fj.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fj.svg new file mode 100644 index 0000000..bb8bc7a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fj.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fk.svg new file mode 100644 index 0000000..065057f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fk.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fm.svg new file mode 100644 index 0000000..1998e1a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fm.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fo.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fo.svg new file mode 100644 index 0000000..bcaff97 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/fr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/fr.svg new file mode 100644 index 0000000..0b3f47e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/fr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ga.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ga.svg new file mode 100644 index 0000000..2567c42 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ga.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gb-eng.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gb-eng.svg new file mode 100644 index 0000000..089bdba --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gb-eng.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gb-sct.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gb-sct.svg new file mode 100644 index 0000000..fac4462 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gb-sct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gb-wls.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gb-wls.svg new file mode 100644 index 0000000..b01148a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gb-wls.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gb.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gb.svg new file mode 100644 index 0000000..b9017e8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gb.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gd.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gd.svg new file mode 100644 index 0000000..cb2b987 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gd.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ge.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ge.svg new file mode 100644 index 0000000..abeb310 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ge.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gf.svg new file mode 100644 index 0000000..e9e3b4d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gg.svg new file mode 100644 index 0000000..b20c7ce --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gg.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gh.svg new file mode 100644 index 0000000..1a63949 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gi.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gi.svg new file mode 100644 index 0000000..1063a75 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gi.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gl.svg new file mode 100644 index 0000000..725ab90 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gm.svg new file mode 100644 index 0000000..8770562 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gm.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gn.svg new file mode 100644 index 0000000..36d5b6f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gn.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gp.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gp.svg new file mode 100644 index 0000000..0b3f47e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gq.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gq.svg new file mode 100644 index 0000000..3ff380f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gq.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gr.svg new file mode 100644 index 0000000..c31d87f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gr.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gs.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gs.svg new file mode 100644 index 0000000..e1cb774 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gs.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + E + + + O + + + T + + + E + + + R + + + R + + + R + + + R + + + R + + + E + + + O + + + O + + + A + + + A + + + A + + + M + + + P + + + P + + + P + + + I + + + T + + + T + + + M + + + G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gt.svg new file mode 100644 index 0000000..fe49b14 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gt.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gu.svg new file mode 100644 index 0000000..91e77fc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gu.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + G + + + U + + + A + + + M + + + + + + + + G + + + U + + + A + + + M + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gw.svg new file mode 100644 index 0000000..1940671 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/gy.svg b/src/assets/fonts/flag-icon-css/flags/1x1/gy.svg new file mode 100644 index 0000000..5f43167 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/gy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/hk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/hk.svg new file mode 100644 index 0000000..c08ffa9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/hk.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/hm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/hm.svg new file mode 100644 index 0000000..82d31c5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/hm.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/hn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/hn.svg new file mode 100644 index 0000000..9cb3689 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/hn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/hr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/hr.svg new file mode 100644 index 0000000..5891cd1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/hr.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ht.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ht.svg new file mode 100644 index 0000000..1758870 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ht.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/hu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/hu.svg new file mode 100644 index 0000000..89265cc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/hu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/id.svg b/src/assets/fonts/flag-icon-css/flags/1x1/id.svg new file mode 100644 index 0000000..d61eaba --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/id.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ie.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ie.svg new file mode 100644 index 0000000..df83407 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ie.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/il.svg b/src/assets/fonts/flag-icon-css/flags/1x1/il.svg new file mode 100644 index 0000000..d80e8d1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/il.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/im.svg b/src/assets/fonts/flag-icon-css/flags/1x1/im.svg new file mode 100644 index 0000000..a6df9b8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/im.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/in.svg b/src/assets/fonts/flag-icon-css/flags/1x1/in.svg new file mode 100644 index 0000000..53fe0c5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/in.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/io.svg b/src/assets/fonts/flag-icon-css/flags/1x1/io.svg new file mode 100644 index 0000000..31e24af --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/io.svg @@ -0,0 +1,192 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/iq.svg b/src/assets/fonts/flag-icon-css/flags/1x1/iq.svg new file mode 100644 index 0000000..f580ca7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/iq.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ir.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ir.svg new file mode 100644 index 0000000..898ea4f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ir.svg @@ -0,0 +1,521 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/is.svg b/src/assets/fonts/flag-icon-css/flags/1x1/is.svg new file mode 100644 index 0000000..1b90948 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/is.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/it.svg b/src/assets/fonts/flag-icon-css/flags/1x1/it.svg new file mode 100644 index 0000000..7b0a2de --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/it.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/je.svg b/src/assets/fonts/flag-icon-css/flags/1x1/je.svg new file mode 100644 index 0000000..3cd0583 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/je.svg @@ -0,0 +1,67 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/jm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/jm.svg new file mode 100644 index 0000000..ccd4a72 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/jm.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/jo.svg b/src/assets/fonts/flag-icon-css/flags/1x1/jo.svg new file mode 100644 index 0000000..f82c3b4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/jo.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/jp.svg b/src/assets/fonts/flag-icon-css/flags/1x1/jp.svg new file mode 100644 index 0000000..1b00cb1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/jp.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ke.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ke.svg new file mode 100644 index 0000000..770c569 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ke.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kg.svg new file mode 100644 index 0000000..d1f6068 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kg.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kh.svg new file mode 100644 index 0000000..4e4871a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kh.svg @@ -0,0 +1,155 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ki.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ki.svg new file mode 100644 index 0000000..c7860f4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ki.svg @@ -0,0 +1,48 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/km.svg b/src/assets/fonts/flag-icon-css/flags/1x1/km.svg new file mode 100644 index 0000000..039782a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/km.svg @@ -0,0 +1,28 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kn.svg new file mode 100644 index 0000000..86d6ad3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kn.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kp.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kp.svg new file mode 100644 index 0000000..e2f3232 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kp.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kr.svg new file mode 100644 index 0000000..ec0c869 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kr.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kw.svg new file mode 100644 index 0000000..bab7a54 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kw.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ky.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ky.svg new file mode 100644 index 0000000..5c2f84b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ky.svg @@ -0,0 +1,125 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/kz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/kz.svg new file mode 100644 index 0000000..6971516 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/kz.svg @@ -0,0 +1,66 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/la.svg b/src/assets/fonts/flag-icon-css/flags/1x1/la.svg new file mode 100644 index 0000000..5ad25e4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/la.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lb.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lb.svg new file mode 100644 index 0000000..08ee281 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lb.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lc.svg new file mode 100644 index 0000000..748b9c4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lc.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/li.svg b/src/assets/fonts/flag-icon-css/flags/1x1/li.svg new file mode 100644 index 0000000..b1eb539 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/li.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lk.svg new file mode 100644 index 0000000..160d082 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lk.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lr.svg new file mode 100644 index 0000000..981ff94 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lr.svg @@ -0,0 +1,28 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ls.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ls.svg new file mode 100644 index 0000000..0fe53f7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ls.svg @@ -0,0 +1,173 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lt.svg new file mode 100644 index 0000000..a4e9071 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lt.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lu.svg new file mode 100644 index 0000000..479fcda --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lu.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/lv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/lv.svg new file mode 100644 index 0000000..111251d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/lv.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ly.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ly.svg new file mode 100644 index 0000000..78f91cd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ly.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ma.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ma.svg new file mode 100644 index 0000000..a76e24a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ma.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mc.svg new file mode 100644 index 0000000..5668b3d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mc.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/md.svg b/src/assets/fonts/flag-icon-css/flags/1x1/md.svg new file mode 100644 index 0000000..1e098c5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/md.svg @@ -0,0 +1,98 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/me.svg b/src/assets/fonts/flag-icon-css/flags/1x1/me.svg new file mode 100644 index 0000000..3ae89dc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/me.svg @@ -0,0 +1,4 @@ + +image/svg+xml + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mf.svg new file mode 100644 index 0000000..21052af --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mf.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mg.svg new file mode 100644 index 0000000..e593311 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mg.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mh.svg new file mode 100644 index 0000000..1cb9d97 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mh.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mk.svg new file mode 100644 index 0000000..b7ac232 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ml.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ml.svg new file mode 100644 index 0000000..db863ac --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ml.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mm.svg new file mode 100644 index 0000000..a68addf --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mm.svg @@ -0,0 +1,157 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mn.svg new file mode 100644 index 0000000..16a689d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mn.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mo.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mo.svg new file mode 100644 index 0000000..bd3747e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mp.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mp.svg new file mode 100644 index 0000000..fe0ad3e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mp.svg @@ -0,0 +1,267 @@ + + + + + + + + + + micronesia + + oceania + flag + sign + + + + + + + + + + + + + + + + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mq.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mq.svg new file mode 100644 index 0000000..afb8827 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mq.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mr.svg new file mode 100644 index 0000000..ab67feb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ms.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ms.svg new file mode 100644 index 0000000..096d734 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ms.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mt.svg new file mode 100644 index 0000000..eff23aa --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mt.svg @@ -0,0 +1,79 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mu.svg new file mode 100644 index 0000000..ef4ec13 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mu.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mv.svg new file mode 100644 index 0000000..53f55e8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mv.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mw.svg new file mode 100644 index 0000000..b6d10e3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mw.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mx.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mx.svg new file mode 100644 index 0000000..70ba6b9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mx.svg @@ -0,0 +1,346 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/my.svg b/src/assets/fonts/flag-icon-css/flags/1x1/my.svg new file mode 100644 index 0000000..dd333fc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/my.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/mz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/mz.svg new file mode 100644 index 0000000..32a7a50 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/mz.svg @@ -0,0 +1,33 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/na.svg b/src/assets/fonts/flag-icon-css/flags/1x1/na.svg new file mode 100644 index 0000000..a88df0b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/na.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nc.svg new file mode 100644 index 0000000..73d5bd0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nc.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ne.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ne.svg new file mode 100644 index 0000000..b5786c4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nf.svg new file mode 100644 index 0000000..386e574 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nf.svg @@ -0,0 +1,47 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ng.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ng.svg new file mode 100644 index 0000000..c8c09dc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ng.svg @@ -0,0 +1,18 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ni.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ni.svg new file mode 100644 index 0000000..2b4dcbb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ni.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nl.svg new file mode 100644 index 0000000..8d8a8d7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nl.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/no.svg b/src/assets/fonts/flag-icon-css/flags/1x1/no.svg new file mode 100644 index 0000000..39f070e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/no.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/np.svg b/src/assets/fonts/flag-icon-css/flags/1x1/np.svg new file mode 100644 index 0000000..3630b14 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/np.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nr.svg new file mode 100644 index 0000000..f4a976f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nr.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nu.svg new file mode 100644 index 0000000..c7e16be --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nu.svg @@ -0,0 +1,39 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/nz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/nz.svg new file mode 100644 index 0000000..1adcec9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/nz.svg @@ -0,0 +1,42 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/om.svg b/src/assets/fonts/flag-icon-css/flags/1x1/om.svg new file mode 100644 index 0000000..6f84f54 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/om.svg @@ -0,0 +1,348 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pa.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pa.svg new file mode 100644 index 0000000..f29f795 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pa.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pe.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pe.svg new file mode 100644 index 0000000..984020a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pe.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pf.svg new file mode 100644 index 0000000..2f536ad --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pf.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pg.svg new file mode 100644 index 0000000..bbaebc4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pg.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ph.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ph.svg new file mode 100644 index 0000000..cad0613 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ph.svg @@ -0,0 +1,33 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pk.svg new file mode 100644 index 0000000..82797c9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pk.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pl.svg new file mode 100644 index 0000000..6ee803e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pl.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pm.svg new file mode 100644 index 0000000..787cc1b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pm.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pn.svg new file mode 100644 index 0000000..3f36fbc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pn.svg @@ -0,0 +1,148 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + The above line is the ensign field color: #CF142B red and #00247D blue + + + + + + + + + I think the above two lines give the simplest way to make the diagonals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pr.svg new file mode 100644 index 0000000..20b69a6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pr.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ps.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ps.svg new file mode 100644 index 0000000..77e96b2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ps.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pt.svg new file mode 100644 index 0000000..66673cb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pt.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/pw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/pw.svg new file mode 100644 index 0000000..3adabdb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/pw.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/py.svg b/src/assets/fonts/flag-icon-css/flags/1x1/py.svg new file mode 100644 index 0000000..7e64036 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/py.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/qa.svg b/src/assets/fonts/flag-icon-css/flags/1x1/qa.svg new file mode 100644 index 0000000..f7c8314 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/qa.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/re.svg b/src/assets/fonts/flag-icon-css/flags/1x1/re.svg new file mode 100644 index 0000000..5ae19dc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/re.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ro.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ro.svg new file mode 100644 index 0000000..bf1a8bc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ro.svg @@ -0,0 +1,18 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/rs.svg b/src/assets/fonts/flag-icon-css/flags/1x1/rs.svg new file mode 100644 index 0000000..0521914 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/rs.svg @@ -0,0 +1,1571 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ru.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ru.svg new file mode 100644 index 0000000..a1bdf73 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ru.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/rw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/rw.svg new file mode 100644 index 0000000..725bc18 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/rw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sa.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sa.svg new file mode 100644 index 0000000..4792073 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sa.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sb.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sb.svg new file mode 100644 index 0000000..beccc96 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sb.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sc.svg new file mode 100644 index 0000000..4145f16 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sc.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sd.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sd.svg new file mode 100644 index 0000000..23ab44f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sd.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/se.svg b/src/assets/fonts/flag-icon-css/flags/1x1/se.svg new file mode 100644 index 0000000..091a00f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/se.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sg.svg new file mode 100644 index 0000000..017577e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sg.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sh.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sh.svg new file mode 100644 index 0000000..fdbe7ff --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sh.svg @@ -0,0 +1,798 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/si.svg b/src/assets/fonts/flag-icon-css/flags/1x1/si.svg new file mode 100644 index 0000000..2ec343a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/si.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sj.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sj.svg new file mode 100644 index 0000000..3bd6607 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sj.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sk.svg new file mode 100644 index 0000000..21eb11c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sk.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sl.svg new file mode 100644 index 0000000..c502fba --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sl.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sm.svg new file mode 100644 index 0000000..5fe7f37 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sm.svg @@ -0,0 +1,187 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + I + + + B + + + E + + + R + + + T + + + A + + + S + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sn.svg new file mode 100644 index 0000000..f90eecf --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sn.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/so.svg b/src/assets/fonts/flag-icon-css/flags/1x1/so.svg new file mode 100644 index 0000000..9e68792 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/so.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sr.svg new file mode 100644 index 0000000..87f5a21 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ss.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ss.svg new file mode 100644 index 0000000..67b93b7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ss.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + Flag of South Sudan + + + + Flag of South Sudan + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/st.svg b/src/assets/fonts/flag-icon-css/flags/1x1/st.svg new file mode 100644 index 0000000..bfd11c4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/st.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sv.svg new file mode 100644 index 0000000..2f26f50 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sv.svg @@ -0,0 +1,645 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sx.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sx.svg new file mode 100644 index 0000000..7dbf738 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sx.svg @@ -0,0 +1,105 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sy.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sy.svg new file mode 100644 index 0000000..e8cfb5f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sy.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/sz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/sz.svg new file mode 100644 index 0000000..7ed24db --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/sz.svg @@ -0,0 +1,92 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tc.svg new file mode 100644 index 0000000..e412e1b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tc.svg @@ -0,0 +1,107 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/td.svg b/src/assets/fonts/flag-icon-css/flags/1x1/td.svg new file mode 100644 index 0000000..7126dca --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/td.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tf.svg new file mode 100644 index 0000000..cdd1f18 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tg.svg new file mode 100644 index 0000000..6598e1a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tg.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/th.svg b/src/assets/fonts/flag-icon-css/flags/1x1/th.svg new file mode 100644 index 0000000..6dff3b4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/th.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tj.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tj.svg new file mode 100644 index 0000000..afa2b83 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tj.svg @@ -0,0 +1,182 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tk.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tk.svg new file mode 100644 index 0000000..1b002fe --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tk.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tl.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tl.svg new file mode 100644 index 0000000..f8d14e0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tl.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tm.svg new file mode 100644 index 0000000..239ac02 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tm.svg @@ -0,0 +1,324 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tn.svg new file mode 100644 index 0000000..341ea35 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tn.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/to.svg b/src/assets/fonts/flag-icon-css/flags/1x1/to.svg new file mode 100644 index 0000000..e5565d0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/to.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tr.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tr.svg new file mode 100644 index 0000000..8dae6d1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tr.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tt.svg new file mode 100644 index 0000000..b41e770 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tt.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tv.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tv.svg new file mode 100644 index 0000000..0f97fad --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tv.svg @@ -0,0 +1,48 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tw.svg new file mode 100644 index 0000000..ec3d41b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tw.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/tz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/tz.svg new file mode 100644 index 0000000..0d53fb8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/tz.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ua.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ua.svg new file mode 100644 index 0000000..3b32ba2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ua.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ug.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ug.svg new file mode 100644 index 0000000..bc3f30e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ug.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/um.svg b/src/assets/fonts/flag-icon-css/flags/1x1/um.svg new file mode 100644 index 0000000..0dac657 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/um.svg @@ -0,0 +1,117 @@ + + + + + + image/svg+xml + + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/us.svg b/src/assets/fonts/flag-icon-css/flags/1x1/us.svg new file mode 100644 index 0000000..df6d8e1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/us.svg @@ -0,0 +1,117 @@ + + + + + + image/svg+xml + + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/uy.svg b/src/assets/fonts/flag-icon-css/flags/1x1/uy.svg new file mode 100644 index 0000000..b5f72fa --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/uy.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/uz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/uz.svg new file mode 100644 index 0000000..4bfec86 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/uz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/va.svg b/src/assets/fonts/flag-icon-css/flags/1x1/va.svg new file mode 100644 index 0000000..b745b42 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/va.svg @@ -0,0 +1,500 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/vc.svg b/src/assets/fonts/flag-icon-css/flags/1x1/vc.svg new file mode 100644 index 0000000..9437fb7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/vc.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ve.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ve.svg new file mode 100644 index 0000000..9f5a6d2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ve.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/vg.svg b/src/assets/fonts/flag-icon-css/flags/1x1/vg.svg new file mode 100644 index 0000000..2a42b76 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/vg.svg @@ -0,0 +1,246 @@ + + + + + + British Virgin Islands + + + + + united_kingdom + flags + caribbean + america + signs_and_symbols + sign + + + + + Tobias Jakobs + + + + + Tobias Jakobs + + + + + Tobias Jakobs + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/vi.svg b/src/assets/fonts/flag-icon-css/flags/1x1/vi.svg new file mode 100644 index 0000000..e0c628c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/vi.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/vn.svg b/src/assets/fonts/flag-icon-css/flags/1x1/vn.svg new file mode 100644 index 0000000..a5e5075 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/vn.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/vu.svg b/src/assets/fonts/flag-icon-css/flags/1x1/vu.svg new file mode 100644 index 0000000..58c6b4e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/vu.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/wf.svg b/src/assets/fonts/flag-icon-css/flags/1x1/wf.svg new file mode 100644 index 0000000..180f5df --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/wf.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ws.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ws.svg new file mode 100644 index 0000000..c9b7da3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ws.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/ye.svg b/src/assets/fonts/flag-icon-css/flags/1x1/ye.svg new file mode 100644 index 0000000..3c37d35 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/ye.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/yt.svg b/src/assets/fonts/flag-icon-css/flags/1x1/yt.svg new file mode 100644 index 0000000..db6bac6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/yt.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/za.svg b/src/assets/fonts/flag-icon-css/flags/1x1/za.svg new file mode 100644 index 0000000..17c6b5f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/za.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/zm.svg b/src/assets/fonts/flag-icon-css/flags/1x1/zm.svg new file mode 100644 index 0000000..8003504 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/zm.svg @@ -0,0 +1,39 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/zw.svg b/src/assets/fonts/flag-icon-css/flags/1x1/zw.svg new file mode 100644 index 0000000..dd0967a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/zw.svg @@ -0,0 +1,51 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/1x1/zz.svg b/src/assets/fonts/flag-icon-css/flags/1x1/zz.svg new file mode 100644 index 0000000..51a9c80 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/1x1/zz.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ad.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ad.svg new file mode 100644 index 0000000..bfa5762 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ad.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ae.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ae.svg new file mode 100644 index 0000000..e68da50 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ae.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/af.svg b/src/assets/fonts/flag-icon-css/flags/4x3/af.svg new file mode 100644 index 0000000..91da54e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/af.svg @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ag.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ag.svg new file mode 100644 index 0000000..d734dd2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ag.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ai.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ai.svg new file mode 100644 index 0000000..34485d5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ai.svg @@ -0,0 +1,772 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/al.svg b/src/assets/fonts/flag-icon-css/flags/4x3/al.svg new file mode 100644 index 0000000..b219956 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/al.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/am.svg b/src/assets/fonts/flag-icon-css/flags/4x3/am.svg new file mode 100644 index 0000000..64f2760 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/am.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ao.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ao.svg new file mode 100644 index 0000000..c1d58bd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ao.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/aq.svg b/src/assets/fonts/flag-icon-css/flags/4x3/aq.svg new file mode 100644 index 0000000..b4248d2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/aq.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ar.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ar.svg new file mode 100644 index 0000000..844c3f7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ar.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/as.svg b/src/assets/fonts/flag-icon-css/flags/4x3/as.svg new file mode 100644 index 0000000..cb4007c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/as.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/at.svg b/src/assets/fonts/flag-icon-css/flags/4x3/at.svg new file mode 100644 index 0000000..c5b8184 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/at.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/au.svg b/src/assets/fonts/flag-icon-css/flags/4x3/au.svg new file mode 100644 index 0000000..ca1a740 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/au.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/aw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/aw.svg new file mode 100644 index 0000000..dd489c9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/aw.svg @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ax.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ax.svg new file mode 100644 index 0000000..5316888 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ax.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/az.svg b/src/assets/fonts/flag-icon-css/flags/4x3/az.svg new file mode 100644 index 0000000..4ad2aa8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ba.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ba.svg new file mode 100644 index 0000000..e01b9cd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ba.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bb.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bb.svg new file mode 100644 index 0000000..3353c48 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bd.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bd.svg new file mode 100644 index 0000000..96b776f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bd.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/be.svg b/src/assets/fonts/flag-icon-css/flags/4x3/be.svg new file mode 100644 index 0000000..ef74080 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/be.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bf.svg new file mode 100644 index 0000000..bc1ff42 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bf.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bg.svg new file mode 100644 index 0000000..b9c8a6f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bg.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bh.svg new file mode 100644 index 0000000..2adfcc0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bh.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bi.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bi.svg new file mode 100644 index 0000000..a71e60b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bi.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bj.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bj.svg new file mode 100644 index 0000000..02f344e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bj.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bl.svg new file mode 100644 index 0000000..5a5d83f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bl.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bm.svg new file mode 100644 index 0000000..3d2dd8e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bm.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bn.svg new file mode 100644 index 0000000..23e0bb6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bn.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bo.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bo.svg new file mode 100644 index 0000000..2d5f798 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bq.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bq.svg new file mode 100644 index 0000000..2520681 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bq.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/br.svg b/src/assets/fonts/flag-icon-css/flags/4x3/br.svg new file mode 100644 index 0000000..b21c659 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/br.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bs.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bs.svg new file mode 100644 index 0000000..30987da --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bs.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bt.svg new file mode 100644 index 0000000..39b5175 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bt.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bv.svg new file mode 100644 index 0000000..054660f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bv.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bw.svg new file mode 100644 index 0000000..5c42854 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bw.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/by.svg b/src/assets/fonts/flag-icon-css/flags/4x3/by.svg new file mode 100644 index 0000000..ca897f6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/by.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/bz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/bz.svg new file mode 100644 index 0000000..00148b4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/bz.svg @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ca.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ca.svg new file mode 100644 index 0000000..19d5296 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ca.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cc.svg new file mode 100644 index 0000000..9aa3763 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cd.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cd.svg new file mode 100644 index 0000000..b9f0010 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cd.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cf.svg new file mode 100644 index 0000000..8e52646 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cf.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cg.svg new file mode 100644 index 0000000..7abdfd5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ch.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ch.svg new file mode 100644 index 0000000..7c70da1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ch.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ci.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ci.svg new file mode 100644 index 0000000..5498526 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ci.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ck.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ck.svg new file mode 100644 index 0000000..f4df7b3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ck.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cl.svg new file mode 100644 index 0000000..0ac361c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cl.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cm.svg new file mode 100644 index 0000000..8501eb8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cn.svg new file mode 100644 index 0000000..515176d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cn.svg @@ -0,0 +1,20 @@ + + + + Flag of the People's Republic of China + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/co.svg b/src/assets/fonts/flag-icon-css/flags/4x3/co.svg new file mode 100644 index 0000000..969ae49 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/co.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cr.svg new file mode 100644 index 0000000..e13bd8a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cu.svg new file mode 100644 index 0000000..a684470 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cu.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cv.svg new file mode 100644 index 0000000..314a739 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cv.svg @@ -0,0 +1,17 @@ + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cw.svg new file mode 100644 index 0000000..d61bfa8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cw.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cx.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cx.svg new file mode 100644 index 0000000..4bf59e6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cx.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cy.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cy.svg new file mode 100644 index 0000000..6c0c64d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/cz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/cz.svg new file mode 100644 index 0000000..c8c1e75 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/cz.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/de.svg b/src/assets/fonts/flag-icon-css/flags/4x3/de.svg new file mode 100644 index 0000000..c23591e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/de.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/dj.svg b/src/assets/fonts/flag-icon-css/flags/4x3/dj.svg new file mode 100644 index 0000000..b43a339 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/dj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/dk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/dk.svg new file mode 100644 index 0000000..3d07a76 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/dm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/dm.svg new file mode 100644 index 0000000..96ab6df --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/dm.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/do.svg b/src/assets/fonts/flag-icon-css/flags/4x3/do.svg new file mode 100644 index 0000000..462ba3e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/do.svg @@ -0,0 +1,6749 @@ + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/dz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/dz.svg new file mode 100644 index 0000000..3ed0f31 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/dz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ec.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ec.svg new file mode 100644 index 0000000..487ddc5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ec.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ee.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ee.svg new file mode 100644 index 0000000..38d6777 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ee.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/eg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/eg.svg new file mode 100644 index 0000000..2c15768 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/eg.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/eh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/eh.svg new file mode 100644 index 0000000..dac5138 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/eh.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/er.svg b/src/assets/fonts/flag-icon-css/flags/4x3/er.svg new file mode 100644 index 0000000..87d0412 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/er.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/es.svg b/src/assets/fonts/flag-icon-css/flags/4x3/es.svg new file mode 100644 index 0000000..40c7993 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/es.svg @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/et.svg b/src/assets/fonts/flag-icon-css/flags/4x3/et.svg new file mode 100644 index 0000000..5c0579a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/et.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/eu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/eu.svg new file mode 100644 index 0000000..6ee3170 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/eu.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fi.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fi.svg new file mode 100644 index 0000000..e2d0afe --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fi.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fj.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fj.svg new file mode 100644 index 0000000..ab06d47 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fj.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fk.svg new file mode 100644 index 0000000..3b13483 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fk.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fm.svg new file mode 100644 index 0000000..b051998 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fm.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fo.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fo.svg new file mode 100644 index 0000000..31d44ae --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/fr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/fr.svg new file mode 100644 index 0000000..77c5cf5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/fr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ga.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ga.svg new file mode 100644 index 0000000..e29d633 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ga.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gb-eng.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gb-eng.svg new file mode 100644 index 0000000..4a13564 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gb-eng.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gb-sct.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gb-sct.svg new file mode 100644 index 0000000..44941f6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gb-sct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gb-wls.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gb-wls.svg new file mode 100644 index 0000000..bfbf2ea --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gb-wls.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gb.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gb.svg new file mode 100644 index 0000000..cd8c226 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gb.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gd.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gd.svg new file mode 100644 index 0000000..8c92e76 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gd.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ge.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ge.svg new file mode 100644 index 0000000..4aa54e2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ge.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gf.svg new file mode 100644 index 0000000..44ad797 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gg.svg new file mode 100644 index 0000000..7e8a7c9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gg.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gh.svg new file mode 100644 index 0000000..b84be43 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gi.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gi.svg new file mode 100644 index 0000000..868f23e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gi.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gl.svg new file mode 100644 index 0000000..6926f54 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gm.svg new file mode 100644 index 0000000..8a8d238 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gn.svg new file mode 100644 index 0000000..ad4a6b9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gn.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gp.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gp.svg new file mode 100644 index 0000000..77c5cf5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gq.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gq.svg new file mode 100644 index 0000000..dac4678 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gq.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gr.svg new file mode 100644 index 0000000..2f30221 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gr.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gs.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gs.svg new file mode 100644 index 0000000..da528ed --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gs.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + E + + + O + + + T + + + E + + + R + + + R + + + R + + + R + + + R + + + E + + + O + + + O + + + A + + + A + + + A + + + M + + + P + + + P + + + P + + + I + + + T + + + T + + + M + + + G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gt.svg new file mode 100644 index 0000000..7c59064 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gt.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gu.svg new file mode 100644 index 0000000..7082e32 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gu.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + G + + + U + + + A + + + M + + + + + + + + G + + + U + + + A + + + M + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gw.svg new file mode 100644 index 0000000..37a8a52 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/gy.svg b/src/assets/fonts/flag-icon-css/flags/4x3/gy.svg new file mode 100644 index 0000000..258ad8a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/gy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/hk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/hk.svg new file mode 100644 index 0000000..75a44a3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/hk.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/hm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/hm.svg new file mode 100644 index 0000000..3b035f2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/hm.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/hn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/hn.svg new file mode 100644 index 0000000..aba1b92 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/hn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/hr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/hr.svg new file mode 100644 index 0000000..882a5e6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/hr.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ht.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ht.svg new file mode 100644 index 0000000..e499405 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ht.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/hu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/hu.svg new file mode 100644 index 0000000..adb18b0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/hu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/id.svg b/src/assets/fonts/flag-icon-css/flags/4x3/id.svg new file mode 100644 index 0000000..6ba9472 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/id.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ie.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ie.svg new file mode 100644 index 0000000..6b94088 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ie.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/il.svg b/src/assets/fonts/flag-icon-css/flags/4x3/il.svg new file mode 100644 index 0000000..58a2d9a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/il.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/im.svg b/src/assets/fonts/flag-icon-css/flags/4x3/im.svg new file mode 100644 index 0000000..eae1471 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/im.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/in.svg b/src/assets/fonts/flag-icon-css/flags/4x3/in.svg new file mode 100644 index 0000000..c84f720 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/in.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/io.svg b/src/assets/fonts/flag-icon-css/flags/4x3/io.svg new file mode 100644 index 0000000..5579623 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/io.svg @@ -0,0 +1,186 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/iq.svg b/src/assets/fonts/flag-icon-css/flags/4x3/iq.svg new file mode 100644 index 0000000..4c66c5a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/iq.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ir.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ir.svg new file mode 100644 index 0000000..9f02617 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ir.svg @@ -0,0 +1,521 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/is.svg b/src/assets/fonts/flag-icon-css/flags/4x3/is.svg new file mode 100644 index 0000000..2c4175a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/is.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/it.svg b/src/assets/fonts/flag-icon-css/flags/4x3/it.svg new file mode 100644 index 0000000..72304ed --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/it.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/je.svg b/src/assets/fonts/flag-icon-css/flags/4x3/je.svg new file mode 100644 index 0000000..0383e6b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/je.svg @@ -0,0 +1,67 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/jm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/jm.svg new file mode 100644 index 0000000..1994b10 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/jm.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/jo.svg b/src/assets/fonts/flag-icon-css/flags/4x3/jo.svg new file mode 100644 index 0000000..e2a4718 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/jo.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/jp.svg b/src/assets/fonts/flag-icon-css/flags/4x3/jp.svg new file mode 100644 index 0000000..9215ad5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/jp.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ke.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ke.svg new file mode 100644 index 0000000..bb26fe4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ke.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kg.svg new file mode 100644 index 0000000..24a9206 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kg.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kh.svg new file mode 100644 index 0000000..ea94e5a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kh.svg @@ -0,0 +1,155 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ki.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ki.svg new file mode 100644 index 0000000..3f96786 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ki.svg @@ -0,0 +1,48 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/km.svg b/src/assets/fonts/flag-icon-css/flags/4x3/km.svg new file mode 100644 index 0000000..12719be --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/km.svg @@ -0,0 +1,28 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kn.svg new file mode 100644 index 0000000..24d19a1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kn.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kp.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kp.svg new file mode 100644 index 0000000..30be2a6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kp.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kr.svg new file mode 100644 index 0000000..bc58e33 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kr.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kw.svg new file mode 100644 index 0000000..05a9390 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kw.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ky.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ky.svg new file mode 100644 index 0000000..b4ea015 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ky.svg @@ -0,0 +1,122 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/kz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/kz.svg new file mode 100644 index 0000000..f8ded73 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/kz.svg @@ -0,0 +1,66 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/la.svg b/src/assets/fonts/flag-icon-css/flags/4x3/la.svg new file mode 100644 index 0000000..dc7b314 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/la.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lb.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lb.svg new file mode 100644 index 0000000..1e6833c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lb.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lc.svg new file mode 100644 index 0000000..92652f3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lc.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/li.svg b/src/assets/fonts/flag-icon-css/flags/4x3/li.svg new file mode 100644 index 0000000..ada46b6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/li.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lk.svg new file mode 100644 index 0000000..59f257b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lk.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lr.svg new file mode 100644 index 0000000..5723543 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lr.svg @@ -0,0 +1,28 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ls.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ls.svg new file mode 100644 index 0000000..021e000 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ls.svg @@ -0,0 +1,173 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lt.svg new file mode 100644 index 0000000..d3bf5f0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lt.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lu.svg new file mode 100644 index 0000000..ea09ad3 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lu.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/lv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/lv.svg new file mode 100644 index 0000000..b323456 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/lv.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ly.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ly.svg new file mode 100644 index 0000000..4a7d630 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ly.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ma.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ma.svg new file mode 100644 index 0000000..e1c634b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ma.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mc.svg new file mode 100644 index 0000000..46810f9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mc.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/md.svg b/src/assets/fonts/flag-icon-css/flags/4x3/md.svg new file mode 100644 index 0000000..b50035c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/md.svg @@ -0,0 +1,100 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/me.svg b/src/assets/fonts/flag-icon-css/flags/4x3/me.svg new file mode 100644 index 0000000..07192a2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/me.svg @@ -0,0 +1,4 @@ + +image/svg+xml + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mf.svg new file mode 100644 index 0000000..eeef6ee --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mf.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mg.svg new file mode 100644 index 0000000..1d6f8e6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mg.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mh.svg new file mode 100644 index 0000000..ccc18ab --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mh.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mk.svg new file mode 100644 index 0000000..01ec7f2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ml.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ml.svg new file mode 100644 index 0000000..1f31ff8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ml.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mm.svg new file mode 100644 index 0000000..64b8760 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mm.svg @@ -0,0 +1,146 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mn.svg new file mode 100644 index 0000000..7ab65f5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mn.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mo.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mo.svg new file mode 100644 index 0000000..f616990 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mp.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mp.svg new file mode 100644 index 0000000..8072776 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mp.svg @@ -0,0 +1,267 @@ + + + + + + + + + + micronesia + + oceania + flag + sign + + + + + + + + + + + + + + + + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mq.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mq.svg new file mode 100644 index 0000000..8f95e4c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mq.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mr.svg new file mode 100644 index 0000000..2be2169 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ms.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ms.svg new file mode 100644 index 0000000..323e6a4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ms.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mt.svg new file mode 100644 index 0000000..0e4afdb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mt.svg @@ -0,0 +1,81 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mu.svg new file mode 100644 index 0000000..e32b233 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mu.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mv.svg new file mode 100644 index 0000000..01863eb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mv.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mw.svg new file mode 100644 index 0000000..4bda1c2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mw.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mx.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mx.svg new file mode 100644 index 0000000..e86fd3d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mx.svg @@ -0,0 +1,348 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/my.svg b/src/assets/fonts/flag-icon-css/flags/4x3/my.svg new file mode 100644 index 0000000..0aae6d4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/my.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/mz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/mz.svg new file mode 100644 index 0000000..3873f1e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/mz.svg @@ -0,0 +1,33 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/na.svg b/src/assets/fonts/flag-icon-css/flags/4x3/na.svg new file mode 100644 index 0000000..bfdb8a0 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/na.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nc.svg new file mode 100644 index 0000000..8df4f1e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nc.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ne.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ne.svg new file mode 100644 index 0000000..1acced6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nf.svg new file mode 100644 index 0000000..b1c7a1b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nf.svg @@ -0,0 +1,45 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ng.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ng.svg new file mode 100644 index 0000000..ac7c6bb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ng.svg @@ -0,0 +1,18 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ni.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ni.svg new file mode 100644 index 0000000..7f53e5c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ni.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nl.svg new file mode 100644 index 0000000..1fbf7f6 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nl.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/no.svg b/src/assets/fonts/flag-icon-css/flags/4x3/no.svg new file mode 100644 index 0000000..ae0f346 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/no.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/np.svg b/src/assets/fonts/flag-icon-css/flags/4x3/np.svg new file mode 100644 index 0000000..1a1c2cf --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/np.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nr.svg new file mode 100644 index 0000000..e8ddfd4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nr.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nu.svg new file mode 100644 index 0000000..a066344 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nu.svg @@ -0,0 +1,39 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/nz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/nz.svg new file mode 100644 index 0000000..667679f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/nz.svg @@ -0,0 +1,42 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/om.svg b/src/assets/fonts/flag-icon-css/flags/4x3/om.svg new file mode 100644 index 0000000..5aad8f7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/om.svg @@ -0,0 +1,348 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pa.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pa.svg new file mode 100644 index 0000000..5b513ac --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pa.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pe.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pe.svg new file mode 100644 index 0000000..e2665a8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pe.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pf.svg new file mode 100644 index 0000000..14781b4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pf.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pg.svg new file mode 100644 index 0000000..7dfe8d4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pg.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ph.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ph.svg new file mode 100644 index 0000000..041e9c8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ph.svg @@ -0,0 +1,35 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pk.svg new file mode 100644 index 0000000..b4336ac --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pk.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pl.svg new file mode 100644 index 0000000..ac0cd89 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pl.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pm.svg new file mode 100644 index 0000000..03738c8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pm.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pn.svg new file mode 100644 index 0000000..8202661 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pn.svg @@ -0,0 +1,145 @@ + + + + + + image/svg+xml + + + + + + + + + + The above line is the ensign field color: #CF142B red and #00247D blue + + + + + + + + + I think the above two lines give the simplest way to make the diagonals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pr.svg new file mode 100644 index 0000000..aa55a46 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pr.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ps.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ps.svg new file mode 100644 index 0000000..69effdc --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ps.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pt.svg new file mode 100644 index 0000000..b979cbb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pt.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/pw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/pw.svg new file mode 100644 index 0000000..9cc809c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/pw.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/py.svg b/src/assets/fonts/flag-icon-css/flags/4x3/py.svg new file mode 100644 index 0000000..d7b3657 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/py.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/qa.svg b/src/assets/fonts/flag-icon-css/flags/4x3/qa.svg new file mode 100644 index 0000000..f322324 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/qa.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/re.svg b/src/assets/fonts/flag-icon-css/flags/4x3/re.svg new file mode 100644 index 0000000..082cb3d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/re.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ro.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ro.svg new file mode 100644 index 0000000..f4c9b95 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ro.svg @@ -0,0 +1,18 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/rs.svg b/src/assets/fonts/flag-icon-css/flags/4x3/rs.svg new file mode 100644 index 0000000..601d9ce --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/rs.svg @@ -0,0 +1,1562 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ru.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ru.svg new file mode 100644 index 0000000..6f4ed9f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ru.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/rw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/rw.svg new file mode 100644 index 0000000..b0cd4ed --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/rw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sa.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sa.svg new file mode 100644 index 0000000..d05577a --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sa.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sb.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sb.svg new file mode 100644 index 0000000..47cc1c1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sb.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sc.svg new file mode 100644 index 0000000..f9857fe --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sc.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sd.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sd.svg new file mode 100644 index 0000000..f8f70cf --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sd.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/se.svg b/src/assets/fonts/flag-icon-css/flags/4x3/se.svg new file mode 100644 index 0000000..d99a582 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/se.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sg.svg new file mode 100644 index 0000000..d568ed5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sg.svg @@ -0,0 +1,28 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sh.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sh.svg new file mode 100644 index 0000000..4e08859 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sh.svg @@ -0,0 +1,795 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/si.svg b/src/assets/fonts/flag-icon-css/flags/4x3/si.svg new file mode 100644 index 0000000..61789c5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/si.svg @@ -0,0 +1,29 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sj.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sj.svg new file mode 100644 index 0000000..c25086e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sj.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sk.svg new file mode 100644 index 0000000..cac209b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sk.svg @@ -0,0 +1,25 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sl.svg new file mode 100644 index 0000000..467327e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sl.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sm.svg new file mode 100644 index 0000000..e4230c8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sm.svg @@ -0,0 +1,187 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + I + + + B + + + E + + + R + + + T + + + A + + + S + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sn.svg new file mode 100644 index 0000000..74fa8d4 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sn.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/so.svg b/src/assets/fonts/flag-icon-css/flags/4x3/so.svg new file mode 100644 index 0000000..a775b81 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/so.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sr.svg new file mode 100644 index 0000000..02d276f --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ss.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ss.svg new file mode 100644 index 0000000..6039a62 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ss.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + Flag of South Sudan + + + + Flag of South Sudan + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/st.svg b/src/assets/fonts/flag-icon-css/flags/4x3/st.svg new file mode 100644 index 0000000..b31028b --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/st.svg @@ -0,0 +1,26 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sv.svg new file mode 100644 index 0000000..c1c6c5e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sv.svg @@ -0,0 +1,645 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sx.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sx.svg new file mode 100644 index 0000000..59cfd7e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sx.svg @@ -0,0 +1,105 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sy.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sy.svg new file mode 100644 index 0000000..64f3c29 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sy.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/sz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/sz.svg new file mode 100644 index 0000000..3a843da --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/sz.svg @@ -0,0 +1,92 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tc.svg new file mode 100644 index 0000000..1477a7c --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tc.svg @@ -0,0 +1,102 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/td.svg b/src/assets/fonts/flag-icon-css/flags/4x3/td.svg new file mode 100644 index 0000000..f0c4680 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/td.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tf.svg new file mode 100644 index 0000000..0c52263 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tg.svg new file mode 100644 index 0000000..4fbe4ab --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tg.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/th.svg b/src/assets/fonts/flag-icon-css/flags/4x3/th.svg new file mode 100644 index 0000000..0e66e19 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/th.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tj.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tj.svg new file mode 100644 index 0000000..0ab64a1 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tj.svg @@ -0,0 +1,181 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tk.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tk.svg new file mode 100644 index 0000000..7a69cb5 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tk.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tl.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tl.svg new file mode 100644 index 0000000..d64fb0d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tl.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tm.svg new file mode 100644 index 0000000..bc324dd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tm.svg @@ -0,0 +1,324 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tn.svg new file mode 100644 index 0000000..4f156fe --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tn.svg @@ -0,0 +1,22 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/to.svg b/src/assets/fonts/flag-icon-css/flags/4x3/to.svg new file mode 100644 index 0000000..f431a46 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/to.svg @@ -0,0 +1,21 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tr.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tr.svg new file mode 100644 index 0000000..67ec710 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tr.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tt.svg new file mode 100644 index 0000000..8b5d344 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tt.svg @@ -0,0 +1,17 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tv.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tv.svg new file mode 100644 index 0000000..ed2afb2 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tv.svg @@ -0,0 +1,48 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tw.svg new file mode 100644 index 0000000..2277674 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tw.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/tz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/tz.svg new file mode 100644 index 0000000..a503b10 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/tz.svg @@ -0,0 +1,23 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ua.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ua.svg new file mode 100644 index 0000000..3f7f06e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ua.svg @@ -0,0 +1,15 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ug.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ug.svg new file mode 100644 index 0000000..ffd5afd --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ug.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/um.svg b/src/assets/fonts/flag-icon-css/flags/4x3/um.svg new file mode 100644 index 0000000..395610e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/um.svg @@ -0,0 +1,117 @@ + + + + + + image/svg+xml + + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/us.svg b/src/assets/fonts/flag-icon-css/flags/4x3/us.svg new file mode 100644 index 0000000..1d621f9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/us.svg @@ -0,0 +1,117 @@ + + + + + + image/svg+xml + + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/uy.svg b/src/assets/fonts/flag-icon-css/flags/4x3/uy.svg new file mode 100644 index 0000000..fcb3d26 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/uy.svg @@ -0,0 +1,62 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/uz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/uz.svg new file mode 100644 index 0000000..81b602d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/uz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/va.svg b/src/assets/fonts/flag-icon-css/flags/4x3/va.svg new file mode 100644 index 0000000..fcfec45 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/va.svg @@ -0,0 +1,500 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/vc.svg b/src/assets/fonts/flag-icon-css/flags/4x3/vc.svg new file mode 100644 index 0000000..6e89d58 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/vc.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ve.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ve.svg new file mode 100644 index 0000000..f712e95 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ve.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/vg.svg b/src/assets/fonts/flag-icon-css/flags/4x3/vg.svg new file mode 100644 index 0000000..6e422bb --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/vg.svg @@ -0,0 +1,248 @@ + + + + + + British Virgin Islands + + + + + united_kingdom + flags + caribbean + america + signs_and_symbols + sign + + + + + Tobias Jakobs + + + + + Tobias Jakobs + + + + + Tobias Jakobs + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/vi.svg b/src/assets/fonts/flag-icon-css/flags/4x3/vi.svg new file mode 100644 index 0000000..08c1b29 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/vi.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/vn.svg b/src/assets/fonts/flag-icon-css/flags/4x3/vn.svg new file mode 100644 index 0000000..443ef75 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/vn.svg @@ -0,0 +1,20 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/vu.svg b/src/assets/fonts/flag-icon-css/flags/4x3/vu.svg new file mode 100644 index 0000000..166663d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/vu.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/wf.svg b/src/assets/fonts/flag-icon-css/flags/4x3/wf.svg new file mode 100644 index 0000000..5e49b6d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/wf.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ws.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ws.svg new file mode 100644 index 0000000..c837d98 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ws.svg @@ -0,0 +1,24 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/ye.svg b/src/assets/fonts/flag-icon-css/flags/4x3/ye.svg new file mode 100644 index 0000000..e2bee6e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/ye.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/yt.svg b/src/assets/fonts/flag-icon-css/flags/4x3/yt.svg new file mode 100644 index 0000000..c5c571d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/yt.svg @@ -0,0 +1,16 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/za.svg b/src/assets/fonts/flag-icon-css/flags/4x3/za.svg new file mode 100644 index 0000000..73a6d7d --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/za.svg @@ -0,0 +1,27 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/zm.svg b/src/assets/fonts/flag-icon-css/flags/4x3/zm.svg new file mode 100644 index 0000000..4f56133 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/zm.svg @@ -0,0 +1,39 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/zw.svg b/src/assets/fonts/flag-icon-css/flags/4x3/zw.svg new file mode 100644 index 0000000..d08eeb7 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/zw.svg @@ -0,0 +1,51 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/flags/4x3/zz.svg b/src/assets/fonts/flag-icon-css/flags/4x3/zz.svg new file mode 100644 index 0000000..0adbd24 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/flags/4x3/zz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/fonts/flag-icon-css/sass/do.svg b/src/assets/fonts/flag-icon-css/sass/do.svg new file mode 100644 index 0000000..462ba3e --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/do.svg @@ -0,0 +1,6749 @@ + + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/flag-icon-css/sass/flag-icon-base.scss b/src/assets/fonts/flag-icon-css/sass/flag-icon-base.scss new file mode 100644 index 0000000..9cfcdf8 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/flag-icon-base.scss @@ -0,0 +1,28 @@ +@mixin flag-icon-background { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; +} + +.flag-icon { + @include flag-icon-background(); + position: relative; + display: inline-block; + width: (4 / 3) * 1em; + line-height: 1em; + &:before { + content: '\00a0'; + } + &.flag-icon-squared { + width: 1em; + } +} + +@mixin flag-icon($country) { + .flag-icon-#{$country} { + background-image: url(#{$flag-icon-css-path}#{$flag-icon-rect-path}/#{$country}.svg); + &.flag-icon-squared { + background-image: url(#{$flag-icon-css-path}#{$flag-icon-square-path}/#{$country}.svg); + } + } +} diff --git a/src/assets/fonts/flag-icon-css/sass/flag-icon-list.scss b/src/assets/fonts/flag-icon-css/sass/flag-icon-list.scss new file mode 100644 index 0000000..6cafc82 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/flag-icon-list.scss @@ -0,0 +1,249 @@ +@include flag-icon(ad); +@include flag-icon(ae); +@include flag-icon(af); +@include flag-icon(ag); +@include flag-icon(ai); +@include flag-icon(al); +@include flag-icon(am); +@include flag-icon(ao); +@include flag-icon(aq); +@include flag-icon(ar); +@include flag-icon(as); +@include flag-icon(at); +@include flag-icon(au); +@include flag-icon(aw); +@include flag-icon(ax); +@include flag-icon(az); +@include flag-icon(ba); +@include flag-icon(bb); +@include flag-icon(bd); +@include flag-icon(be); +@include flag-icon(bf); +@include flag-icon(bg); +@include flag-icon(bh); +@include flag-icon(bi); +@include flag-icon(bj); +@include flag-icon(bl); +@include flag-icon(bm); +@include flag-icon(bn); +@include flag-icon(bo); +@include flag-icon(bq); +@include flag-icon(br); +@include flag-icon(bs); +@include flag-icon(bt); +@include flag-icon(bv); +@include flag-icon(bw); +@include flag-icon(by); +@include flag-icon(bz); +@include flag-icon(ca); +@include flag-icon(cc); +@include flag-icon(cd); +@include flag-icon(cf); +@include flag-icon(cg); +@include flag-icon(ch); +@include flag-icon(ci); +@include flag-icon(ck); +@include flag-icon(cl); +@include flag-icon(cm); +@include flag-icon(cn); +@include flag-icon(co); +@include flag-icon(cr); +@include flag-icon(cu); +@include flag-icon(cv); +@include flag-icon(cw); +@include flag-icon(cx); +@include flag-icon(cy); +@include flag-icon(cz); +@include flag-icon(de); +@include flag-icon(dj); +@include flag-icon(dk); +@include flag-icon(dm); +@include flag-icon(do); +@include flag-icon(dz); +@include flag-icon(ec); +@include flag-icon(ee); +@include flag-icon(eg); +@include flag-icon(eh); +@include flag-icon(er); +@include flag-icon(es); +@include flag-icon(et); +@include flag-icon(fi); +@include flag-icon(fj); +@include flag-icon(fk); +@include flag-icon(fm); +@include flag-icon(fo); +@include flag-icon(fr); +@include flag-icon(ga); +@include flag-icon(gb); +@include flag-icon(gd); +@include flag-icon(ge); +@include flag-icon(gf); +@include flag-icon(gg); +@include flag-icon(gh); +@include flag-icon(gi); +@include flag-icon(gl); +@include flag-icon(gm); +@include flag-icon(gn); +@include flag-icon(gp); +@include flag-icon(gq); +@include flag-icon(gr); +@include flag-icon(gs); +@include flag-icon(gt); +@include flag-icon(gu); +@include flag-icon(gw); +@include flag-icon(gy); +@include flag-icon(hk); +@include flag-icon(hm); +@include flag-icon(hn); +@include flag-icon(hr); +@include flag-icon(ht); +@include flag-icon(hu); +@include flag-icon(id); +@include flag-icon(ie); +@include flag-icon(il); +@include flag-icon(im); +@include flag-icon(in); +@include flag-icon(io); +@include flag-icon(iq); +@include flag-icon(ir); +@include flag-icon(is); +@include flag-icon(it); +@include flag-icon(je); +@include flag-icon(jm); +@include flag-icon(jo); +@include flag-icon(jp); +@include flag-icon(ke); +@include flag-icon(kg); +@include flag-icon(kh); +@include flag-icon(ki); +@include flag-icon(km); +@include flag-icon(kn); +@include flag-icon(kp); +@include flag-icon(kr); +@include flag-icon(kw); +@include flag-icon(ky); +@include flag-icon(kz); +@include flag-icon(la); +@include flag-icon(lb); +@include flag-icon(lc); +@include flag-icon(li); +@include flag-icon(lk); +@include flag-icon(lr); +@include flag-icon(ls); +@include flag-icon(lt); +@include flag-icon(lu); +@include flag-icon(lv); +@include flag-icon(ly); +@include flag-icon(ma); +@include flag-icon(mc); +@include flag-icon(md); +@include flag-icon(me); +@include flag-icon(mf); +@include flag-icon(mg); +@include flag-icon(mh); +@include flag-icon(mk); +@include flag-icon(ml); +@include flag-icon(mm); +@include flag-icon(mn); +@include flag-icon(mo); +@include flag-icon(mp); +@include flag-icon(mq); +@include flag-icon(mr); +@include flag-icon(ms); +@include flag-icon(mt); +@include flag-icon(mu); +@include flag-icon(mv); +@include flag-icon(mw); +@include flag-icon(mx); +@include flag-icon(my); +@include flag-icon(mz); +@include flag-icon(na); +@include flag-icon(nc); +@include flag-icon(ne); +@include flag-icon(nf); +@include flag-icon(ng); +@include flag-icon(ni); +@include flag-icon(nl); +@include flag-icon(no); +@include flag-icon(np); +@include flag-icon(nr); +@include flag-icon(nu); +@include flag-icon(nz); +@include flag-icon(om); +@include flag-icon(pa); +@include flag-icon(pe); +@include flag-icon(pf); +@include flag-icon(pg); +@include flag-icon(ph); +@include flag-icon(pk); +@include flag-icon(pl); +@include flag-icon(pm); +@include flag-icon(pn); +@include flag-icon(pr); +@include flag-icon(ps); +@include flag-icon(pt); +@include flag-icon(pw); +@include flag-icon(py); +@include flag-icon(qa); +@include flag-icon(re); +@include flag-icon(ro); +@include flag-icon(rs); +@include flag-icon(ru); +@include flag-icon(rw); +@include flag-icon(sa); +@include flag-icon(sb); +@include flag-icon(sc); +@include flag-icon(sd); +@include flag-icon(se); +@include flag-icon(sg); +@include flag-icon(sh); +@include flag-icon(si); +@include flag-icon(sj); +@include flag-icon(sk); +@include flag-icon(sl); +@include flag-icon(sm); +@include flag-icon(sn); +@include flag-icon(so); +@include flag-icon(sr); +@include flag-icon(ss); +@include flag-icon(st); +@include flag-icon(sv); +@include flag-icon(sx); +@include flag-icon(sy); +@include flag-icon(sz); +@include flag-icon(tc); +@include flag-icon(td); +@include flag-icon(tf); +@include flag-icon(tg); +@include flag-icon(th); +@include flag-icon(tj); +@include flag-icon(tk); +@include flag-icon(tl); +@include flag-icon(tm); +@include flag-icon(tn); +@include flag-icon(to); +@include flag-icon(tr); +@include flag-icon(tt); +@include flag-icon(tv); +@include flag-icon(tw); +@include flag-icon(tz); +@include flag-icon(ua); +@include flag-icon(ug); +@include flag-icon(um); +@include flag-icon(us); +@include flag-icon(uy); +@include flag-icon(uz); +@include flag-icon(va); +@include flag-icon(vc); +@include flag-icon(ve); +@include flag-icon(vg); +@include flag-icon(vi); +@include flag-icon(vn); +@include flag-icon(vu); +@include flag-icon(wf); +@include flag-icon(ws); +@include flag-icon(ye); +@include flag-icon(yt); +@include flag-icon(za); +@include flag-icon(zm); +@include flag-icon(zw); diff --git a/src/assets/fonts/flag-icon-css/sass/flag-icon-more.scss b/src/assets/fonts/flag-icon-css/sass/flag-icon-more.scss new file mode 100644 index 0000000..a14d8e9 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/flag-icon-more.scss @@ -0,0 +1,4 @@ +@include flag-icon(eu); +@include flag-icon(gb-eng); +@include flag-icon(gb-sct); +@include flag-icon(gb-wls); diff --git a/src/assets/fonts/flag-icon-css/sass/flag-icon.css b/src/assets/fonts/flag-icon-css/sass/flag-icon.css new file mode 100644 index 0000000..f0ee642 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/flag-icon.css @@ -0,0 +1,2042 @@ +.flag-icon { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; + position: relative; + display: inline-block; + width: 1.33333em; + line-height: 1em; +} + +.flag-icon:before { + content: '\00a0'; +} + +.flag-icon.flag-icon-squared { + width: 1em; +} + +.flag-icon-ad { + background-image: url(../flags/4x3/ad.svg); +} + +.flag-icon-ad.flag-icon-squared { + background-image: url(../flags/1x1/ad.svg); +} + +.flag-icon-ae { + background-image: url(../flags/4x3/ae.svg); +} + +.flag-icon-ae.flag-icon-squared { + background-image: url(../flags/1x1/ae.svg); +} + +.flag-icon-af { + background-image: url(../flags/4x3/af.svg); +} + +.flag-icon-af.flag-icon-squared { + background-image: url(../flags/1x1/af.svg); +} + +.flag-icon-ag { + background-image: url(../flags/4x3/ag.svg); +} + +.flag-icon-ag.flag-icon-squared { + background-image: url(../flags/1x1/ag.svg); +} + +.flag-icon-ai { + background-image: url(../flags/4x3/ai.svg); +} + +.flag-icon-ai.flag-icon-squared { + background-image: url(../flags/1x1/ai.svg); +} + +.flag-icon-al { + background-image: url(../flags/4x3/al.svg); +} + +.flag-icon-al.flag-icon-squared { + background-image: url(../flags/1x1/al.svg); +} + +.flag-icon-am { + background-image: url(../flags/4x3/am.svg); +} + +.flag-icon-am.flag-icon-squared { + background-image: url(../flags/1x1/am.svg); +} + +.flag-icon-ao { + background-image: url(../flags/4x3/ao.svg); +} + +.flag-icon-ao.flag-icon-squared { + background-image: url(../flags/1x1/ao.svg); +} + +.flag-icon-aq { + background-image: url(../flags/4x3/aq.svg); +} + +.flag-icon-aq.flag-icon-squared { + background-image: url(../flags/1x1/aq.svg); +} + +.flag-icon-ar { + background-image: url(../flags/4x3/ar.svg); +} + +.flag-icon-ar.flag-icon-squared { + background-image: url(../flags/1x1/ar.svg); +} + +.flag-icon-as { + background-image: url(../flags/4x3/as.svg); +} + +.flag-icon-as.flag-icon-squared { + background-image: url(../flags/1x1/as.svg); +} + +.flag-icon-at { + background-image: url(../flags/4x3/at.svg); +} + +.flag-icon-at.flag-icon-squared { + background-image: url(../flags/1x1/at.svg); +} + +.flag-icon-au { + background-image: url(../flags/4x3/au.svg); +} + +.flag-icon-au.flag-icon-squared { + background-image: url(../flags/1x1/au.svg); +} + +.flag-icon-aw { + background-image: url(../flags/4x3/aw.svg); +} + +.flag-icon-aw.flag-icon-squared { + background-image: url(../flags/1x1/aw.svg); +} + +.flag-icon-ax { + background-image: url(../flags/4x3/ax.svg); +} + +.flag-icon-ax.flag-icon-squared { + background-image: url(../flags/1x1/ax.svg); +} + +.flag-icon-az { + background-image: url(../flags/4x3/az.svg); +} + +.flag-icon-az.flag-icon-squared { + background-image: url(../flags/1x1/az.svg); +} + +.flag-icon-ba { + background-image: url(../flags/4x3/ba.svg); +} + +.flag-icon-ba.flag-icon-squared { + background-image: url(../flags/1x1/ba.svg); +} + +.flag-icon-bb { + background-image: url(../flags/4x3/bb.svg); +} + +.flag-icon-bb.flag-icon-squared { + background-image: url(../flags/1x1/bb.svg); +} + +.flag-icon-bd { + background-image: url(../flags/4x3/bd.svg); +} + +.flag-icon-bd.flag-icon-squared { + background-image: url(../flags/1x1/bd.svg); +} + +.flag-icon-be { + background-image: url(../flags/4x3/be.svg); +} + +.flag-icon-be.flag-icon-squared { + background-image: url(../flags/1x1/be.svg); +} + +.flag-icon-bf { + background-image: url(../flags/4x3/bf.svg); +} + +.flag-icon-bf.flag-icon-squared { + background-image: url(../flags/1x1/bf.svg); +} + +.flag-icon-bg { + background-image: url(../flags/4x3/bg.svg); +} + +.flag-icon-bg.flag-icon-squared { + background-image: url(../flags/1x1/bg.svg); +} + +.flag-icon-bh { + background-image: url(../flags/4x3/bh.svg); +} + +.flag-icon-bh.flag-icon-squared { + background-image: url(../flags/1x1/bh.svg); +} + +.flag-icon-bi { + background-image: url(../flags/4x3/bi.svg); +} + +.flag-icon-bi.flag-icon-squared { + background-image: url(../flags/1x1/bi.svg); +} + +.flag-icon-bj { + background-image: url(../flags/4x3/bj.svg); +} + +.flag-icon-bj.flag-icon-squared { + background-image: url(../flags/1x1/bj.svg); +} + +.flag-icon-bl { + background-image: url(../flags/4x3/bl.svg); +} + +.flag-icon-bl.flag-icon-squared { + background-image: url(../flags/1x1/bl.svg); +} + +.flag-icon-bm { + background-image: url(../flags/4x3/bm.svg); +} + +.flag-icon-bm.flag-icon-squared { + background-image: url(../flags/1x1/bm.svg); +} + +.flag-icon-bn { + background-image: url(../flags/4x3/bn.svg); +} + +.flag-icon-bn.flag-icon-squared { + background-image: url(../flags/1x1/bn.svg); +} + +.flag-icon-bo { + background-image: url(../flags/4x3/bo.svg); +} + +.flag-icon-bo.flag-icon-squared { + background-image: url(../flags/1x1/bo.svg); +} + +.flag-icon-bq { + background-image: url(../flags/4x3/bq.svg); +} + +.flag-icon-bq.flag-icon-squared { + background-image: url(../flags/1x1/bq.svg); +} + +.flag-icon-br { + background-image: url(../flags/4x3/br.svg); +} + +.flag-icon-br.flag-icon-squared { + background-image: url(../flags/1x1/br.svg); +} + +.flag-icon-bs { + background-image: url(../flags/4x3/bs.svg); +} + +.flag-icon-bs.flag-icon-squared { + background-image: url(../flags/1x1/bs.svg); +} + +.flag-icon-bt { + background-image: url(../flags/4x3/bt.svg); +} + +.flag-icon-bt.flag-icon-squared { + background-image: url(../flags/1x1/bt.svg); +} + +.flag-icon-bv { + background-image: url(../flags/4x3/bv.svg); +} + +.flag-icon-bv.flag-icon-squared { + background-image: url(../flags/1x1/bv.svg); +} + +.flag-icon-bw { + background-image: url(../flags/4x3/bw.svg); +} + +.flag-icon-bw.flag-icon-squared { + background-image: url(../flags/1x1/bw.svg); +} + +.flag-icon-by { + background-image: url(../flags/4x3/by.svg); +} + +.flag-icon-by.flag-icon-squared { + background-image: url(../flags/1x1/by.svg); +} + +.flag-icon-bz { + background-image: url(../flags/4x3/bz.svg); +} + +.flag-icon-bz.flag-icon-squared { + background-image: url(../flags/1x1/bz.svg); +} + +.flag-icon-ca { + background-image: url(../flags/4x3/ca.svg); +} + +.flag-icon-ca.flag-icon-squared { + background-image: url(../flags/1x1/ca.svg); +} + +.flag-icon-cc { + background-image: url(../flags/4x3/cc.svg); +} + +.flag-icon-cc.flag-icon-squared { + background-image: url(../flags/1x1/cc.svg); +} + +.flag-icon-cd { + background-image: url(../flags/4x3/cd.svg); +} + +.flag-icon-cd.flag-icon-squared { + background-image: url(../flags/1x1/cd.svg); +} + +.flag-icon-cf { + background-image: url(../flags/4x3/cf.svg); +} + +.flag-icon-cf.flag-icon-squared { + background-image: url(../flags/1x1/cf.svg); +} + +.flag-icon-cg { + background-image: url(../flags/4x3/cg.svg); +} + +.flag-icon-cg.flag-icon-squared { + background-image: url(../flags/1x1/cg.svg); +} + +.flag-icon-ch { + background-image: url(../flags/4x3/ch.svg); +} + +.flag-icon-ch.flag-icon-squared { + background-image: url(../flags/1x1/ch.svg); +} + +.flag-icon-ci { + background-image: url(../flags/4x3/ci.svg); +} + +.flag-icon-ci.flag-icon-squared { + background-image: url(../flags/1x1/ci.svg); +} + +.flag-icon-ck { + background-image: url(../flags/4x3/ck.svg); +} + +.flag-icon-ck.flag-icon-squared { + background-image: url(../flags/1x1/ck.svg); +} + +.flag-icon-cl { + background-image: url(../flags/4x3/cl.svg); +} + +.flag-icon-cl.flag-icon-squared { + background-image: url(../flags/1x1/cl.svg); +} + +.flag-icon-cm { + background-image: url(../flags/4x3/cm.svg); +} + +.flag-icon-cm.flag-icon-squared { + background-image: url(../flags/1x1/cm.svg); +} + +.flag-icon-cn { + background-image: url(../flags/4x3/cn.svg); +} + +.flag-icon-cn.flag-icon-squared { + background-image: url(../flags/1x1/cn.svg); +} + +.flag-icon-co { + background-image: url(../flags/4x3/co.svg); +} + +.flag-icon-co.flag-icon-squared { + background-image: url(../flags/1x1/co.svg); +} + +.flag-icon-cr { + background-image: url(../flags/4x3/cr.svg); +} + +.flag-icon-cr.flag-icon-squared { + background-image: url(../flags/1x1/cr.svg); +} + +.flag-icon-cu { + background-image: url(../flags/4x3/cu.svg); +} + +.flag-icon-cu.flag-icon-squared { + background-image: url(../flags/1x1/cu.svg); +} + +.flag-icon-cv { + background-image: url(../flags/4x3/cv.svg); +} + +.flag-icon-cv.flag-icon-squared { + background-image: url(../flags/1x1/cv.svg); +} + +.flag-icon-cw { + background-image: url(../flags/4x3/cw.svg); +} + +.flag-icon-cw.flag-icon-squared { + background-image: url(../flags/1x1/cw.svg); +} + +.flag-icon-cx { + background-image: url(../flags/4x3/cx.svg); +} + +.flag-icon-cx.flag-icon-squared { + background-image: url(../flags/1x1/cx.svg); +} + +.flag-icon-cy { + background-image: url(../flags/4x3/cy.svg); +} + +.flag-icon-cy.flag-icon-squared { + background-image: url(../flags/1x1/cy.svg); +} + +.flag-icon-cz { + background-image: url(../flags/4x3/cz.svg); +} + +.flag-icon-cz.flag-icon-squared { + background-image: url(../flags/1x1/cz.svg); +} + +.flag-icon-de { + background-image: url(../flags/4x3/de.svg); +} + +.flag-icon-de.flag-icon-squared { + background-image: url(../flags/1x1/de.svg); +} + +.flag-icon-dj { + background-image: url(../flags/4x3/dj.svg); +} + +.flag-icon-dj.flag-icon-squared { + background-image: url(../flags/1x1/dj.svg); +} + +.flag-icon-dk { + background-image: url(../flags/4x3/dk.svg); +} + +.flag-icon-dk.flag-icon-squared { + background-image: url(../flags/1x1/dk.svg); +} + +.flag-icon-dm { + background-image: url(../flags/4x3/dm.svg); +} + +.flag-icon-dm.flag-icon-squared { + background-image: url(../flags/1x1/dm.svg); +} + +.flag-icon-do { + background-image: url(../flags/4x3/do.svg); +} + +.flag-icon-do.flag-icon-squared { + background-image: url(../flags/1x1/do.svg); +} + +.flag-icon-dz { + background-image: url(../flags/4x3/dz.svg); +} + +.flag-icon-dz.flag-icon-squared { + background-image: url(../flags/1x1/dz.svg); +} + +.flag-icon-ec { + background-image: url(../flags/4x3/ec.svg); +} + +.flag-icon-ec.flag-icon-squared { + background-image: url(../flags/1x1/ec.svg); +} + +.flag-icon-ee { + background-image: url(../flags/4x3/ee.svg); +} + +.flag-icon-ee.flag-icon-squared { + background-image: url(../flags/1x1/ee.svg); +} + +.flag-icon-eg { + background-image: url(../flags/4x3/eg.svg); +} + +.flag-icon-eg.flag-icon-squared { + background-image: url(../flags/1x1/eg.svg); +} + +.flag-icon-eh { + background-image: url(../flags/4x3/eh.svg); +} + +.flag-icon-eh.flag-icon-squared { + background-image: url(../flags/1x1/eh.svg); +} + +.flag-icon-er { + background-image: url(../flags/4x3/er.svg); +} + +.flag-icon-er.flag-icon-squared { + background-image: url(../flags/1x1/er.svg); +} + +.flag-icon-es { + background-image: url(../flags/4x3/es.svg); +} + +.flag-icon-es.flag-icon-squared { + background-image: url(../flags/1x1/es.svg); +} + +.flag-icon-et { + background-image: url(../flags/4x3/et.svg); +} + +.flag-icon-et.flag-icon-squared { + background-image: url(../flags/1x1/et.svg); +} + +.flag-icon-fi { + background-image: url(../flags/4x3/fi.svg); +} + +.flag-icon-fi.flag-icon-squared { + background-image: url(../flags/1x1/fi.svg); +} + +.flag-icon-fj { + background-image: url(../flags/4x3/fj.svg); +} + +.flag-icon-fj.flag-icon-squared { + background-image: url(../flags/1x1/fj.svg); +} + +.flag-icon-fk { + background-image: url(../flags/4x3/fk.svg); +} + +.flag-icon-fk.flag-icon-squared { + background-image: url(../flags/1x1/fk.svg); +} + +.flag-icon-fm { + background-image: url(../flags/4x3/fm.svg); +} + +.flag-icon-fm.flag-icon-squared { + background-image: url(../flags/1x1/fm.svg); +} + +.flag-icon-fo { + background-image: url(../flags/4x3/fo.svg); +} + +.flag-icon-fo.flag-icon-squared { + background-image: url(../flags/1x1/fo.svg); +} + +.flag-icon-fr { + background-image: url(../flags/4x3/fr.svg); +} + +.flag-icon-fr.flag-icon-squared { + background-image: url(../flags/1x1/fr.svg); +} + +.flag-icon-ga { + background-image: url(../flags/4x3/ga.svg); +} + +.flag-icon-ga.flag-icon-squared { + background-image: url(../flags/1x1/ga.svg); +} + +.flag-icon-gb { + background-image: url(../flags/4x3/gb.svg); +} + +.flag-icon-gb.flag-icon-squared { + background-image: url(../flags/1x1/gb.svg); +} + +.flag-icon-gd { + background-image: url(../flags/4x3/gd.svg); +} + +.flag-icon-gd.flag-icon-squared { + background-image: url(../flags/1x1/gd.svg); +} + +.flag-icon-ge { + background-image: url(../flags/4x3/ge.svg); +} + +.flag-icon-ge.flag-icon-squared { + background-image: url(../flags/1x1/ge.svg); +} + +.flag-icon-gf { + background-image: url(../flags/4x3/gf.svg); +} + +.flag-icon-gf.flag-icon-squared { + background-image: url(../flags/1x1/gf.svg); +} + +.flag-icon-gg { + background-image: url(../flags/4x3/gg.svg); +} + +.flag-icon-gg.flag-icon-squared { + background-image: url(../flags/1x1/gg.svg); +} + +.flag-icon-gh { + background-image: url(../flags/4x3/gh.svg); +} + +.flag-icon-gh.flag-icon-squared { + background-image: url(../flags/1x1/gh.svg); +} + +.flag-icon-gi { + background-image: url(../flags/4x3/gi.svg); +} + +.flag-icon-gi.flag-icon-squared { + background-image: url(../flags/1x1/gi.svg); +} + +.flag-icon-gl { + background-image: url(../flags/4x3/gl.svg); +} + +.flag-icon-gl.flag-icon-squared { + background-image: url(../flags/1x1/gl.svg); +} + +.flag-icon-gm { + background-image: url(../flags/4x3/gm.svg); +} + +.flag-icon-gm.flag-icon-squared { + background-image: url(../flags/1x1/gm.svg); +} + +.flag-icon-gn { + background-image: url(../flags/4x3/gn.svg); +} + +.flag-icon-gn.flag-icon-squared { + background-image: url(../flags/1x1/gn.svg); +} + +.flag-icon-gp { + background-image: url(../flags/4x3/gp.svg); +} + +.flag-icon-gp.flag-icon-squared { + background-image: url(../flags/1x1/gp.svg); +} + +.flag-icon-gq { + background-image: url(../flags/4x3/gq.svg); +} + +.flag-icon-gq.flag-icon-squared { + background-image: url(../flags/1x1/gq.svg); +} + +.flag-icon-gr { + background-image: url(../flags/4x3/gr.svg); +} + +.flag-icon-gr.flag-icon-squared { + background-image: url(../flags/1x1/gr.svg); +} + +.flag-icon-gs { + background-image: url(../flags/4x3/gs.svg); +} + +.flag-icon-gs.flag-icon-squared { + background-image: url(../flags/1x1/gs.svg); +} + +.flag-icon-gt { + background-image: url(../flags/4x3/gt.svg); +} + +.flag-icon-gt.flag-icon-squared { + background-image: url(../flags/1x1/gt.svg); +} + +.flag-icon-gu { + background-image: url(../flags/4x3/gu.svg); +} + +.flag-icon-gu.flag-icon-squared { + background-image: url(../flags/1x1/gu.svg); +} + +.flag-icon-gw { + background-image: url(../flags/4x3/gw.svg); +} + +.flag-icon-gw.flag-icon-squared { + background-image: url(../flags/1x1/gw.svg); +} + +.flag-icon-gy { + background-image: url(../flags/4x3/gy.svg); +} + +.flag-icon-gy.flag-icon-squared { + background-image: url(../flags/1x1/gy.svg); +} + +.flag-icon-hk { + background-image: url(../flags/4x3/hk.svg); +} + +.flag-icon-hk.flag-icon-squared { + background-image: url(../flags/1x1/hk.svg); +} + +.flag-icon-hm { + background-image: url(../flags/4x3/hm.svg); +} + +.flag-icon-hm.flag-icon-squared { + background-image: url(../flags/1x1/hm.svg); +} + +.flag-icon-hn { + background-image: url(../flags/4x3/hn.svg); +} + +.flag-icon-hn.flag-icon-squared { + background-image: url(../flags/1x1/hn.svg); +} + +.flag-icon-hr { + background-image: url(../flags/4x3/hr.svg); +} + +.flag-icon-hr.flag-icon-squared { + background-image: url(../flags/1x1/hr.svg); +} + +.flag-icon-ht { + background-image: url(../flags/4x3/ht.svg); +} + +.flag-icon-ht.flag-icon-squared { + background-image: url(../flags/1x1/ht.svg); +} + +.flag-icon-hu { + background-image: url(../flags/4x3/hu.svg); +} + +.flag-icon-hu.flag-icon-squared { + background-image: url(../flags/1x1/hu.svg); +} + +.flag-icon-id { + background-image: url(../flags/4x3/id.svg); +} + +.flag-icon-id.flag-icon-squared { + background-image: url(../flags/1x1/id.svg); +} + +.flag-icon-ie { + background-image: url(../flags/4x3/ie.svg); +} + +.flag-icon-ie.flag-icon-squared { + background-image: url(../flags/1x1/ie.svg); +} + +.flag-icon-il { + background-image: url(../flags/4x3/il.svg); +} + +.flag-icon-il.flag-icon-squared { + background-image: url(../flags/1x1/il.svg); +} + +.flag-icon-im { + background-image: url(../flags/4x3/im.svg); +} + +.flag-icon-im.flag-icon-squared { + background-image: url(../flags/1x1/im.svg); +} + +.flag-icon-in { + background-image: url(../flags/4x3/in.svg); +} + +.flag-icon-in.flag-icon-squared { + background-image: url(../flags/1x1/in.svg); +} + +.flag-icon-io { + background-image: url(../flags/4x3/io.svg); +} + +.flag-icon-io.flag-icon-squared { + background-image: url(../flags/1x1/io.svg); +} + +.flag-icon-iq { + background-image: url(../flags/4x3/iq.svg); +} + +.flag-icon-iq.flag-icon-squared { + background-image: url(../flags/1x1/iq.svg); +} + +.flag-icon-ir { + background-image: url(../flags/4x3/ir.svg); +} + +.flag-icon-ir.flag-icon-squared { + background-image: url(../flags/1x1/ir.svg); +} + +.flag-icon-is { + background-image: url(../flags/4x3/is.svg); +} + +.flag-icon-is.flag-icon-squared { + background-image: url(../flags/1x1/is.svg); +} + +.flag-icon-it { + background-image: url(../flags/4x3/it.svg); +} + +.flag-icon-it.flag-icon-squared { + background-image: url(../flags/1x1/it.svg); +} + +.flag-icon-je { + background-image: url(../flags/4x3/je.svg); +} + +.flag-icon-je.flag-icon-squared { + background-image: url(../flags/1x1/je.svg); +} + +.flag-icon-jm { + background-image: url(../flags/4x3/jm.svg); +} + +.flag-icon-jm.flag-icon-squared { + background-image: url(../flags/1x1/jm.svg); +} + +.flag-icon-jo { + background-image: url(../flags/4x3/jo.svg); +} + +.flag-icon-jo.flag-icon-squared { + background-image: url(../flags/1x1/jo.svg); +} + +.flag-icon-jp { + background-image: url(../flags/4x3/jp.svg); +} + +.flag-icon-jp.flag-icon-squared { + background-image: url(../flags/1x1/jp.svg); +} + +.flag-icon-ke { + background-image: url(../flags/4x3/ke.svg); +} + +.flag-icon-ke.flag-icon-squared { + background-image: url(../flags/1x1/ke.svg); +} + +.flag-icon-kg { + background-image: url(../flags/4x3/kg.svg); +} + +.flag-icon-kg.flag-icon-squared { + background-image: url(../flags/1x1/kg.svg); +} + +.flag-icon-kh { + background-image: url(../flags/4x3/kh.svg); +} + +.flag-icon-kh.flag-icon-squared { + background-image: url(../flags/1x1/kh.svg); +} + +.flag-icon-ki { + background-image: url(../flags/4x3/ki.svg); +} + +.flag-icon-ki.flag-icon-squared { + background-image: url(../flags/1x1/ki.svg); +} + +.flag-icon-km { + background-image: url(../flags/4x3/km.svg); +} + +.flag-icon-km.flag-icon-squared { + background-image: url(../flags/1x1/km.svg); +} + +.flag-icon-kn { + background-image: url(../flags/4x3/kn.svg); +} + +.flag-icon-kn.flag-icon-squared { + background-image: url(../flags/1x1/kn.svg); +} + +.flag-icon-kp { + background-image: url(../flags/4x3/kp.svg); +} + +.flag-icon-kp.flag-icon-squared { + background-image: url(../flags/1x1/kp.svg); +} + +.flag-icon-kr { + background-image: url(../flags/4x3/kr.svg); +} + +.flag-icon-kr.flag-icon-squared { + background-image: url(../flags/1x1/kr.svg); +} + +.flag-icon-kw { + background-image: url(../flags/4x3/kw.svg); +} + +.flag-icon-kw.flag-icon-squared { + background-image: url(../flags/1x1/kw.svg); +} + +.flag-icon-ky { + background-image: url(../flags/4x3/ky.svg); +} + +.flag-icon-ky.flag-icon-squared { + background-image: url(../flags/1x1/ky.svg); +} + +.flag-icon-kz { + background-image: url(../flags/4x3/kz.svg); +} + +.flag-icon-kz.flag-icon-squared { + background-image: url(../flags/1x1/kz.svg); +} + +.flag-icon-la { + background-image: url(../flags/4x3/la.svg); +} + +.flag-icon-la.flag-icon-squared { + background-image: url(../flags/1x1/la.svg); +} + +.flag-icon-lb { + background-image: url(../flags/4x3/lb.svg); +} + +.flag-icon-lb.flag-icon-squared { + background-image: url(../flags/1x1/lb.svg); +} + +.flag-icon-lc { + background-image: url(../flags/4x3/lc.svg); +} + +.flag-icon-lc.flag-icon-squared { + background-image: url(../flags/1x1/lc.svg); +} + +.flag-icon-li { + background-image: url(../flags/4x3/li.svg); +} + +.flag-icon-li.flag-icon-squared { + background-image: url(../flags/1x1/li.svg); +} + +.flag-icon-lk { + background-image: url(../flags/4x3/lk.svg); +} + +.flag-icon-lk.flag-icon-squared { + background-image: url(../flags/1x1/lk.svg); +} + +.flag-icon-lr { + background-image: url(../flags/4x3/lr.svg); +} + +.flag-icon-lr.flag-icon-squared { + background-image: url(../flags/1x1/lr.svg); +} + +.flag-icon-ls { + background-image: url(../flags/4x3/ls.svg); +} + +.flag-icon-ls.flag-icon-squared { + background-image: url(../flags/1x1/ls.svg); +} + +.flag-icon-lt { + background-image: url(../flags/4x3/lt.svg); +} + +.flag-icon-lt.flag-icon-squared { + background-image: url(../flags/1x1/lt.svg); +} + +.flag-icon-lu { + background-image: url(../flags/4x3/lu.svg); +} + +.flag-icon-lu.flag-icon-squared { + background-image: url(../flags/1x1/lu.svg); +} + +.flag-icon-lv { + background-image: url(../flags/4x3/lv.svg); +} + +.flag-icon-lv.flag-icon-squared { + background-image: url(../flags/1x1/lv.svg); +} + +.flag-icon-ly { + background-image: url(../flags/4x3/ly.svg); +} + +.flag-icon-ly.flag-icon-squared { + background-image: url(../flags/1x1/ly.svg); +} + +.flag-icon-ma { + background-image: url(../flags/4x3/ma.svg); +} + +.flag-icon-ma.flag-icon-squared { + background-image: url(../flags/1x1/ma.svg); +} + +.flag-icon-mc { + background-image: url(../flags/4x3/mc.svg); +} + +.flag-icon-mc.flag-icon-squared { + background-image: url(../flags/1x1/mc.svg); +} + +.flag-icon-md { + background-image: url(../flags/4x3/md.svg); +} + +.flag-icon-md.flag-icon-squared { + background-image: url(../flags/1x1/md.svg); +} + +.flag-icon-me { + background-image: url(../flags/4x3/me.svg); +} + +.flag-icon-me.flag-icon-squared { + background-image: url(../flags/1x1/me.svg); +} + +.flag-icon-mf { + background-image: url(../flags/4x3/mf.svg); +} + +.flag-icon-mf.flag-icon-squared { + background-image: url(../flags/1x1/mf.svg); +} + +.flag-icon-mg { + background-image: url(../flags/4x3/mg.svg); +} + +.flag-icon-mg.flag-icon-squared { + background-image: url(../flags/1x1/mg.svg); +} + +.flag-icon-mh { + background-image: url(../flags/4x3/mh.svg); +} + +.flag-icon-mh.flag-icon-squared { + background-image: url(../flags/1x1/mh.svg); +} + +.flag-icon-mk { + background-image: url(../flags/4x3/mk.svg); +} + +.flag-icon-mk.flag-icon-squared { + background-image: url(../flags/1x1/mk.svg); +} + +.flag-icon-ml { + background-image: url(../flags/4x3/ml.svg); +} + +.flag-icon-ml.flag-icon-squared { + background-image: url(../flags/1x1/ml.svg); +} + +.flag-icon-mm { + background-image: url(../flags/4x3/mm.svg); +} + +.flag-icon-mm.flag-icon-squared { + background-image: url(../flags/1x1/mm.svg); +} + +.flag-icon-mn { + background-image: url(../flags/4x3/mn.svg); +} + +.flag-icon-mn.flag-icon-squared { + background-image: url(../flags/1x1/mn.svg); +} + +.flag-icon-mo { + background-image: url(../flags/4x3/mo.svg); +} + +.flag-icon-mo.flag-icon-squared { + background-image: url(../flags/1x1/mo.svg); +} + +.flag-icon-mp { + background-image: url(../flags/4x3/mp.svg); +} + +.flag-icon-mp.flag-icon-squared { + background-image: url(../flags/1x1/mp.svg); +} + +.flag-icon-mq { + background-image: url(../flags/4x3/mq.svg); +} + +.flag-icon-mq.flag-icon-squared { + background-image: url(../flags/1x1/mq.svg); +} + +.flag-icon-mr { + background-image: url(../flags/4x3/mr.svg); +} + +.flag-icon-mr.flag-icon-squared { + background-image: url(../flags/1x1/mr.svg); +} + +.flag-icon-ms { + background-image: url(../flags/4x3/ms.svg); +} + +.flag-icon-ms.flag-icon-squared { + background-image: url(../flags/1x1/ms.svg); +} + +.flag-icon-mt { + background-image: url(../flags/4x3/mt.svg); +} + +.flag-icon-mt.flag-icon-squared { + background-image: url(../flags/1x1/mt.svg); +} + +.flag-icon-mu { + background-image: url(../flags/4x3/mu.svg); +} + +.flag-icon-mu.flag-icon-squared { + background-image: url(../flags/1x1/mu.svg); +} + +.flag-icon-mv { + background-image: url(../flags/4x3/mv.svg); +} + +.flag-icon-mv.flag-icon-squared { + background-image: url(../flags/1x1/mv.svg); +} + +.flag-icon-mw { + background-image: url(../flags/4x3/mw.svg); +} + +.flag-icon-mw.flag-icon-squared { + background-image: url(../flags/1x1/mw.svg); +} + +.flag-icon-mx { + background-image: url(../flags/4x3/mx.svg); +} + +.flag-icon-mx.flag-icon-squared { + background-image: url(../flags/1x1/mx.svg); +} + +.flag-icon-my { + background-image: url(../flags/4x3/my.svg); +} + +.flag-icon-my.flag-icon-squared { + background-image: url(../flags/1x1/my.svg); +} + +.flag-icon-mz { + background-image: url(../flags/4x3/mz.svg); +} + +.flag-icon-mz.flag-icon-squared { + background-image: url(../flags/1x1/mz.svg); +} + +.flag-icon-na { + background-image: url(../flags/4x3/na.svg); +} + +.flag-icon-na.flag-icon-squared { + background-image: url(../flags/1x1/na.svg); +} + +.flag-icon-nc { + background-image: url(../flags/4x3/nc.svg); +} + +.flag-icon-nc.flag-icon-squared { + background-image: url(../flags/1x1/nc.svg); +} + +.flag-icon-ne { + background-image: url(../flags/4x3/ne.svg); +} + +.flag-icon-ne.flag-icon-squared { + background-image: url(../flags/1x1/ne.svg); +} + +.flag-icon-nf { + background-image: url(../flags/4x3/nf.svg); +} + +.flag-icon-nf.flag-icon-squared { + background-image: url(../flags/1x1/nf.svg); +} + +.flag-icon-ng { + background-image: url(../flags/4x3/ng.svg); +} + +.flag-icon-ng.flag-icon-squared { + background-image: url(../flags/1x1/ng.svg); +} + +.flag-icon-ni { + background-image: url(../flags/4x3/ni.svg); +} + +.flag-icon-ni.flag-icon-squared { + background-image: url(../flags/1x1/ni.svg); +} + +.flag-icon-nl { + background-image: url(../flags/4x3/nl.svg); +} + +.flag-icon-nl.flag-icon-squared { + background-image: url(../flags/1x1/nl.svg); +} + +.flag-icon-no { + background-image: url(../flags/4x3/no.svg); +} + +.flag-icon-no.flag-icon-squared { + background-image: url(../flags/1x1/no.svg); +} + +.flag-icon-np { + background-image: url(../flags/4x3/np.svg); +} + +.flag-icon-np.flag-icon-squared { + background-image: url(../flags/1x1/np.svg); +} + +.flag-icon-nr { + background-image: url(../flags/4x3/nr.svg); +} + +.flag-icon-nr.flag-icon-squared { + background-image: url(../flags/1x1/nr.svg); +} + +.flag-icon-nu { + background-image: url(../flags/4x3/nu.svg); +} + +.flag-icon-nu.flag-icon-squared { + background-image: url(../flags/1x1/nu.svg); +} + +.flag-icon-nz { + background-image: url(../flags/4x3/nz.svg); +} + +.flag-icon-nz.flag-icon-squared { + background-image: url(../flags/1x1/nz.svg); +} + +.flag-icon-om { + background-image: url(../flags/4x3/om.svg); +} + +.flag-icon-om.flag-icon-squared { + background-image: url(../flags/1x1/om.svg); +} + +.flag-icon-pa { + background-image: url(../flags/4x3/pa.svg); +} + +.flag-icon-pa.flag-icon-squared { + background-image: url(../flags/1x1/pa.svg); +} + +.flag-icon-pe { + background-image: url(../flags/4x3/pe.svg); +} + +.flag-icon-pe.flag-icon-squared { + background-image: url(../flags/1x1/pe.svg); +} + +.flag-icon-pf { + background-image: url(../flags/4x3/pf.svg); +} + +.flag-icon-pf.flag-icon-squared { + background-image: url(../flags/1x1/pf.svg); +} + +.flag-icon-pg { + background-image: url(../flags/4x3/pg.svg); +} + +.flag-icon-pg.flag-icon-squared { + background-image: url(../flags/1x1/pg.svg); +} + +.flag-icon-ph { + background-image: url(../flags/4x3/ph.svg); +} + +.flag-icon-ph.flag-icon-squared { + background-image: url(../flags/1x1/ph.svg); +} + +.flag-icon-pk { + background-image: url(../flags/4x3/pk.svg); +} + +.flag-icon-pk.flag-icon-squared { + background-image: url(../flags/1x1/pk.svg); +} + +.flag-icon-pl { + background-image: url(../flags/4x3/pl.svg); +} + +.flag-icon-pl.flag-icon-squared { + background-image: url(../flags/1x1/pl.svg); +} + +.flag-icon-pm { + background-image: url(../flags/4x3/pm.svg); +} + +.flag-icon-pm.flag-icon-squared { + background-image: url(../flags/1x1/pm.svg); +} + +.flag-icon-pn { + background-image: url(../flags/4x3/pn.svg); +} + +.flag-icon-pn.flag-icon-squared { + background-image: url(../flags/1x1/pn.svg); +} + +.flag-icon-pr { + background-image: url(../flags/4x3/pr.svg); +} + +.flag-icon-pr.flag-icon-squared { + background-image: url(../flags/1x1/pr.svg); +} + +.flag-icon-ps { + background-image: url(../flags/4x3/ps.svg); +} + +.flag-icon-ps.flag-icon-squared { + background-image: url(../flags/1x1/ps.svg); +} + +.flag-icon-pt { + background-image: url(../flags/4x3/pt.svg); +} + +.flag-icon-pt.flag-icon-squared { + background-image: url(../flags/1x1/pt.svg); +} + +.flag-icon-pw { + background-image: url(../flags/4x3/pw.svg); +} + +.flag-icon-pw.flag-icon-squared { + background-image: url(../flags/1x1/pw.svg); +} + +.flag-icon-py { + background-image: url(../flags/4x3/py.svg); +} + +.flag-icon-py.flag-icon-squared { + background-image: url(../flags/1x1/py.svg); +} + +.flag-icon-qa { + background-image: url(../flags/4x3/qa.svg); +} + +.flag-icon-qa.flag-icon-squared { + background-image: url(../flags/1x1/qa.svg); +} + +.flag-icon-re { + background-image: url(../flags/4x3/re.svg); +} + +.flag-icon-re.flag-icon-squared { + background-image: url(../flags/1x1/re.svg); +} + +.flag-icon-ro { + background-image: url(../flags/4x3/ro.svg); +} + +.flag-icon-ro.flag-icon-squared { + background-image: url(../flags/1x1/ro.svg); +} + +.flag-icon-rs { + background-image: url(../flags/4x3/rs.svg); +} + +.flag-icon-rs.flag-icon-squared { + background-image: url(../flags/1x1/rs.svg); +} + +.flag-icon-ru { + background-image: url(../flags/4x3/ru.svg); +} + +.flag-icon-ru.flag-icon-squared { + background-image: url(../flags/1x1/ru.svg); +} + +.flag-icon-rw { + background-image: url(../flags/4x3/rw.svg); +} + +.flag-icon-rw.flag-icon-squared { + background-image: url(../flags/1x1/rw.svg); +} + +.flag-icon-sa { + background-image: url(../flags/4x3/sa.svg); +} + +.flag-icon-sa.flag-icon-squared { + background-image: url(../flags/1x1/sa.svg); +} + +.flag-icon-sb { + background-image: url(../flags/4x3/sb.svg); +} + +.flag-icon-sb.flag-icon-squared { + background-image: url(../flags/1x1/sb.svg); +} + +.flag-icon-sc { + background-image: url(../flags/4x3/sc.svg); +} + +.flag-icon-sc.flag-icon-squared { + background-image: url(../flags/1x1/sc.svg); +} + +.flag-icon-sd { + background-image: url(../flags/4x3/sd.svg); +} + +.flag-icon-sd.flag-icon-squared { + background-image: url(../flags/1x1/sd.svg); +} + +.flag-icon-se { + background-image: url(../flags/4x3/se.svg); +} + +.flag-icon-se.flag-icon-squared { + background-image: url(../flags/1x1/se.svg); +} + +.flag-icon-sg { + background-image: url(../flags/4x3/sg.svg); +} + +.flag-icon-sg.flag-icon-squared { + background-image: url(../flags/1x1/sg.svg); +} + +.flag-icon-sh { + background-image: url(../flags/4x3/sh.svg); +} + +.flag-icon-sh.flag-icon-squared { + background-image: url(../flags/1x1/sh.svg); +} + +.flag-icon-si { + background-image: url(../flags/4x3/si.svg); +} + +.flag-icon-si.flag-icon-squared { + background-image: url(../flags/1x1/si.svg); +} + +.flag-icon-sj { + background-image: url(../flags/4x3/sj.svg); +} + +.flag-icon-sj.flag-icon-squared { + background-image: url(../flags/1x1/sj.svg); +} + +.flag-icon-sk { + background-image: url(../flags/4x3/sk.svg); +} + +.flag-icon-sk.flag-icon-squared { + background-image: url(../flags/1x1/sk.svg); +} + +.flag-icon-sl { + background-image: url(../flags/4x3/sl.svg); +} + +.flag-icon-sl.flag-icon-squared { + background-image: url(../flags/1x1/sl.svg); +} + +.flag-icon-sm { + background-image: url(../flags/4x3/sm.svg); +} + +.flag-icon-sm.flag-icon-squared { + background-image: url(../flags/1x1/sm.svg); +} + +.flag-icon-sn { + background-image: url(../flags/4x3/sn.svg); +} + +.flag-icon-sn.flag-icon-squared { + background-image: url(../flags/1x1/sn.svg); +} + +.flag-icon-so { + background-image: url(../flags/4x3/so.svg); +} + +.flag-icon-so.flag-icon-squared { + background-image: url(../flags/1x1/so.svg); +} + +.flag-icon-sr { + background-image: url(../flags/4x3/sr.svg); +} + +.flag-icon-sr.flag-icon-squared { + background-image: url(../flags/1x1/sr.svg); +} + +.flag-icon-ss { + background-image: url(../flags/4x3/ss.svg); +} + +.flag-icon-ss.flag-icon-squared { + background-image: url(../flags/1x1/ss.svg); +} + +.flag-icon-st { + background-image: url(../flags/4x3/st.svg); +} + +.flag-icon-st.flag-icon-squared { + background-image: url(../flags/1x1/st.svg); +} + +.flag-icon-sv { + background-image: url(../flags/4x3/sv.svg); +} + +.flag-icon-sv.flag-icon-squared { + background-image: url(../flags/1x1/sv.svg); +} + +.flag-icon-sx { + background-image: url(../flags/4x3/sx.svg); +} + +.flag-icon-sx.flag-icon-squared { + background-image: url(../flags/1x1/sx.svg); +} + +.flag-icon-sy { + background-image: url(../flags/4x3/sy.svg); +} + +.flag-icon-sy.flag-icon-squared { + background-image: url(../flags/1x1/sy.svg); +} + +.flag-icon-sz { + background-image: url(../flags/4x3/sz.svg); +} + +.flag-icon-sz.flag-icon-squared { + background-image: url(../flags/1x1/sz.svg); +} + +.flag-icon-tc { + background-image: url(../flags/4x3/tc.svg); +} + +.flag-icon-tc.flag-icon-squared { + background-image: url(../flags/1x1/tc.svg); +} + +.flag-icon-td { + background-image: url(../flags/4x3/td.svg); +} + +.flag-icon-td.flag-icon-squared { + background-image: url(../flags/1x1/td.svg); +} + +.flag-icon-tf { + background-image: url(../flags/4x3/tf.svg); +} + +.flag-icon-tf.flag-icon-squared { + background-image: url(../flags/1x1/tf.svg); +} + +.flag-icon-tg { + background-image: url(../flags/4x3/tg.svg); +} + +.flag-icon-tg.flag-icon-squared { + background-image: url(../flags/1x1/tg.svg); +} + +.flag-icon-th { + background-image: url(../flags/4x3/th.svg); +} + +.flag-icon-th.flag-icon-squared { + background-image: url(../flags/1x1/th.svg); +} + +.flag-icon-tj { + background-image: url(../flags/4x3/tj.svg); +} + +.flag-icon-tj.flag-icon-squared { + background-image: url(../flags/1x1/tj.svg); +} + +.flag-icon-tk { + background-image: url(../flags/4x3/tk.svg); +} + +.flag-icon-tk.flag-icon-squared { + background-image: url(../flags/1x1/tk.svg); +} + +.flag-icon-tl { + background-image: url(../flags/4x3/tl.svg); +} + +.flag-icon-tl.flag-icon-squared { + background-image: url(../flags/1x1/tl.svg); +} + +.flag-icon-tm { + background-image: url(../flags/4x3/tm.svg); +} + +.flag-icon-tm.flag-icon-squared { + background-image: url(../flags/1x1/tm.svg); +} + +.flag-icon-tn { + background-image: url(../flags/4x3/tn.svg); +} + +.flag-icon-tn.flag-icon-squared { + background-image: url(../flags/1x1/tn.svg); +} + +.flag-icon-to { + background-image: url(../flags/4x3/to.svg); +} + +.flag-icon-to.flag-icon-squared { + background-image: url(../flags/1x1/to.svg); +} + +.flag-icon-tr { + background-image: url(../flags/4x3/tr.svg); +} + +.flag-icon-tr.flag-icon-squared { + background-image: url(../flags/1x1/tr.svg); +} + +.flag-icon-tt { + background-image: url(../flags/4x3/tt.svg); +} + +.flag-icon-tt.flag-icon-squared { + background-image: url(../flags/1x1/tt.svg); +} + +.flag-icon-tv { + background-image: url(../flags/4x3/tv.svg); +} + +.flag-icon-tv.flag-icon-squared { + background-image: url(../flags/1x1/tv.svg); +} + +.flag-icon-tw { + background-image: url(../flags/4x3/tw.svg); +} + +.flag-icon-tw.flag-icon-squared { + background-image: url(../flags/1x1/tw.svg); +} + +.flag-icon-tz { + background-image: url(../flags/4x3/tz.svg); +} + +.flag-icon-tz.flag-icon-squared { + background-image: url(../flags/1x1/tz.svg); +} + +.flag-icon-ua { + background-image: url(../flags/4x3/ua.svg); +} + +.flag-icon-ua.flag-icon-squared { + background-image: url(../flags/1x1/ua.svg); +} + +.flag-icon-ug { + background-image: url(../flags/4x3/ug.svg); +} + +.flag-icon-ug.flag-icon-squared { + background-image: url(../flags/1x1/ug.svg); +} + +.flag-icon-um { + background-image: url(../flags/4x3/um.svg); +} + +.flag-icon-um.flag-icon-squared { + background-image: url(../flags/1x1/um.svg); +} + +.flag-icon-us { + background-image: url(../flags/4x3/us.svg); +} + +.flag-icon-us.flag-icon-squared { + background-image: url(../flags/1x1/us.svg); +} + +.flag-icon-uy { + background-image: url(../flags/4x3/uy.svg); +} + +.flag-icon-uy.flag-icon-squared { + background-image: url(../flags/1x1/uy.svg); +} + +.flag-icon-uz { + background-image: url(../flags/4x3/uz.svg); +} + +.flag-icon-uz.flag-icon-squared { + background-image: url(../flags/1x1/uz.svg); +} + +.flag-icon-va { + background-image: url(../flags/4x3/va.svg); +} + +.flag-icon-va.flag-icon-squared { + background-image: url(../flags/1x1/va.svg); +} + +.flag-icon-vc { + background-image: url(../flags/4x3/vc.svg); +} + +.flag-icon-vc.flag-icon-squared { + background-image: url(../flags/1x1/vc.svg); +} + +.flag-icon-ve { + background-image: url(../flags/4x3/ve.svg); +} + +.flag-icon-ve.flag-icon-squared { + background-image: url(../flags/1x1/ve.svg); +} + +.flag-icon-vg { + background-image: url(../flags/4x3/vg.svg); +} + +.flag-icon-vg.flag-icon-squared { + background-image: url(../flags/1x1/vg.svg); +} + +.flag-icon-vi { + background-image: url(../flags/4x3/vi.svg); +} + +.flag-icon-vi.flag-icon-squared { + background-image: url(../flags/1x1/vi.svg); +} + +.flag-icon-vn { + background-image: url(../flags/4x3/vn.svg); +} + +.flag-icon-vn.flag-icon-squared { + background-image: url(../flags/1x1/vn.svg); +} + +.flag-icon-vu { + background-image: url(../flags/4x3/vu.svg); +} + +.flag-icon-vu.flag-icon-squared { + background-image: url(../flags/1x1/vu.svg); +} + +.flag-icon-wf { + background-image: url(../flags/4x3/wf.svg); +} + +.flag-icon-wf.flag-icon-squared { + background-image: url(../flags/1x1/wf.svg); +} + +.flag-icon-ws { + background-image: url(../flags/4x3/ws.svg); +} + +.flag-icon-ws.flag-icon-squared { + background-image: url(../flags/1x1/ws.svg); +} + +.flag-icon-ye { + background-image: url(../flags/4x3/ye.svg); +} + +.flag-icon-ye.flag-icon-squared { + background-image: url(../flags/1x1/ye.svg); +} + +.flag-icon-yt { + background-image: url(../flags/4x3/yt.svg); +} + +.flag-icon-yt.flag-icon-squared { + background-image: url(../flags/1x1/yt.svg); +} + +.flag-icon-za { + background-image: url(../flags/4x3/za.svg); +} + +.flag-icon-za.flag-icon-squared { + background-image: url(../flags/1x1/za.svg); +} + +.flag-icon-zm { + background-image: url(../flags/4x3/zm.svg); +} + +.flag-icon-zm.flag-icon-squared { + background-image: url(../flags/1x1/zm.svg); +} + +.flag-icon-zw { + background-image: url(../flags/4x3/zw.svg); +} + +.flag-icon-zw.flag-icon-squared { + background-image: url(../flags/1x1/zw.svg); +} + +.flag-icon-eu { + background-image: url(../flags/4x3/eu.svg); +} + +.flag-icon-eu.flag-icon-squared { + background-image: url(../flags/1x1/eu.svg); +} + +.flag-icon-gb-eng { + background-image: url(../flags/4x3/gb-eng.svg); +} + +.flag-icon-gb-eng.flag-icon-squared { + background-image: url(../flags/1x1/gb-eng.svg); +} + +.flag-icon-gb-sct { + background-image: url(../flags/4x3/gb-sct.svg); +} + +.flag-icon-gb-sct.flag-icon-squared { + background-image: url(../flags/1x1/gb-sct.svg); +} + +.flag-icon-gb-wls { + background-image: url(../flags/4x3/gb-wls.svg); +} + +.flag-icon-gb-wls.flag-icon-squared { + background-image: url(../flags/1x1/gb-wls.svg); +} +/*# sourceMappingURL=flag-icon.css.map */ \ No newline at end of file diff --git a/src/assets/fonts/flag-icon-css/sass/flag-icon.scss b/src/assets/fonts/flag-icon-css/sass/flag-icon.scss new file mode 100644 index 0000000..cc24e93 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/flag-icon.scss @@ -0,0 +1,4 @@ +@import "variables"; +@import "flag-icon-base"; +@import "flag-icon-list"; +@import "flag-icon-more"; diff --git a/src/assets/fonts/flag-icon-css/sass/variables.scss b/src/assets/fonts/flag-icon-css/sass/variables.scss new file mode 100644 index 0000000..3c67906 --- /dev/null +++ b/src/assets/fonts/flag-icon-css/sass/variables.scss @@ -0,0 +1,3 @@ +$flag-icon-css-path: '../flags' !default; +$flag-icon-rect-path: '/4x3' !default; +$flag-icon-square-path: '/1x1' !default; diff --git a/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.css b/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.css new file mode 100644 index 0000000..af3e1ee --- /dev/null +++ b/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.css @@ -0,0 +1,845 @@ +/*! + * Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome + * License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License) + * + * Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ] + * + * Contacts: + * [ https://icons8.com/contact ] + * + * Follow Icon8 on + * Twitter [ https://twitter.com/icons_8 ] + * Facebook [ https://www.facebook.com/Icons8 ] + * Google+ [ https://plus.google.com/+Icons8 ] + * GitHub [ https://github.com/icons8 ] + */ + +@font-face { + font-family: "FontAwesome"; + src: url("../fonts/line-awesome.eot?v=1.1."); + src: url("../fonts/line-awesome.eot??v=1.1.#iefix") format("embedded-opentype"), + url("../fonts/line-awesome.woff2?v=1.1.") format("woff2"), + url("../fonts/line-awesome.woff?v=1.1.") format("woff"), + url("../fonts/line-awesome.ttf?v=1.1.") format("truetype"), + url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "FontAwesome"; + src: url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg"); + } +} + +/* Thanks to http://fontawesome.io @fontawesome and @davegandy */ +.fa { + display: inline-block; + font: normal normal normal 14px/1 "FontAwesome"; + font-size: inherit; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Thanks to http://fontawesome.io @fontawesome and @davegandy */ + +.fa-500px:before { content: "\f100"; } +.fa-adjust:before { content: "\f101"; } +.fa-adn:before { content: "\f102"; } +.fa-align-center:before { content: "\f103"; } +.fa-align-justify:before { content: "\f104"; } +.fa-align-left:before { content: "\f105"; } +.fa-align-right:before { content: "\f106"; } +.fa-amazon:before { content: "\f107"; } +.fa-ambulance:before { content: "\f108"; } +.fa-anchor:before { content: "\f109"; } +.fa-android:before { content: "\f10a"; } +.fa-angellist:before { content: "\f10b"; } +.fa-angle-double-down:before { content: "\f10c"; } +.fa-angle-double-left:before { content: "\f10d"; } +.fa-angle-double-right:before { content: "\f10e"; } +.fa-angle-double-up:before { content: "\f10f"; } +.fa-angle-down:before { content: "\f110"; } +.fa-angle-left:before { content: "\f111"; } +.fa-angle-right:before { content: "\f112"; } +.fa-angle-up:before { content: "\f113"; } +.fa-apple:before { content: "\f114"; } +.fa-archive:before { content: "\f115"; } +.fa-area-chart:before { content: "\f116"; } +.fa-arrow-circle-down:before { content: "\f117"; } +.fa-arrow-circle-left:before { content: "\f118"; } +.fa-arrow-circle-o-down:before { content: "\f119"; } +.fa-arrow-circle-o-left:before { content: "\f11a"; } +.fa-arrow-circle-o-right:before { content: "\f11b"; } +.fa-arrow-circle-o-up:before { content: "\f11c"; } +.fa-arrow-circle-right:before { content: "\f11d"; } +.fa-arrow-circle-up:before { content: "\f11e"; } +.fa-arrow-down:before { content: "\f11f"; } +.fa-arrow-left:before { content: "\f120"; } +.fa-arrow-right:before { content: "\f121"; } +.fa-arrow-up:before { content: "\f122"; } +.fa-arrows:before { content: "\f123"; } +.fa-arrows-alt:before { content: "\f124"; } +.fa-arrows-h:before { content: "\f125"; } +.fa-arrows-v:before { content: "\f126"; } +.fa-asterisk:before { content: "\f127"; } +.fa-at:before { content: "\f128"; } +.fa-automobile:before { content: "\f129"; } +.fa-backward:before { content: "\f12a"; } +.fa-balance-scale:before { content: "\f12b"; } +.fa-ban:before { content: "\f12c"; } +.fa-bank:before { content: "\f12d"; } +.fa-bar-chart:before { content: "\f12e"; } +.fa-bar-chart-o:before { content: "\f12f"; } +.fa-barcode:before { content: "\f130"; } +.fa-bars:before { content: "\f131"; } +.fa-battery-0:before { content: "\f132"; } +.fa-battery-1:before { content: "\f133"; } +.fa-battery-2:before { content: "\f134"; } +.fa-battery-3:before { content: "\f135"; } +.fa-battery-4:before { content: "\f136"; } +.fa-battery-empty:before { content: "\f137"; } +.fa-battery-full:before { content: "\f138"; } +.fa-battery-half:before { content: "\f139"; } +.fa-battery-quarter:before { content: "\f13a"; } +.fa-battery-three-quarters:before { content: "\f13b"; } +.fa-bed:before { content: "\f13c"; } +.fa-beer:before { content: "\f13d"; } +.fa-behance:before { content: "\f13e"; } +.fa-behance-square:before { content: "\f13f"; } +.fa-bell:before { content: "\f140"; } +.fa-bell-o:before { content: "\f141"; } +.fa-bell-slash:before { content: "\f142"; } +.fa-bell-slash-o:before { content: "\f143"; } +.fa-bicycle:before { content: "\f144"; } +.fa-binoculars:before { content: "\f145"; } +.fa-birthday-cake:before { content: "\f146"; } +.fa-bitbucket:before { content: "\f147"; } +.fa-bitbucket-square:before { content: "\f148"; } +.fa-bitcoin:before { content: "\f149"; } +.fa-black-tie:before { content: "\f14a"; } +.fa-bold:before { content: "\f14b"; } +.fa-bolt:before { content: "\f14c"; } +.fa-bomb:before { content: "\f14d"; } +.fa-book:before { content: "\f14e"; } +.fa-bookmark:before { content: "\f14f"; } +.fa-bookmark-o:before { content: "\f150"; } +.fa-briefcase:before { content: "\f151"; } +.fa-btc:before { content: "\f152"; } +.fa-bug:before { content: "\f153"; } +.fa-building:before { content: "\f154"; } +.fa-building-o:before { content: "\f155"; } +.fa-bullhorn:before { content: "\f156"; } +.fa-bullseye:before { content: "\f157"; } +.fa-bus:before { content: "\f158"; } +.fa-buysellads:before { content: "\f159"; } +.fa-cab:before { content: "\f15a"; } +.fa-calculator:before { content: "\f15b"; } +.fa-calendar:before { content: "\f15c"; } +.fa-calendar-check-o:before { content: "\f15d"; } +.fa-calendar-minus-o:before { content: "\f15e"; } +.fa-calendar-o:before { content: "\f15f"; } +.fa-calendar-plus-o:before { content: "\f160"; } +.fa-calendar-times-o:before { content: "\f161"; } +.fa-camera:before { content: "\f162"; } +.fa-camera-retro:before { content: "\f163"; } +.fa-car:before { content: "\f164"; } +.fa-caret-down:before { content: "\f165"; } +.fa-caret-left:before { content: "\f166"; } +.fa-caret-right:before { content: "\f167"; } +.fa-caret-square-o-down:before, .fa-toggle-down:before { content: "\f168"; } +.fa-caret-square-o-left:before, .fa-toggle-left:before { content: "\f169"; } +.fa-caret-square-o-right:before, .fa-toggle-right:before { content: "\f16a"; } +.fa-caret-square-o-up:before, .fa-toggle-up:before { content: "\f16b"; } +.fa-caret-up:before { content: "\f16c"; } +.fa-cart-arrow-down:before { content: "\f16d"; } +.fa-cart-plus:before { content: "\f16e"; } +.fa-cc:before { content: "\f16f"; } +.fa-cc-amex:before { content: "\f170"; } +.fa-cc-diners-club:before { content: "\f171"; } +.fa-cc-discover:before { content: "\f172"; } +.fa-cc-jcb:before { content: "\f173"; } +.fa-cc-mastercard:before { content: "\f174"; } +.fa-cc-paypal:before { content: "\f175"; } +.fa-cc-stripe:before { content: "\f176"; } +.fa-cc-visa:before { content: "\f177"; } +.fa-certificate:before { content: "\f178"; } +.fa-chain:before { content: "\f179"; } +.fa-chain-broken:before { content: "\f17a"; } +.fa-check:before { content: "\f17b"; } +.fa-check-circle:before { content: "\f17c"; } +.fa-check-circle-o:before { content: "\f17d"; } +.fa-check-square:before { content: "\f17e"; } +.fa-check-square-o:before { content: "\f17f"; } +.fa-chevron-circle-down:before { content: "\f180"; } +.fa-chevron-circle-left:before { content: "\f181"; } +.fa-chevron-circle-right:before { content: "\f182"; } +.fa-chevron-circle-up:before { content: "\f183"; } +.fa-chevron-down:before { content: "\f184"; } +.fa-chevron-left:before { content: "\f185"; } +.fa-chevron-right:before { content: "\f186"; } +.fa-chevron-up:before { content: "\f187"; } +.fa-child:before { content: "\f188"; } +.fa-chrome:before { content: "\f189"; } +.fa-circle:before { content: "\f18a"; } +.fa-circle-o:before { content: "\f18b"; } +.fa-circle-o-notch:before { content: "\f18c"; } +.fa-circle-thin:before { content: "\f18d"; } +.fa-clipboard:before { content: "\f18e"; } +.fa-clock-o:before { content: "\f18f"; } +.fa-clone:before { content: "\f190"; } +.fa-close:before { content: "\f191"; } +.fa-cloud:before { content: "\f192"; } +.fa-cloud-download:before { content: "\f193"; } +.fa-cloud-upload:before { content: "\f194"; } +.fa-cny:before { content: "\f195"; } +.fa-code:before { content: "\f196"; } +.fa-code-fork:before { content: "\f197"; } +.fa-codepen:before { content: "\f198"; } +.fa-coffee:before { content: "\f199"; } +.fa-cog:before { content: "\f19a"; } +.fa-cogs:before { content: "\f19b"; } +.fa-columns:before { content: "\f19c"; } +.fa-comment:before { content: "\f19d"; } +.fa-comment-o:before { content: "\f19e"; } +.fa-commenting:before { content: "\f19f"; } +.fa-commenting-o:before { content: "\f1a0"; } +.fa-comments:before { content: "\f1a1"; } +.fa-comments-o:before { content: "\f1a2"; } +.fa-compass:before { content: "\f1a3"; } +.fa-compress:before { content: "\f1a4"; } +.fa-connectdevelop:before { content: "\f1a5"; } +.fa-contao:before { content: "\f1a6"; } +.fa-copy:before { content: "\f1a7"; } +.fa-copyright:before { content: "\f1a8"; } +.fa-creative-commons:before { content: "\f1a9"; } +.fa-credit-card:before { content: "\f1aa"; } +.fa-crop:before { content: "\f1ab"; } +.fa-crosshairs:before { content: "\f1ac"; } +.fa-css3:before { content: "\f1ad"; } +.fa-cube:before { content: "\f1ae"; } +.fa-cubes:before { content: "\f1af"; } +.fa-cut:before { content: "\f1b0"; } +.fa-cutlery:before { content: "\f1b1"; } +.fa-dashboard:before { content: "\f1b2"; } +.fa-dashcube:before { content: "\f1b3"; } +.fa-database:before { content: "\f1b4"; } +.fa-dedent:before { content: "\f1b5"; } +.fa-delicious:before { content: "\f1b6"; } +.fa-desktop:before { content: "\f1b7"; } +.fa-deviantart:before { content: "\f1b8"; } +.fa-diamond:before { content: "\f1b9"; } +.fa-digg:before { content: "\f1ba"; } +.fa-dollar:before { content: "\f1bb"; } +.fa-dot-circle-o:before { content: "\f1bc"; } +.fa-download:before { content: "\f1bd"; } +.fa-dribbble:before { content: "\f1be"; } +.fa-dropbox:before { content: "\f1bf"; } +.fa-drupal:before { content: "\f1c0"; } +.fa-edit:before { content: "\f1c1"; } +.fa-eject:before { content: "\f1c2"; } +.fa-ellipsis-h:before { content: "\f1c3"; } +.fa-ellipsis-v:before { content: "\f1c4"; } +.fa-empire:before, .fa-ge:before { content: "\f1c5"; } +.fa-envelope:before { content: "\f1c6"; } +.fa-envelope-o:before { content: "\f1c7"; } +.fa-envelope-square:before { content: "\f1c8"; } +.fa-eraser:before { content: "\f1c9"; } +.fa-eur:before { content: "\f1ca"; } +.fa-euro:before { content: "\f1cb"; } +.fa-exchange:before { content: "\f1cc"; } +.fa-exclamation:before { content: "\f1cd"; } +.fa-exclamation-circle:before { content: "\f1ce"; } +.fa-exclamation-triangle:before { content: "\f1cf"; } +.fa-expand:before { content: "\f1d0"; } +.fa-expeditedssl:before { content: "\f1d1"; } +.fa-external-link:before { content: "\f1d2"; } +.fa-external-link-square:before { content: "\f1d3"; } +.fa-eye:before { content: "\f1d4"; } +.fa-eye-slash:before { content: "\f1d5"; } +.fa-eyedropper:before { content: "\f1d6"; } +.fa-facebook:before, .fa-facebook-f:before { content: "\f1d7"; } +.fa-facebook-official:before { content: "\f1d8"; } +.fa-facebook-square:before { content: "\f1d9"; } +.fa-fast-backward:before { content: "\f1da"; } +.fa-fast-forward:before { content: "\f1db"; } +.fa-fax:before { content: "\f1dc"; } +.fa-female:before { content: "\f1dd"; } +.fa-fighter-jet:before { content: "\f1de"; } +.fa-file:before { content: "\f1df"; } +.fa-file-archive-o:before { content: "\f1e0"; } +.fa-file-audio-o:before { content: "\f1e1"; } +.fa-file-code-o:before { content: "\f1e2"; } +.fa-file-excel-o:before { content: "\f1e3"; } +.fa-file-image-o:before { content: "\f1e4"; } +.fa-file-movie-o:before { content: "\f1e5"; } +.fa-file-o:before { content: "\f1e6"; } +.fa-file-pdf-o:before { content: "\f1e7"; } +.fa-file-photo-o:before { content: "\f1e8"; } +.fa-file-picture-o:before { content: "\f1e9"; } +.fa-file-powerpoint-o:before { content: "\f1ea"; } +.fa-file-sound-o:before { content: "\f1eb"; } +.fa-file-text:before { content: "\f1ec"; } +.fa-file-text-o:before { content: "\f1ed"; } +.fa-file-video-o:before { content: "\f1ee"; } +.fa-file-word-o:before { content: "\f1ef"; } +.fa-file-zip-o:before { content: "\f1f0"; } +.fa-files-o:before { content: "\f1f1"; } +.fa-film:before { content: "\f1f2"; } +.fa-filter:before { content: "\f1f3"; } +.fa-fire:before { content: "\f1f4"; } +.fa-fire-extinguisher:before { content: "\f1f5"; } +.fa-firefox:before { content: "\f1f6"; } +.fa-flag:before { content: "\f1f7"; } +.fa-flag-checkered:before { content: "\f1f8"; } +.fa-flag-o:before { content: "\f1f9"; } +.fa-flash:before { content: "\f1fa"; } +.fa-flask:before { content: "\f1fb"; } +.fa-flickr:before { content: "\f1fc"; } +.fa-floppy-o:before { content: "\f1fd"; } +.fa-folder:before { content: "\f1fe"; } +.fa-folder-o:before { content: "\f1ff"; } +.fa-folder-open:before { content: "\f200"; } +.fa-folder-open-o:before { content: "\f201"; } +.fa-font:before { content: "\f202"; } +.fa-fonticons:before { content: "\f203"; } +.fa-forumbee:before { content: "\f204"; } +.fa-forward:before { content: "\f205"; } +.fa-foursquare:before { content: "\f206"; } +.fa-frown-o:before { content: "\f207"; } +.fa-futbol-o:before, .fa-soccer-ball-o:before { content: "\f208"; } +.fa-gamepad:before { content: "\f209"; } +.fa-gavel:before { content: "\f20a"; } +.fa-gbp:before { content: "\f20b"; } +.fa-gear:before { content: "\f20c"; } +.fa-gears:before { content: "\f20d"; } +.fa-genderless:before { content: "\f20e"; } +.fa-get-pocket:before { content: "\f20f"; } +.fa-gg:before { content: "\f210"; } +.fa-gg-circle:before { content: "\f211"; } +.fa-gift:before { content: "\f212"; } +.fa-git:before { content: "\f213"; } +.fa-git-square:before { content: "\f214"; } +.fa-github:before { content: "\f215"; } +.fa-github-alt:before { content: "\f216"; } +.fa-github-square:before { content: "\f217"; } +.fa-glass:before { content: "\f218"; } +.fa-globe:before { content: "\f219"; } +.fa-google:before { content: "\f21a"; } +.fa-google-plus:before { content: "\f21b"; } +.fa-google-plus-square:before { content: "\f21c"; } +.fa-google-wallet:before { content: "\f21d"; } +.fa-graduation-cap:before { content: "\f21e"; } +.fa-gratipay:before, .fa-gittip:before { content: "\f21f"; } +.fa-group:before { content: "\f220"; } +.fa-h-square:before { content: "\f221"; } +.fa-hacker-news:before { content: "\f222"; } +.fa-hand-grab-o:before { content: "\f223"; } +.fa-hand-lizard-o:before { content: "\f224"; } +.fa-hand-o-down:before { content: "\f225"; } +.fa-hand-o-left:before { content: "\f226"; } +.fa-hand-o-right:before { content: "\f227"; } +.fa-hand-o-up:before { content: "\f228"; } +.fa-hand-paper-o:before { content: "\f229"; } +.fa-hand-peace-o:before { content: "\f22a"; } +.fa-hand-pointer-o:before { content: "\f22b"; } +.fa-hand-rock-o:before { content: "\f22c"; } +.fa-hand-scissors-o:before { content: "\f22d"; } +.fa-hand-spock-o:before { content: "\f22e"; } +.fa-hand-stop-o:before { content: "\f22f"; } +.fa-hdd-o:before { content: "\f230"; } +.fa-header:before { content: "\f231"; } +.fa-headphones:before { content: "\f232"; } +.fa-heart:before { content: "\f233"; } +.fa-heart-o:before { content: "\f234"; } +.fa-heartbeat:before { content: "\f235"; } +.fa-history:before { content: "\f236"; } +.fa-home:before { content: "\f237"; } +.fa-hospital-o:before { content: "\f238"; } +.fa-hotel:before { content: "\f239"; } +.fa-hourglass:before { content: "\f23a"; } +.fa-hourglass-1:before { content: "\f23b"; } +.fa-hourglass-2:before { content: "\f23c"; } +.fa-hourglass-3:before { content: "\f23d"; } +.fa-hourglass-end:before { content: "\f23e"; } +.fa-hourglass-half:before { content: "\f23f"; } +.fa-hourglass-o:before { content: "\f240"; } +.fa-hourglass-start:before { content: "\f241"; } +.fa-houzz:before { content: "\f242"; } +.fa-html5:before { content: "\f243"; } +.fa-i-cursor:before { content: "\f244"; } +.fa-ils:before { content: "\f245"; } +.fa-image:before { content: "\f246"; } +.fa-inbox:before { content: "\f247"; } +.fa-indent:before { content: "\f248"; } +.fa-industry:before { content: "\f249"; } +.fa-info:before { content: "\f24a"; } +.fa-info-circle:before { content: "\f24b"; } +.fa-inr:before { content: "\f24c"; } +.fa-instagram:before { content: "\f24d"; } +.fa-institution:before { content: "\f24e"; } +.fa-internet-explorer:before { content: "\f24f"; } +.fa-ioxhost:before { content: "\f250"; } +.fa-italic:before { content: "\f251"; } +.fa-joomla:before { content: "\f252"; } +.fa-jpy:before { content: "\f253"; } +.fa-jsfiddle:before { content: "\f254"; } +.fa-key:before { content: "\f255"; } +.fa-keyboard-o:before { content: "\f256"; } +.fa-krw:before { content: "\f257"; } +.fa-language:before { content: "\f258"; } +.fa-laptop:before { content: "\f259"; } +.fa-lastfm:before { content: "\f25a"; } +.fa-lastfm-square:before { content: "\f25b"; } +.fa-leaf:before { content: "\f25c"; } +.fa-leanpub:before { content: "\f25d"; } +.fa-legal:before { content: "\f25e"; } +.fa-lemon-o:before { content: "\f25f"; } +.fa-level-down:before { content: "\f260"; } +.fa-level-up:before { content: "\f261"; } +.fa-life-bouy:before { content: "\f262"; } +.fa-life-buoy:before { content: "\f263"; } +.fa-life-ring:before, .fa-support:before { content: "\f264"; } +.fa-life-saver:before { content: "\f265"; } +.fa-lightbulb-o:before { content: "\f266"; } +.fa-line-chart:before { content: "\f267"; } +.fa-link:before { content: "\f268"; } +.fa-linkedin:before { content: "\f269"; } +.fa-linkedin-square:before { content: "\f26a"; } +.fa-linux:before { content: "\f26b"; } +.fa-list:before { content: "\f26c"; } +.fa-list-alt:before { content: "\f26d"; } +.fa-list-ol:before { content: "\f26e"; } +.fa-list-ul:before { content: "\f26f"; } +.fa-location-arrow:before { content: "\f270"; } +.fa-lock:before { content: "\f271"; } +.fa-long-arrow-down:before { content: "\f272"; } +.fa-long-arrow-left:before { content: "\f273"; } +.fa-long-arrow-right:before { content: "\f274"; } +.fa-long-arrow-up:before { content: "\f275"; } +.fa-magic:before { content: "\f276"; } +.fa-magnet:before { content: "\f277"; } +.fa-mail-forward:before { content: "\f278"; } +.fa-mail-reply:before { content: "\f279"; } +.fa-mail-reply-all:before { content: "\f27a"; } +.fa-male:before { content: "\f27b"; } +.fa-map:before { content: "\f27c"; } +.fa-map-marker:before { content: "\f27d"; } +.fa-map-o:before { content: "\f27e"; } +.fa-map-pin:before { content: "\f27f"; } +.fa-map-signs:before { content: "\f280"; } +.fa-mars:before { content: "\f281"; } +.fa-mars-double:before { content: "\f282"; } +.fa-mars-stroke:before { content: "\f283"; } +.fa-mars-stroke-h:before { content: "\f284"; } +.fa-mars-stroke-v:before { content: "\f285"; } +.fa-maxcdn:before { content: "\f286"; } +.fa-meanpath:before { content: "\f287"; } +.fa-medium:before { content: "\f288"; } +.fa-medkit:before { content: "\f289"; } +.fa-meh-o:before { content: "\f28a"; } +.fa-mercury:before { content: "\f28b"; } +.fa-microphone:before { content: "\f28c"; } +.fa-microphone-slash:before { content: "\f28d"; } +.fa-minus:before { content: "\f28e"; } +.fa-minus-circle:before { content: "\f28f"; } +.fa-minus-square:before { content: "\f290"; } +.fa-minus-square-o:before { content: "\f291"; } +.fa-mobile:before { content: "\f292"; } +.fa-mobile-phone:before { content: "\f293"; } +.fa-money:before { content: "\f294"; } +.fa-moon-o:before { content: "\f295"; } +.fa-mortar-board:before { content: "\f296"; } +.fa-motorcycle:before { content: "\f297"; } +.fa-mouse-pointer:before { content: "\f298"; } +.fa-music:before { content: "\f299"; } +.fa-navicon:before { content: "\f29a"; } +.fa-neuter:before { content: "\f29b"; } +.fa-newspaper-o:before { content: "\f29c"; } +.fa-object-group:before { content: "\f29d"; } +.fa-object-ungroup:before { content: "\f29e"; } +.fa-odnoklassniki:before { content: "\f29f"; } +.fa-odnoklassniki-square:before { content: "\f2a0"; } +.fa-opencart:before { content: "\f2a1"; } +.fa-openid:before { content: "\f2a2"; } +.fa-opera:before { content: "\f2a3"; } +.fa-optin-monster:before { content: "\f2a4"; } +.fa-outdent:before { content: "\f2a5"; } +.fa-pagelines:before { content: "\f2a6"; } +.fa-paint-brush:before { content: "\f2a7"; } +.fa-paper-plane:before, .fa-send:before { content: "\f2a8"; } +.fa-paper-plane-o:before, .fa-send-o:before { content: "\f2a9"; } +.fa-paperclip:before { content: "\f2aa"; } +.fa-paragraph:before { content: "\f2ab"; } +.fa-paste:before { content: "\f2ac"; } +.fa-pause:before { content: "\f2ad"; } +.fa-paw:before { content: "\f2ae"; } +.fa-paypal:before { content: "\f2af"; } +.fa-pencil:before { content: "\f2b0"; } +.fa-pencil-square:before { content: "\f2b1"; } +.fa-pencil-square-o:before { content: "\f2b2"; } +.fa-phone:before { content: "\f2b3"; } +.fa-phone-square:before { content: "\f2b4"; } +.fa-photo:before { content: "\f2b5"; } +.fa-picture-o:before { content: "\f2b6"; } +.fa-pie-chart:before { content: "\f2b7"; } +.fa-pied-piper:before { content: "\f2b8"; } +.fa-pied-piper-alt:before { content: "\f2b9"; } +.fa-pinterest:before { content: "\f2ba"; } +.fa-pinterest-p:before { content: "\f2bb"; } +.fa-pinterest-square:before { content: "\f2bc"; } +.fa-plane:before { content: "\f2bd"; } +.fa-play:before { content: "\f2be"; } +.fa-play-circle:before { content: "\f2bf"; } +.fa-play-circle-o:before { content: "\f2c0"; } +.fa-plug:before { content: "\f2c1"; } +.fa-plus:before { content: "\f2c2"; } +.fa-plus-circle:before { content: "\f2c3"; } +.fa-plus-square:before { content: "\f2c4"; } +.fa-plus-square-o:before { content: "\f2c5"; } +.fa-power-off:before { content: "\f2c6"; } +.fa-print:before { content: "\f2c7"; } +.fa-puzzle-piece:before { content: "\f2c8"; } +.fa-qq:before { content: "\f2c9"; } +.fa-qrcode:before { content: "\f2ca"; } +.fa-question:before { content: "\f2cb"; } +.fa-question-circle:before { content: "\f2cc"; } +.fa-quote-left:before { content: "\f2cd"; } +.fa-quote-right:before { content: "\f2ce"; } +.fa-ra:before { content: "\f2cf"; } +.fa-random:before { content: "\f2d0"; } +.fa-rebel:before { content: "\f2d1"; } +.fa-recycle:before { content: "\f2d2"; } +.fa-reddit:before { content: "\f2d3"; } +.fa-reddit-square:before { content: "\f2d4"; } +.fa-refresh:before { content: "\f2d5"; } +.fa-registered:before { content: "\f2d6"; } +.fa-renren:before { content: "\f2d7"; } +.fa-reorder:before { content: "\f2d8"; } +.fa-repeat:before { content: "\f2d9"; } +.fa-reply:before { content: "\f2da"; } +.fa-reply-all:before { content: "\f2db"; } +.fa-retweet:before { content: "\f2dc"; } +.fa-rmb:before { content: "\f2dd"; } +.fa-road:before { content: "\f2de"; } +.fa-rocket:before { content: "\f2df"; } +.fa-rotate-left:before { content: "\f2e0"; } +.fa-rotate-right:before { content: "\f2e1"; } +.fa-rouble:before { content: "\f2e2"; } +.fa-rss:before, .fa-feed:before { content: "\f2e3"; } +.fa-rss-square:before { content: "\f2e4"; } +.fa-rub:before { content: "\f2e5"; } +.fa-ruble:before { content: "\f2e6"; } +.fa-rupee:before { content: "\f2e7"; } +.fa-safari:before { content: "\f2e8"; } +.fa-save:before { content: "\f2e9"; } +.fa-scissors:before { content: "\f2ea"; } +.fa-search:before { content: "\f2eb"; } +.fa-search-minus:before { content: "\f2ec"; } +.fa-search-plus:before { content: "\f2ed"; } +.fa-sellsy:before { content: "\f2ee"; } +.fa-server:before { content: "\f2ef"; } +.fa-share:before { content: "\f2f0"; } +.fa-share-alt:before { content: "\f2f1"; } +.fa-share-alt-square:before { content: "\f2f2"; } +.fa-share-square:before { content: "\f2f3"; } +.fa-share-square-o:before { content: "\f2f4"; } +.fa-shekel:before { content: "\f2f5"; } +.fa-sheqel:before { content: "\f2f6"; } +.fa-shield:before { content: "\f2f7"; } +.fa-ship:before { content: "\f2f8"; } +.fa-shirtsinbulk:before { content: "\f2f9"; } +.fa-shopping-cart:before { content: "\f2fa"; } +.fa-sign-in:before { content: "\f2fb"; } +.fa-sign-out:before { content: "\f2fc"; } +.fa-signal:before { content: "\f2fd"; } +.fa-simplybuilt:before { content: "\f2fe"; } +.fa-sitemap:before { content: "\f2ff"; } +.fa-skyatlas:before { content: "\f300"; } +.fa-skype:before { content: "\f301"; } +.fa-slack:before { content: "\f302"; } +.fa-sliders:before { content: "\f303"; } +.fa-slideshare:before { content: "\f304"; } +.fa-smile-o:before { content: "\f305"; } +.fa-sort:before, .fa-unsorted:before { content: "\f306"; } +.fa-sort-alpha-asc:before { content: "\f307"; } +.fa-sort-alpha-desc:before { content: "\f308"; } +.fa-sort-amount-asc:before { content: "\f309"; } +.fa-sort-amount-desc:before { content: "\f30a"; } +.fa-sort-asc:before, .fa-sort-up:before { content: "\f30b"; } +.fa-sort-desc:before, .fa-sort-down:before { content: "\f30c"; } +.fa-sort-numeric-asc:before { content: "\f30d"; } +.fa-sort-numeric-desc:before { content: "\f30e"; } +.fa-soundcloud:before { content: "\f30f"; } +.fa-space-shuttle:before { content: "\f310"; } +.fa-spinner:before { content: "\f311"; } +.fa-spoon:before { content: "\f312"; } +.fa-spotify:before { content: "\f313"; } +.fa-square:before { content: "\f314"; } +.fa-square-o:before { content: "\f315"; } +.fa-stack-exchange:before { content: "\f316"; } +.fa-stack-overflow:before { content: "\f317"; } +.fa-star:before { content: "\f318"; } +.fa-star-half:before { content: "\f319"; } +.fa-star-half-o:before, .fa-star-half-full:before, .fa-star-half-empty:before { content: "\f31a"; } +.fa-star-o:before { content: "\f31b"; } +.fa-steam:before { content: "\f31c"; } +.fa-steam-square:before { content: "\f31d"; } +.fa-step-backward:before { content: "\f31e"; } +.fa-step-forward:before { content: "\f31f"; } +.fa-stethoscope:before { content: "\f320"; } +.fa-sticky-note:before { content: "\f321"; } +.fa-sticky-note-o:before { content: "\f322"; } +.fa-stop:before { content: "\f323"; } +.fa-street-view:before { content: "\f324"; } +.fa-strikethrough:before { content: "\f325"; } +.fa-stumbleupon:before { content: "\f326"; } +.fa-stumbleupon-circle:before { content: "\f327"; } +.fa-subscript:before { content: "\f328"; } +.fa-subway:before { content: "\f329"; } +.fa-suitcase:before { content: "\f32a"; } +.fa-sun-o:before { content: "\f32b"; } +.fa-superscript:before { content: "\f32c"; } +.fa-table:before { content: "\f32d"; } +.fa-tablet:before { content: "\f32e"; } +.fa-tachometer:before { content: "\f32f"; } +.fa-tag:before { content: "\f330"; } +.fa-tags:before { content: "\f331"; } +.fa-tasks:before { content: "\f332"; } +.fa-taxi:before { content: "\f333"; } +.fa-television:before, .fa-tv:before { content: "\f334"; } +.fa-tencent-weibo:before { content: "\f335"; } +.fa-terminal:before { content: "\f336"; } +.fa-text-height:before { content: "\f337"; } +.fa-text-width:before { content: "\f338"; } +.fa-th:before { content: "\f339"; } +.fa-th-large:before { content: "\f33a"; } +.fa-th-list:before { content: "\f33b"; } +.fa-thumb-tack:before { content: "\f33c"; } +.fa-thumbs-down:before { content: "\f33d"; } +.fa-thumbs-o-down:before { content: "\f33e"; } +.fa-thumbs-o-up:before { content: "\f33f"; } +.fa-thumbs-up:before { content: "\f340"; } +.fa-ticket:before { content: "\f341"; } +.fa-times:before, .fa-remove:before { content: "\f342"; } +.fa-times-circle:before { content: "\f343"; } +.fa-times-circle-o:before { content: "\f344"; } +.fa-tint:before { content: "\f345"; } +.fa-toggle-off:before { content: "\f346"; } +.fa-toggle-on:before { content: "\f347"; } +.fa-trademark:before { content: "\f348"; } +.fa-train:before { content: "\f349"; } +.fa-transgender:before, .fa-intersex:before { content: "\f34a"; } +.fa-transgender-alt:before { content: "\f34b"; } +.fa-trash:before { content: "\f34c"; } +.fa-trash-o:before { content: "\f34d"; } +.fa-tree:before { content: "\f34e"; } +.fa-trello:before { content: "\f34f"; } +.fa-tripadvisor:before { content: "\f350"; } +.fa-trophy:before { content: "\f351"; } +.fa-truck:before { content: "\f352"; } +.fa-try:before { content: "\f353"; } +.fa-tty:before { content: "\f354"; } +.fa-tumblr:before { content: "\f355"; } +.fa-tumblr-square:before { content: "\f356"; } +.fa-turkish-lira:before { content: "\f357"; } +.fa-twitch:before { content: "\f358"; } +.fa-twitter:before { content: "\f359"; } +.fa-twitter-square:before { content: "\f35a"; } +.fa-umbrella:before { content: "\f35b"; } +.fa-underline:before { content: "\f35c"; } +.fa-undo:before { content: "\f35d"; } +.fa-university:before { content: "\f35e"; } +.fa-unlink:before { content: "\f35f"; } +.fa-unlock:before { content: "\f360"; } +.fa-unlock-alt:before { content: "\f361"; } +.fa-upload:before { content: "\f362"; } +.fa-usd:before { content: "\f363"; } +.fa-user:before { content: "\f364"; } +.fa-user-md:before { content: "\f365"; } +.fa-user-plus:before { content: "\f366"; } +.fa-user-secret:before { content: "\f367"; } +.fa-user-times:before { content: "\f368"; } +.fa-users:before { content: "\f369"; } +.fa-venus:before { content: "\f36a"; } +.fa-venus-double:before { content: "\f36b"; } +.fa-venus-mars:before { content: "\f36c"; } +.fa-viacoin:before { content: "\f36d"; } +.fa-video-camera:before { content: "\f36e"; } +.fa-vimeo:before { content: "\f36f"; } +.fa-vimeo-square:before { content: "\f370"; } +.fa-vine:before { content: "\f371"; } +.fa-vk:before { content: "\f372"; } +.fa-volume-down:before { content: "\f373"; } +.fa-volume-off:before { content: "\f374"; } +.fa-volume-up:before { content: "\f375"; } +.fa-warning:before { content: "\f376"; } +.fa-wechat:before { content: "\f377"; } +.fa-weibo:before { content: "\f378"; } +.fa-weixin:before { content: "\f379"; } +.fa-whatsapp:before { content: "\f37a"; } +.fa-wheelchair:before { content: "\f37b"; } +.fa-wifi:before { content: "\f37c"; } +.fa-wikipedia-w:before { content: "\f37d"; } +.fa-windows:before { content: "\f37e"; } +.fa-won:before { content: "\f37f"; } +.fa-wordpress:before { content: "\f380"; } +.fa-wrench:before { content: "\f381"; } +.fa-xing:before { content: "\f382"; } +.fa-xing-square:before { content: "\f383"; } +.fa-y-combinator:before { content: "\f384"; } +.fa-y-combinator-square:before { content: "\f385"; } +.fa-yahoo:before { content: "\f386"; } +.fa-yc:before { content: "\f387"; } +.fa-yc-square:before { content: "\f388"; } +.fa-yelp:before { content: "\f389"; } +.fa-yen:before { content: "\f38a"; } +.fa-youtube:before { content: "\f38b"; } +.fa-youtube-play:before { content: "\f38c"; } +.fa-youtube-square:before { content: "\f38d"; } \ No newline at end of file diff --git a/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.min.css b/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.min.css new file mode 100644 index 0000000..0924a66 --- /dev/null +++ b/src/assets/fonts/line-awesome/css/line-awesome-font-awesome.min.css @@ -0,0 +1,15 @@ +/*! + * Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome + * License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License) + * + * Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ] + * + * Contacts: + * [ https://icons8.com/contact ] + * + * Follow Icon8 on + * Twitter [ https://twitter.com/icons_8 ] + * Facebook [ https://www.facebook.com/Icons8 ] + * Google+ [ https://plus.google.com/+Icons8 ] + * GitHub [ https://github.com/icons8 ] + */.fa,.fa-stack{display:inline-block}.fa-fw,.fa-li{text-align:center}@font-face{font-family:FontAwesome;src:url(../fonts/line-awesome.eot?v=1.1.);src:url(../fonts/line-awesome.eot??v=1.1.#iefix) format("embedded-opentype"),url(../fonts/line-awesome.woff2?v=1.1.) format("woff2"),url(../fonts/line-awesome.woff?v=1.1.) format("woff"),url(../fonts/line-awesome.ttf?v=1.1.) format("truetype"),url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:FontAwesome;src:url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg")}}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f100"}.fa-adjust:before{content:"\f101"}.fa-adn:before{content:"\f102"}.fa-align-center:before{content:"\f103"}.fa-align-justify:before{content:"\f104"}.fa-align-left:before{content:"\f105"}.fa-align-right:before{content:"\f106"}.fa-amazon:before{content:"\f107"}.fa-ambulance:before{content:"\f108"}.fa-anchor:before{content:"\f109"}.fa-android:before{content:"\f10a"}.fa-angellist:before{content:"\f10b"}.fa-angle-double-down:before{content:"\f10c"}.fa-angle-double-left:before{content:"\f10d"}.fa-angle-double-right:before{content:"\f10e"}.fa-angle-double-up:before{content:"\f10f"}.fa-angle-down:before{content:"\f110"}.fa-angle-left:before{content:"\f111"}.fa-angle-right:before{content:"\f112"}.fa-angle-up:before{content:"\f113"}.fa-apple:before{content:"\f114"}.fa-archive:before{content:"\f115"}.fa-area-chart:before{content:"\f116"}.fa-arrow-circle-down:before{content:"\f117"}.fa-arrow-circle-left:before{content:"\f118"}.fa-arrow-circle-o-down:before{content:"\f119"}.fa-arrow-circle-o-left:before{content:"\f11a"}.fa-arrow-circle-o-right:before{content:"\f11b"}.fa-arrow-circle-o-up:before{content:"\f11c"}.fa-arrow-circle-right:before{content:"\f11d"}.fa-arrow-circle-up:before{content:"\f11e"}.fa-arrow-down:before{content:"\f11f"}.fa-arrow-left:before{content:"\f120"}.fa-arrow-right:before{content:"\f121"}.fa-arrow-up:before{content:"\f122"}.fa-arrows:before{content:"\f123"}.fa-arrows-alt:before{content:"\f124"}.fa-arrows-h:before{content:"\f125"}.fa-arrows-v:before{content:"\f126"}.fa-asterisk:before{content:"\f127"}.fa-at:before{content:"\f128"}.fa-automobile:before{content:"\f129"}.fa-backward:before{content:"\f12a"}.fa-balance-scale:before{content:"\f12b"}.fa-ban:before{content:"\f12c"}.fa-bank:before{content:"\f12d"}.fa-bar-chart:before{content:"\f12e"}.fa-bar-chart-o:before{content:"\f12f"}.fa-barcode:before{content:"\f130"}.fa-bars:before{content:"\f131"}.fa-battery-0:before{content:"\f132"}.fa-battery-1:before{content:"\f133"}.fa-battery-2:before{content:"\f134"}.fa-battery-3:before{content:"\f135"}.fa-battery-4:before{content:"\f136"}.fa-battery-empty:before{content:"\f137"}.fa-battery-full:before{content:"\f138"}.fa-battery-half:before{content:"\f139"}.fa-battery-quarter:before{content:"\f13a"}.fa-battery-three-quarters:before{content:"\f13b"}.fa-bed:before{content:"\f13c"}.fa-beer:before{content:"\f13d"}.fa-behance:before{content:"\f13e"}.fa-behance-square:before{content:"\f13f"}.fa-bell:before{content:"\f140"}.fa-bell-o:before{content:"\f141"}.fa-bell-slash:before{content:"\f142"}.fa-bell-slash-o:before{content:"\f143"}.fa-bicycle:before{content:"\f144"}.fa-binoculars:before{content:"\f145"}.fa-birthday-cake:before{content:"\f146"}.fa-bitbucket:before{content:"\f147"}.fa-bitbucket-square:before{content:"\f148"}.fa-bitcoin:before{content:"\f149"}.fa-black-tie:before{content:"\f14a"}.fa-bold:before{content:"\f14b"}.fa-bolt:before{content:"\f14c"}.fa-bomb:before{content:"\f14d"}.fa-book:before{content:"\f14e"}.fa-bookmark:before{content:"\f14f"}.fa-bookmark-o:before{content:"\f150"}.fa-briefcase:before{content:"\f151"}.fa-btc:before{content:"\f152"}.fa-bug:before{content:"\f153"}.fa-building:before{content:"\f154"}.fa-building-o:before{content:"\f155"}.fa-bullhorn:before{content:"\f156"}.fa-bullseye:before{content:"\f157"}.fa-bus:before{content:"\f158"}.fa-buysellads:before{content:"\f159"}.fa-cab:before{content:"\f15a"}.fa-calculator:before{content:"\f15b"}.fa-calendar:before{content:"\f15c"}.fa-calendar-check-o:before{content:"\f15d"}.fa-calendar-minus-o:before{content:"\f15e"}.fa-calendar-o:before{content:"\f15f"}.fa-calendar-plus-o:before{content:"\f160"}.fa-calendar-times-o:before{content:"\f161"}.fa-camera:before{content:"\f162"}.fa-camera-retro:before{content:"\f163"}.fa-car:before{content:"\f164"}.fa-caret-down:before{content:"\f165"}.fa-caret-left:before{content:"\f166"}.fa-caret-right:before{content:"\f167"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f168"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f169"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f16a"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f16b"}.fa-caret-up:before{content:"\f16c"}.fa-cart-arrow-down:before{content:"\f16d"}.fa-cart-plus:before{content:"\f16e"}.fa-cc:before{content:"\f16f"}.fa-cc-amex:before{content:"\f170"}.fa-cc-diners-club:before{content:"\f171"}.fa-cc-discover:before{content:"\f172"}.fa-cc-jcb:before{content:"\f173"}.fa-cc-mastercard:before{content:"\f174"}.fa-cc-paypal:before{content:"\f175"}.fa-cc-stripe:before{content:"\f176"}.fa-cc-visa:before{content:"\f177"}.fa-certificate:before{content:"\f178"}.fa-chain:before{content:"\f179"}.fa-chain-broken:before{content:"\f17a"}.fa-check:before{content:"\f17b"}.fa-check-circle:before{content:"\f17c"}.fa-check-circle-o:before{content:"\f17d"}.fa-check-square:before{content:"\f17e"}.fa-check-square-o:before{content:"\f17f"}.fa-chevron-circle-down:before{content:"\f180"}.fa-chevron-circle-left:before{content:"\f181"}.fa-chevron-circle-right:before{content:"\f182"}.fa-chevron-circle-up:before{content:"\f183"}.fa-chevron-down:before{content:"\f184"}.fa-chevron-left:before{content:"\f185"}.fa-chevron-right:before{content:"\f186"}.fa-chevron-up:before{content:"\f187"}.fa-child:before{content:"\f188"}.fa-chrome:before{content:"\f189"}.fa-circle:before{content:"\f18a"}.fa-circle-o:before{content:"\f18b"}.fa-circle-o-notch:before{content:"\f18c"}.fa-circle-thin:before{content:"\f18d"}.fa-clipboard:before{content:"\f18e"}.fa-clock-o:before{content:"\f18f"}.fa-clone:before{content:"\f190"}.fa-close:before{content:"\f191"}.fa-cloud:before{content:"\f192"}.fa-cloud-download:before{content:"\f193"}.fa-cloud-upload:before{content:"\f194"}.fa-cny:before{content:"\f195"}.fa-code:before{content:"\f196"}.fa-code-fork:before{content:"\f197"}.fa-codepen:before{content:"\f198"}.fa-coffee:before{content:"\f199"}.fa-cog:before{content:"\f19a"}.fa-cogs:before{content:"\f19b"}.fa-columns:before{content:"\f19c"}.fa-comment:before{content:"\f19d"}.fa-comment-o:before{content:"\f19e"}.fa-commenting:before{content:"\f19f"}.fa-commenting-o:before{content:"\f1a0"}.fa-comments:before{content:"\f1a1"}.fa-comments-o:before{content:"\f1a2"}.fa-compass:before{content:"\f1a3"}.fa-compress:before{content:"\f1a4"}.fa-connectdevelop:before{content:"\f1a5"}.fa-contao:before{content:"\f1a6"}.fa-copy:before{content:"\f1a7"}.fa-copyright:before{content:"\f1a8"}.fa-creative-commons:before{content:"\f1a9"}.fa-credit-card:before{content:"\f1aa"}.fa-crop:before{content:"\f1ab"}.fa-crosshairs:before{content:"\f1ac"}.fa-css3:before{content:"\f1ad"}.fa-cube:before{content:"\f1ae"}.fa-cubes:before{content:"\f1af"}.fa-cut:before{content:"\f1b0"}.fa-cutlery:before{content:"\f1b1"}.fa-dashboard:before{content:"\f1b2"}.fa-dashcube:before{content:"\f1b3"}.fa-database:before{content:"\f1b4"}.fa-dedent:before{content:"\f1b5"}.fa-delicious:before{content:"\f1b6"}.fa-desktop:before{content:"\f1b7"}.fa-deviantart:before{content:"\f1b8"}.fa-diamond:before{content:"\f1b9"}.fa-digg:before{content:"\f1ba"}.fa-dollar:before{content:"\f1bb"}.fa-dot-circle-o:before{content:"\f1bc"}.fa-download:before{content:"\f1bd"}.fa-dribbble:before{content:"\f1be"}.fa-dropbox:before{content:"\f1bf"}.fa-drupal:before{content:"\f1c0"}.fa-edit:before{content:"\f1c1"}.fa-eject:before{content:"\f1c2"}.fa-ellipsis-h:before{content:"\f1c3"}.fa-ellipsis-v:before{content:"\f1c4"}.fa-empire:before,.fa-ge:before{content:"\f1c5"}.fa-envelope:before{content:"\f1c6"}.fa-envelope-o:before{content:"\f1c7"}.fa-envelope-square:before{content:"\f1c8"}.fa-eraser:before{content:"\f1c9"}.fa-eur:before{content:"\f1ca"}.fa-euro:before{content:"\f1cb"}.fa-exchange:before{content:"\f1cc"}.fa-exclamation:before{content:"\f1cd"}.fa-exclamation-circle:before{content:"\f1ce"}.fa-exclamation-triangle:before{content:"\f1cf"}.fa-expand:before{content:"\f1d0"}.fa-expeditedssl:before{content:"\f1d1"}.fa-external-link:before{content:"\f1d2"}.fa-external-link-square:before{content:"\f1d3"}.fa-eye:before{content:"\f1d4"}.fa-eye-slash:before{content:"\f1d5"}.fa-eyedropper:before{content:"\f1d6"}.fa-facebook-f:before,.fa-facebook:before{content:"\f1d7"}.fa-facebook-official:before{content:"\f1d8"}.fa-facebook-square:before{content:"\f1d9"}.fa-fast-backward:before{content:"\f1da"}.fa-fast-forward:before{content:"\f1db"}.fa-fax:before{content:"\f1dc"}.fa-female:before{content:"\f1dd"}.fa-fighter-jet:before{content:"\f1de"}.fa-file:before{content:"\f1df"}.fa-file-archive-o:before{content:"\f1e0"}.fa-file-audio-o:before{content:"\f1e1"}.fa-file-code-o:before{content:"\f1e2"}.fa-file-excel-o:before{content:"\f1e3"}.fa-file-image-o:before{content:"\f1e4"}.fa-file-movie-o:before{content:"\f1e5"}.fa-file-o:before{content:"\f1e6"}.fa-file-pdf-o:before{content:"\f1e7"}.fa-file-photo-o:before{content:"\f1e8"}.fa-file-picture-o:before{content:"\f1e9"}.fa-file-powerpoint-o:before{content:"\f1ea"}.fa-file-sound-o:before{content:"\f1eb"}.fa-file-text:before{content:"\f1ec"}.fa-file-text-o:before{content:"\f1ed"}.fa-file-video-o:before{content:"\f1ee"}.fa-file-word-o:before{content:"\f1ef"}.fa-file-zip-o:before{content:"\f1f0"}.fa-files-o:before{content:"\f1f1"}.fa-film:before{content:"\f1f2"}.fa-filter:before{content:"\f1f3"}.fa-fire:before{content:"\f1f4"}.fa-fire-extinguisher:before{content:"\f1f5"}.fa-firefox:before{content:"\f1f6"}.fa-flag:before{content:"\f1f7"}.fa-flag-checkered:before{content:"\f1f8"}.fa-flag-o:before{content:"\f1f9"}.fa-flash:before{content:"\f1fa"}.fa-flask:before{content:"\f1fb"}.fa-flickr:before{content:"\f1fc"}.fa-floppy-o:before{content:"\f1fd"}.fa-folder:before{content:"\f1fe"}.fa-folder-o:before{content:"\f1ff"}.fa-folder-open:before{content:"\f200"}.fa-folder-open-o:before{content:"\f201"}.fa-font:before{content:"\f202"}.fa-fonticons:before{content:"\f203"}.fa-forumbee:before{content:"\f204"}.fa-forward:before{content:"\f205"}.fa-foursquare:before{content:"\f206"}.fa-frown-o:before{content:"\f207"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f208"}.fa-gamepad:before{content:"\f209"}.fa-gavel:before{content:"\f20a"}.fa-gbp:before{content:"\f20b"}.fa-gear:before{content:"\f20c"}.fa-gears:before{content:"\f20d"}.fa-genderless:before{content:"\f20e"}.fa-get-pocket:before{content:"\f20f"}.fa-gg:before{content:"\f210"}.fa-gg-circle:before{content:"\f211"}.fa-gift:before{content:"\f212"}.fa-git:before{content:"\f213"}.fa-git-square:before{content:"\f214"}.fa-github:before{content:"\f215"}.fa-github-alt:before{content:"\f216"}.fa-github-square:before{content:"\f217"}.fa-glass:before{content:"\f218"}.fa-globe:before{content:"\f219"}.fa-google:before{content:"\f21a"}.fa-google-plus:before{content:"\f21b"}.fa-google-plus-square:before{content:"\f21c"}.fa-google-wallet:before{content:"\f21d"}.fa-graduation-cap:before{content:"\f21e"}.fa-gittip:before,.fa-gratipay:before{content:"\f21f"}.fa-group:before{content:"\f220"}.fa-h-square:before{content:"\f221"}.fa-hacker-news:before{content:"\f222"}.fa-hand-grab-o:before{content:"\f223"}.fa-hand-lizard-o:before{content:"\f224"}.fa-hand-o-down:before{content:"\f225"}.fa-hand-o-left:before{content:"\f226"}.fa-hand-o-right:before{content:"\f227"}.fa-hand-o-up:before{content:"\f228"}.fa-hand-paper-o:before{content:"\f229"}.fa-hand-peace-o:before{content:"\f22a"}.fa-hand-pointer-o:before{content:"\f22b"}.fa-hand-rock-o:before{content:"\f22c"}.fa-hand-scissors-o:before{content:"\f22d"}.fa-hand-spock-o:before{content:"\f22e"}.fa-hand-stop-o:before{content:"\f22f"}.fa-hdd-o:before{content:"\f230"}.fa-header:before{content:"\f231"}.fa-headphones:before{content:"\f232"}.fa-heart:before{content:"\f233"}.fa-heart-o:before{content:"\f234"}.fa-heartbeat:before{content:"\f235"}.fa-history:before{content:"\f236"}.fa-home:before{content:"\f237"}.fa-hospital-o:before{content:"\f238"}.fa-hotel:before{content:"\f239"}.fa-hourglass:before{content:"\f23a"}.fa-hourglass-1:before{content:"\f23b"}.fa-hourglass-2:before{content:"\f23c"}.fa-hourglass-3:before{content:"\f23d"}.fa-hourglass-end:before{content:"\f23e"}.fa-hourglass-half:before{content:"\f23f"}.fa-hourglass-o:before{content:"\f240"}.fa-hourglass-start:before{content:"\f241"}.fa-houzz:before{content:"\f242"}.fa-html5:before{content:"\f243"}.fa-i-cursor:before{content:"\f244"}.fa-ils:before{content:"\f245"}.fa-image:before{content:"\f246"}.fa-inbox:before{content:"\f247"}.fa-indent:before{content:"\f248"}.fa-industry:before{content:"\f249"}.fa-info:before{content:"\f24a"}.fa-info-circle:before{content:"\f24b"}.fa-inr:before{content:"\f24c"}.fa-instagram:before{content:"\f24d"}.fa-institution:before{content:"\f24e"}.fa-internet-explorer:before{content:"\f24f"}.fa-ioxhost:before{content:"\f250"}.fa-italic:before{content:"\f251"}.fa-joomla:before{content:"\f252"}.fa-jpy:before{content:"\f253"}.fa-jsfiddle:before{content:"\f254"}.fa-key:before{content:"\f255"}.fa-keyboard-o:before{content:"\f256"}.fa-krw:before{content:"\f257"}.fa-language:before{content:"\f258"}.fa-laptop:before{content:"\f259"}.fa-lastfm:before{content:"\f25a"}.fa-lastfm-square:before{content:"\f25b"}.fa-leaf:before{content:"\f25c"}.fa-leanpub:before{content:"\f25d"}.fa-legal:before{content:"\f25e"}.fa-lemon-o:before{content:"\f25f"}.fa-level-down:before{content:"\f260"}.fa-level-up:before{content:"\f261"}.fa-life-bouy:before{content:"\f262"}.fa-life-buoy:before{content:"\f263"}.fa-life-ring:before,.fa-support:before{content:"\f264"}.fa-life-saver:before{content:"\f265"}.fa-lightbulb-o:before{content:"\f266"}.fa-line-chart:before{content:"\f267"}.fa-link:before{content:"\f268"}.fa-linkedin:before{content:"\f269"}.fa-linkedin-square:before{content:"\f26a"}.fa-linux:before{content:"\f26b"}.fa-list:before{content:"\f26c"}.fa-list-alt:before{content:"\f26d"}.fa-list-ol:before{content:"\f26e"}.fa-list-ul:before{content:"\f26f"}.fa-location-arrow:before{content:"\f270"}.fa-lock:before{content:"\f271"}.fa-long-arrow-down:before{content:"\f272"}.fa-long-arrow-left:before{content:"\f273"}.fa-long-arrow-right:before{content:"\f274"}.fa-long-arrow-up:before{content:"\f275"}.fa-magic:before{content:"\f276"}.fa-magnet:before{content:"\f277"}.fa-mail-forward:before{content:"\f278"}.fa-mail-reply:before{content:"\f279"}.fa-mail-reply-all:before{content:"\f27a"}.fa-male:before{content:"\f27b"}.fa-map:before{content:"\f27c"}.fa-map-marker:before{content:"\f27d"}.fa-map-o:before{content:"\f27e"}.fa-map-pin:before{content:"\f27f"}.fa-map-signs:before{content:"\f280"}.fa-mars:before{content:"\f281"}.fa-mars-double:before{content:"\f282"}.fa-mars-stroke:before{content:"\f283"}.fa-mars-stroke-h:before{content:"\f284"}.fa-mars-stroke-v:before{content:"\f285"}.fa-maxcdn:before{content:"\f286"}.fa-meanpath:before{content:"\f287"}.fa-medium:before{content:"\f288"}.fa-medkit:before{content:"\f289"}.fa-meh-o:before{content:"\f28a"}.fa-mercury:before{content:"\f28b"}.fa-microphone:before{content:"\f28c"}.fa-microphone-slash:before{content:"\f28d"}.fa-minus:before{content:"\f28e"}.fa-minus-circle:before{content:"\f28f"}.fa-minus-square:before{content:"\f290"}.fa-minus-square-o:before{content:"\f291"}.fa-mobile:before{content:"\f292"}.fa-mobile-phone:before{content:"\f293"}.fa-money:before{content:"\f294"}.fa-moon-o:before{content:"\f295"}.fa-mortar-board:before{content:"\f296"}.fa-motorcycle:before{content:"\f297"}.fa-mouse-pointer:before{content:"\f298"}.fa-music:before{content:"\f299"}.fa-navicon:before{content:"\f29a"}.fa-neuter:before{content:"\f29b"}.fa-newspaper-o:before{content:"\f29c"}.fa-object-group:before{content:"\f29d"}.fa-object-ungroup:before{content:"\f29e"}.fa-odnoklassniki:before{content:"\f29f"}.fa-odnoklassniki-square:before{content:"\f2a0"}.fa-opencart:before{content:"\f2a1"}.fa-openid:before{content:"\f2a2"}.fa-opera:before{content:"\f2a3"}.fa-optin-monster:before{content:"\f2a4"}.fa-outdent:before{content:"\f2a5"}.fa-pagelines:before{content:"\f2a6"}.fa-paint-brush:before{content:"\f2a7"}.fa-paper-plane:before,.fa-send:before{content:"\f2a8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f2a9"}.fa-paperclip:before{content:"\f2aa"}.fa-paragraph:before{content:"\f2ab"}.fa-paste:before{content:"\f2ac"}.fa-pause:before{content:"\f2ad"}.fa-paw:before{content:"\f2ae"}.fa-paypal:before{content:"\f2af"}.fa-pencil:before{content:"\f2b0"}.fa-pencil-square:before{content:"\f2b1"}.fa-pencil-square-o:before{content:"\f2b2"}.fa-phone:before{content:"\f2b3"}.fa-phone-square:before{content:"\f2b4"}.fa-photo:before{content:"\f2b5"}.fa-picture-o:before{content:"\f2b6"}.fa-pie-chart:before{content:"\f2b7"}.fa-pied-piper:before{content:"\f2b8"}.fa-pied-piper-alt:before{content:"\f2b9"}.fa-pinterest:before{content:"\f2ba"}.fa-pinterest-p:before{content:"\f2bb"}.fa-pinterest-square:before{content:"\f2bc"}.fa-plane:before{content:"\f2bd"}.fa-play:before{content:"\f2be"}.fa-play-circle:before{content:"\f2bf"}.fa-play-circle-o:before{content:"\f2c0"}.fa-plug:before{content:"\f2c1"}.fa-plus:before{content:"\f2c2"}.fa-plus-circle:before{content:"\f2c3"}.fa-plus-square:before{content:"\f2c4"}.fa-plus-square-o:before{content:"\f2c5"}.fa-power-off:before{content:"\f2c6"}.fa-print:before{content:"\f2c7"}.fa-puzzle-piece:before{content:"\f2c8"}.fa-qq:before{content:"\f2c9"}.fa-qrcode:before{content:"\f2ca"}.fa-question:before{content:"\f2cb"}.fa-question-circle:before{content:"\f2cc"}.fa-quote-left:before{content:"\f2cd"}.fa-quote-right:before{content:"\f2ce"}.fa-ra:before{content:"\f2cf"}.fa-random:before{content:"\f2d0"}.fa-rebel:before{content:"\f2d1"}.fa-recycle:before{content:"\f2d2"}.fa-reddit:before{content:"\f2d3"}.fa-reddit-square:before{content:"\f2d4"}.fa-refresh:before{content:"\f2d5"}.fa-registered:before{content:"\f2d6"}.fa-renren:before{content:"\f2d7"}.fa-reorder:before{content:"\f2d8"}.fa-repeat:before{content:"\f2d9"}.fa-reply:before{content:"\f2da"}.fa-reply-all:before{content:"\f2db"}.fa-retweet:before{content:"\f2dc"}.fa-rmb:before{content:"\f2dd"}.fa-road:before{content:"\f2de"}.fa-rocket:before{content:"\f2df"}.fa-rotate-left:before{content:"\f2e0"}.fa-rotate-right:before{content:"\f2e1"}.fa-rouble:before{content:"\f2e2"}.fa-feed:before,.fa-rss:before{content:"\f2e3"}.fa-rss-square:before{content:"\f2e4"}.fa-rub:before{content:"\f2e5"}.fa-ruble:before{content:"\f2e6"}.fa-rupee:before{content:"\f2e7"}.fa-safari:before{content:"\f2e8"}.fa-save:before{content:"\f2e9"}.fa-scissors:before{content:"\f2ea"}.fa-search:before{content:"\f2eb"}.fa-search-minus:before{content:"\f2ec"}.fa-search-plus:before{content:"\f2ed"}.fa-sellsy:before{content:"\f2ee"}.fa-server:before{content:"\f2ef"}.fa-share:before{content:"\f2f0"}.fa-share-alt:before{content:"\f2f1"}.fa-share-alt-square:before{content:"\f2f2"}.fa-share-square:before{content:"\f2f3"}.fa-share-square-o:before{content:"\f2f4"}.fa-shekel:before{content:"\f2f5"}.fa-sheqel:before{content:"\f2f6"}.fa-shield:before{content:"\f2f7"}.fa-ship:before{content:"\f2f8"}.fa-shirtsinbulk:before{content:"\f2f9"}.fa-shopping-cart:before{content:"\f2fa"}.fa-sign-in:before{content:"\f2fb"}.fa-sign-out:before{content:"\f2fc"}.fa-signal:before{content:"\f2fd"}.fa-simplybuilt:before{content:"\f2fe"}.fa-sitemap:before{content:"\f2ff"}.fa-skyatlas:before{content:"\f300"}.fa-skype:before{content:"\f301"}.fa-slack:before{content:"\f302"}.fa-sliders:before{content:"\f303"}.fa-slideshare:before{content:"\f304"}.fa-smile-o:before{content:"\f305"}.fa-sort:before,.fa-unsorted:before{content:"\f306"}.fa-sort-alpha-asc:before{content:"\f307"}.fa-sort-alpha-desc:before{content:"\f308"}.fa-sort-amount-asc:before{content:"\f309"}.fa-sort-amount-desc:before{content:"\f30a"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f30b"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f30c"}.fa-sort-numeric-asc:before{content:"\f30d"}.fa-sort-numeric-desc:before{content:"\f30e"}.fa-soundcloud:before{content:"\f30f"}.fa-space-shuttle:before{content:"\f310"}.fa-spinner:before{content:"\f311"}.fa-spoon:before{content:"\f312"}.fa-spotify:before{content:"\f313"}.fa-square:before{content:"\f314"}.fa-square-o:before{content:"\f315"}.fa-stack-exchange:before{content:"\f316"}.fa-stack-overflow:before{content:"\f317"}.fa-star:before{content:"\f318"}.fa-star-half:before{content:"\f319"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f31a"}.fa-star-o:before{content:"\f31b"}.fa-steam:before{content:"\f31c"}.fa-steam-square:before{content:"\f31d"}.fa-step-backward:before{content:"\f31e"}.fa-step-forward:before{content:"\f31f"}.fa-stethoscope:before{content:"\f320"}.fa-sticky-note:before{content:"\f321"}.fa-sticky-note-o:before{content:"\f322"}.fa-stop:before{content:"\f323"}.fa-street-view:before{content:"\f324"}.fa-strikethrough:before{content:"\f325"}.fa-stumbleupon:before{content:"\f326"}.fa-stumbleupon-circle:before{content:"\f327"}.fa-subscript:before{content:"\f328"}.fa-subway:before{content:"\f329"}.fa-suitcase:before{content:"\f32a"}.fa-sun-o:before{content:"\f32b"}.fa-superscript:before{content:"\f32c"}.fa-table:before{content:"\f32d"}.fa-tablet:before{content:"\f32e"}.fa-tachometer:before{content:"\f32f"}.fa-tag:before{content:"\f330"}.fa-tags:before{content:"\f331"}.fa-tasks:before{content:"\f332"}.fa-taxi:before{content:"\f333"}.fa-television:before,.fa-tv:before{content:"\f334"}.fa-tencent-weibo:before{content:"\f335"}.fa-terminal:before{content:"\f336"}.fa-text-height:before{content:"\f337"}.fa-text-width:before{content:"\f338"}.fa-th:before{content:"\f339"}.fa-th-large:before{content:"\f33a"}.fa-th-list:before{content:"\f33b"}.fa-thumb-tack:before{content:"\f33c"}.fa-thumbs-down:before{content:"\f33d"}.fa-thumbs-o-down:before{content:"\f33e"}.fa-thumbs-o-up:before{content:"\f33f"}.fa-thumbs-up:before{content:"\f340"}.fa-ticket:before{content:"\f341"}.fa-remove:before,.fa-times:before{content:"\f342"}.fa-times-circle:before{content:"\f343"}.fa-times-circle-o:before{content:"\f344"}.fa-tint:before{content:"\f345"}.fa-toggle-off:before{content:"\f346"}.fa-toggle-on:before{content:"\f347"}.fa-trademark:before{content:"\f348"}.fa-train:before{content:"\f349"}.fa-intersex:before,.fa-transgender:before{content:"\f34a"}.fa-transgender-alt:before{content:"\f34b"}.fa-trash:before{content:"\f34c"}.fa-trash-o:before{content:"\f34d"}.fa-tree:before{content:"\f34e"}.fa-trello:before{content:"\f34f"}.fa-tripadvisor:before{content:"\f350"}.fa-trophy:before{content:"\f351"}.fa-truck:before{content:"\f352"}.fa-try:before{content:"\f353"}.fa-tty:before{content:"\f354"}.fa-tumblr:before{content:"\f355"}.fa-tumblr-square:before{content:"\f356"}.fa-turkish-lira:before{content:"\f357"}.fa-twitch:before{content:"\f358"}.fa-twitter:before{content:"\f359"}.fa-twitter-square:before{content:"\f35a"}.fa-umbrella:before{content:"\f35b"}.fa-underline:before{content:"\f35c"}.fa-undo:before{content:"\f35d"}.fa-university:before{content:"\f35e"}.fa-unlink:before{content:"\f35f"}.fa-unlock:before{content:"\f360"}.fa-unlock-alt:before{content:"\f361"}.fa-upload:before{content:"\f362"}.fa-usd:before{content:"\f363"}.fa-user:before{content:"\f364"}.fa-user-md:before{content:"\f365"}.fa-user-plus:before{content:"\f366"}.fa-user-secret:before{content:"\f367"}.fa-user-times:before{content:"\f368"}.fa-users:before{content:"\f369"}.fa-venus:before{content:"\f36a"}.fa-venus-double:before{content:"\f36b"}.fa-venus-mars:before{content:"\f36c"}.fa-viacoin:before{content:"\f36d"}.fa-video-camera:before{content:"\f36e"}.fa-vimeo:before{content:"\f36f"}.fa-vimeo-square:before{content:"\f370"}.fa-vine:before{content:"\f371"}.fa-vk:before{content:"\f372"}.fa-volume-down:before{content:"\f373"}.fa-volume-off:before{content:"\f374"}.fa-volume-up:before{content:"\f375"}.fa-warning:before{content:"\f376"}.fa-wechat:before{content:"\f377"}.fa-weibo:before{content:"\f378"}.fa-weixin:before{content:"\f379"}.fa-whatsapp:before{content:"\f37a"}.fa-wheelchair:before{content:"\f37b"}.fa-wifi:before{content:"\f37c"}.fa-wikipedia-w:before{content:"\f37d"}.fa-windows:before{content:"\f37e"}.fa-won:before{content:"\f37f"}.fa-wordpress:before{content:"\f380"}.fa-wrench:before{content:"\f381"}.fa-xing:before{content:"\f382"}.fa-xing-square:before{content:"\f383"}.fa-y-combinator:before{content:"\f384"}.fa-y-combinator-square:before{content:"\f385"}.fa-yahoo:before{content:"\f386"}.fa-yc:before{content:"\f387"}.fa-yc-square:before{content:"\f388"}.fa-yelp:before{content:"\f389"}.fa-yen:before{content:"\f38a"}.fa-youtube:before{content:"\f38b"}.fa-youtube-play:before{content:"\f38c"}.fa-youtube-square:before{content:"\f38d"} \ No newline at end of file diff --git a/src/assets/fonts/line-awesome/css/line-awesome.css b/src/assets/fonts/line-awesome/css/line-awesome.css new file mode 100644 index 0000000..3f8d827 --- /dev/null +++ b/src/assets/fonts/line-awesome/css/line-awesome.css @@ -0,0 +1,845 @@ +/*! + * Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome + * License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License) + * + * Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ] + * + * Contacts: + * [ https://icons8.com/contact ] + * + * Follow Icon8 on + * Twitter [ https://twitter.com/icons_8 ] + * Facebook [ https://www.facebook.com/Icons8 ] + * Google+ [ https://plus.google.com/+Icons8 ] + * GitHub [ https://github.com/icons8 ] + */ + +@font-face { + font-family: "LineAwesome"; + src: url("../fonts/line-awesome.eot?v=1.1."); + src: url("../fonts/line-awesome.eot??v=1.1.#iefix") format("embedded-opentype"), + url("../fonts/line-awesome.woff2?v=1.1.") format("woff2"), + url("../fonts/line-awesome.woff?v=1.1.") format("woff"), + url("../fonts/line-awesome.ttf?v=1.1.") format("truetype"), + url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "LineAwesome"; + src: url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg"); + } +} + +/* Thanks to http://fontawesome.io @fontawesome and @davegandy */ +.la { + display: inline-block; + font: normal normal normal 16px/1 "LineAwesome"; + font-size: inherit; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} +/* makes the font 33% larger relative to the icon container */ +.la-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.la-2x { + font-size: 2em; +} +.la-3x { + font-size: 3em; +} +.la-4x { + font-size: 4em; +} +.la-5x { + font-size: 5em; +} +.la-fw { + width: 1.28571429em; + text-align: center; +} +.la-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.la-ul > li { + position: relative; +} +.la-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.la-li.la-lg { + left: -1.85714286em; +} +.la-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.li.pull-left { + margin-right: .3em; +} +.li.pull-right { + margin-left: .3em; +} +.la-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.la-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.la-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.la-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.la-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.la-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .la-rotate-90, +:root .la-rotate-180, +:root .la-rotate-270, +:root .la-flip-horizontal, +:root .la-flip-vertical { + filter: none; +} +.la-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.la-stack-1x, +.la-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.la-stack-1x { + line-height: inherit; +} +.la-stack-2x { + font-size: 2em; +} +.la-inverse { + color: #ffffff; +} +/* Thanks to http://fontawesome.io @fontawesome and @davegandy */ + +.la-500px:before { content: "\f100"; } +.la-adjust:before { content: "\f101"; } +.la-adn:before { content: "\f102"; } +.la-align-center:before { content: "\f103"; } +.la-align-justify:before { content: "\f104"; } +.la-align-left:before { content: "\f105"; } +.la-align-right:before { content: "\f106"; } +.la-amazon:before { content: "\f107"; } +.la-ambulance:before { content: "\f108"; } +.la-anchor:before { content: "\f109"; } +.la-android:before { content: "\f10a"; } +.la-angellist:before { content: "\f10b"; } +.la-angle-double-down:before { content: "\f10c"; } +.la-angle-double-left:before { content: "\f10d"; } +.la-angle-double-right:before { content: "\f10e"; } +.la-angle-double-up:before { content: "\f10f"; } +.la-angle-down:before { content: "\f110"; } +.la-angle-left:before { content: "\f111"; } +.la-angle-right:before { content: "\f112"; } +.la-angle-up:before { content: "\f113"; } +.la-apple:before { content: "\f114"; } +.la-archive:before { content: "\f115"; } +.la-area-chart:before { content: "\f116"; } +.la-arrow-circle-down:before { content: "\f117"; } +.la-arrow-circle-left:before { content: "\f118"; } +.la-arrow-circle-o-down:before { content: "\f119"; } +.la-arrow-circle-o-left:before { content: "\f11a"; } +.la-arrow-circle-o-right:before { content: "\f11b"; } +.la-arrow-circle-o-up:before { content: "\f11c"; } +.la-arrow-circle-right:before { content: "\f11d"; } +.la-arrow-circle-up:before { content: "\f11e"; } +.la-arrow-down:before { content: "\f11f"; } +.la-arrow-left:before { content: "\f120"; } +.la-arrow-right:before { content: "\f121"; } +.la-arrow-up:before { content: "\f122"; } +.la-arrows:before { content: "\f123"; } +.la-arrows-alt:before { content: "\f124"; } +.la-arrows-h:before { content: "\f125"; } +.la-arrows-v:before { content: "\f126"; } +.la-asterisk:before { content: "\f127"; } +.la-at:before { content: "\f128"; } +.la-automobile:before { content: "\f129"; } +.la-backward:before { content: "\f12a"; } +.la-balance-scale:before { content: "\f12b"; } +.la-ban:before { content: "\f12c"; } +.la-bank:before { content: "\f12d"; } +.la-bar-chart:before { content: "\f12e"; } +.la-bar-chart-o:before { content: "\f12f"; } +.la-barcode:before { content: "\f130"; } +.la-bars:before { content: "\f131"; } +.la-battery-0:before { content: "\f132"; } +.la-battery-1:before { content: "\f133"; } +.la-battery-2:before { content: "\f134"; } +.la-battery-3:before { content: "\f135"; } +.la-battery-4:before { content: "\f136"; } +.la-battery-empty:before { content: "\f137"; } +.la-battery-full:before { content: "\f138"; } +.la-battery-half:before { content: "\f139"; } +.la-battery-quarter:before { content: "\f13a"; } +.la-battery-three-quarters:before { content: "\f13b"; } +.la-bed:before { content: "\f13c"; } +.la-beer:before { content: "\f13d"; } +.la-behance:before { content: "\f13e"; } +.la-behance-square:before { content: "\f13f"; } +.la-bell:before { content: "\f140"; } +.la-bell-o:before { content: "\f141"; } +.la-bell-slash:before { content: "\f142"; } +.la-bell-slash-o:before { content: "\f143"; } +.la-bicycle:before { content: "\f144"; } +.la-binoculars:before { content: "\f145"; } +.la-birthday-cake:before { content: "\f146"; } +.la-bitbucket:before { content: "\f147"; } +.la-bitbucket-square:before { content: "\f148"; } +.la-bitcoin:before { content: "\f149"; } +.la-black-tie:before { content: "\f14a"; } +.la-bold:before { content: "\f14b"; } +.la-bolt:before { content: "\f14c"; } +.la-bomb:before { content: "\f14d"; } +.la-book:before { content: "\f14e"; } +.la-bookmark:before { content: "\f14f"; } +.la-bookmark-o:before { content: "\f150"; } +.la-briefcase:before { content: "\f151"; } +.la-btc:before { content: "\f152"; } +.la-bug:before { content: "\f153"; } +.la-building:before { content: "\f154"; } +.la-building-o:before { content: "\f155"; } +.la-bullhorn:before { content: "\f156"; } +.la-bullseye:before { content: "\f157"; } +.la-bus:before { content: "\f158"; } +.la-buysellads:before { content: "\f159"; } +.la-cab:before { content: "\f15a"; } +.la-calculator:before { content: "\f15b"; } +.la-calendar:before { content: "\f15c"; } +.la-calendar-check-o:before { content: "\f15d"; } +.la-calendar-minus-o:before { content: "\f15e"; } +.la-calendar-o:before { content: "\f15f"; } +.la-calendar-plus-o:before { content: "\f160"; } +.la-calendar-times-o:before { content: "\f161"; } +.la-camera:before { content: "\f162"; } +.la-camera-retro:before { content: "\f163"; } +.la-car:before { content: "\f164"; } +.la-caret-down:before { content: "\f165"; } +.la-caret-left:before { content: "\f166"; } +.la-caret-right:before { content: "\f167"; } +.la-caret-square-o-down:before, .la-toggle-down:before { content: "\f168"; } +.la-caret-square-o-left:before, .la-toggle-left:before { content: "\f169"; } +.la-caret-square-o-right:before, .la-toggle-right:before { content: "\f16a"; } +.la-caret-square-o-up:before, .la-toggle-up:before { content: "\f16b"; } +.la-caret-up:before { content: "\f16c"; } +.la-cart-arrow-down:before { content: "\f16d"; } +.la-cart-plus:before { content: "\f16e"; } +.la-cc:before { content: "\f16f"; } +.la-cc-amex:before { content: "\f170"; } +.la-cc-diners-club:before { content: "\f171"; } +.la-cc-discover:before { content: "\f172"; } +.la-cc-jcb:before { content: "\f173"; } +.la-cc-mastercard:before { content: "\f174"; } +.la-cc-paypal:before { content: "\f175"; } +.la-cc-stripe:before { content: "\f176"; } +.la-cc-visa:before { content: "\f177"; } +.la-certificate:before { content: "\f178"; } +.la-chain:before { content: "\f179"; } +.la-chain-broken:before { content: "\f17a"; } +.la-check:before { content: "\f17b"; } +.la-check-circle:before { content: "\f17c"; } +.la-check-circle-o:before { content: "\f17d"; } +.la-check-square:before { content: "\f17e"; } +.la-check-square-o:before { content: "\f17f"; } +.la-chevron-circle-down:before { content: "\f180"; } +.la-chevron-circle-left:before { content: "\f181"; } +.la-chevron-circle-right:before { content: "\f182"; } +.la-chevron-circle-up:before { content: "\f183"; } +.la-chevron-down:before { content: "\f184"; } +.la-chevron-left:before { content: "\f185"; } +.la-chevron-right:before { content: "\f186"; } +.la-chevron-up:before { content: "\f187"; } +.la-child:before { content: "\f188"; } +.la-chrome:before { content: "\f189"; } +.la-circle:before { content: "\f18a"; } +.la-circle-o:before { content: "\f18b"; } +.la-circle-o-notch:before { content: "\f18c"; } +.la-circle-thin:before { content: "\f18d"; } +.la-clipboard:before { content: "\f18e"; } +.la-clock-o:before { content: "\f18f"; } +.la-clone:before { content: "\f190"; } +.la-close:before { content: "\f191"; } +.la-cloud:before { content: "\f192"; } +.la-cloud-download:before { content: "\f193"; } +.la-cloud-upload:before { content: "\f194"; } +.la-cny:before { content: "\f195"; } +.la-code:before { content: "\f196"; } +.la-code-fork:before { content: "\f197"; } +.la-codepen:before { content: "\f198"; } +.la-coffee:before { content: "\f199"; } +.la-cog:before { content: "\f19a"; } +.la-cogs:before { content: "\f19b"; } +.la-columns:before { content: "\f19c"; } +.la-comment:before { content: "\f19d"; } +.la-comment-o:before { content: "\f19e"; } +.la-commenting:before { content: "\f19f"; } +.la-commenting-o:before { content: "\f1a0"; } +.la-comments:before { content: "\f1a1"; } +.la-comments-o:before { content: "\f1a2"; } +.la-compass:before { content: "\f1a3"; } +.la-compress:before { content: "\f1a4"; } +.la-connectdevelop:before { content: "\f1a5"; } +.la-contao:before { content: "\f1a6"; } +.la-copy:before { content: "\f1a7"; } +.la-copyright:before { content: "\f1a8"; } +.la-creative-commons:before { content: "\f1a9"; } +.la-credit-card:before { content: "\f1aa"; } +.la-crop:before { content: "\f1ab"; } +.la-crosshairs:before { content: "\f1ac"; } +.la-css3:before { content: "\f1ad"; } +.la-cube:before { content: "\f1ae"; } +.la-cubes:before { content: "\f1af"; } +.la-cut:before { content: "\f1b0"; } +.la-cutlery:before { content: "\f1b1"; } +.la-dashboard:before { content: "\f1b2"; } +.la-dashcube:before { content: "\f1b3"; } +.la-database:before { content: "\f1b4"; } +.la-dedent:before { content: "\f1b5"; } +.la-delicious:before { content: "\f1b6"; } +.la-desktop:before { content: "\f1b7"; } +.la-deviantart:before { content: "\f1b8"; } +.la-diamond:before { content: "\f1b9"; } +.la-digg:before { content: "\f1ba"; } +.la-dollar:before { content: "\f1bb"; } +.la-dot-circle-o:before { content: "\f1bc"; } +.la-download:before { content: "\f1bd"; } +.la-dribbble:before { content: "\f1be"; } +.la-dropbox:before { content: "\f1bf"; } +.la-drupal:before { content: "\f1c0"; } +.la-edit:before { content: "\f1c1"; } +.la-eject:before { content: "\f1c2"; } +.la-ellipsis-h:before { content: "\f1c3"; } +.la-ellipsis-v:before { content: "\f1c4"; } +.la-empire:before, .la-ge:before { content: "\f1c5"; } +.la-envelope:before { content: "\f1c6"; } +.la-envelope-o:before { content: "\f1c7"; } +.la-envelope-square:before { content: "\f1c8"; } +.la-eraser:before { content: "\f1c9"; } +.la-eur:before { content: "\f1ca"; } +.la-euro:before { content: "\f1cb"; } +.la-exchange:before { content: "\f1cc"; } +.la-exclamation:before { content: "\f1cd"; } +.la-exclamation-circle:before { content: "\f1ce"; } +.la-exclamation-triangle:before { content: "\f1cf"; } +.la-expand:before { content: "\f1d0"; } +.la-expeditedssl:before { content: "\f1d1"; } +.la-external-link:before { content: "\f1d2"; } +.la-external-link-square:before { content: "\f1d3"; } +.la-eye:before { content: "\f1d4"; } +.la-eye-slash:before { content: "\f1d5"; } +.la-eyedropper:before { content: "\f1d6"; } +.la-facebook:before, .la-facebook-f:before { content: "\f1d7"; } +.la-facebook-official:before { content: "\f1d8"; } +.la-facebook-square:before { content: "\f1d9"; } +.la-fast-backward:before { content: "\f1da"; } +.la-fast-forward:before { content: "\f1db"; } +.la-fax:before { content: "\f1dc"; } +.la-female:before { content: "\f1dd"; } +.la-fighter-jet:before { content: "\f1de"; } +.la-file:before { content: "\f1df"; } +.la-file-archive-o:before { content: "\f1e0"; } +.la-file-audio-o:before { content: "\f1e1"; } +.la-file-code-o:before { content: "\f1e2"; } +.la-file-excel-o:before { content: "\f1e3"; } +.la-file-image-o:before { content: "\f1e4"; } +.la-file-movie-o:before { content: "\f1e5"; } +.la-file-o:before { content: "\f1e6"; } +.la-file-pdf-o:before { content: "\f1e7"; } +.la-file-photo-o:before { content: "\f1e8"; } +.la-file-picture-o:before { content: "\f1e9"; } +.la-file-powerpoint-o:before { content: "\f1ea"; } +.la-file-sound-o:before { content: "\f1eb"; } +.la-file-text:before { content: "\f1ec"; } +.la-file-text-o:before { content: "\f1ed"; } +.la-file-video-o:before { content: "\f1ee"; } +.la-file-word-o:before { content: "\f1ef"; } +.la-file-zip-o:before { content: "\f1f0"; } +.la-files-o:before { content: "\f1f1"; } +.la-film:before { content: "\f1f2"; } +.la-filter:before { content: "\f1f3"; } +.la-fire:before { content: "\f1f4"; } +.la-fire-extinguisher:before { content: "\f1f5"; } +.la-firefox:before { content: "\f1f6"; } +.la-flag:before { content: "\f1f7"; } +.la-flag-checkered:before { content: "\f1f8"; } +.la-flag-o:before { content: "\f1f9"; } +.la-flash:before { content: "\f1fa"; } +.la-flask:before { content: "\f1fb"; } +.la-flickr:before { content: "\f1fc"; } +.la-floppy-o:before { content: "\f1fd"; } +.la-folder:before { content: "\f1fe"; } +.la-folder-o:before { content: "\f1ff"; } +.la-folder-open:before { content: "\f200"; } +.la-folder-open-o:before { content: "\f201"; } +.la-font:before { content: "\f202"; } +.la-fonticons:before { content: "\f203"; } +.la-forumbee:before { content: "\f204"; } +.la-forward:before { content: "\f205"; } +.la-foursquare:before { content: "\f206"; } +.la-frown-o:before { content: "\f207"; } +.la-futbol-o:before, .la-soccer-ball-o:before { content: "\f208"; } +.la-gamepad:before { content: "\f209"; } +.la-gavel:before { content: "\f20a"; } +.la-gbp:before { content: "\f20b"; } +.la-gear:before { content: "\f20c"; } +.la-gears:before { content: "\f20d"; } +.la-genderless:before { content: "\f20e"; } +.la-get-pocket:before { content: "\f20f"; } +.la-gg:before { content: "\f210"; } +.la-gg-circle:before { content: "\f211"; } +.la-gift:before { content: "\f212"; } +.la-git:before { content: "\f213"; } +.la-git-square:before { content: "\f214"; } +.la-github:before { content: "\f215"; } +.la-github-alt:before { content: "\f216"; } +.la-github-square:before { content: "\f217"; } +.la-glass:before { content: "\f218"; } +.la-globe:before { content: "\f219"; } +.la-google:before { content: "\f21a"; } +.la-google-plus:before { content: "\f21b"; } +.la-google-plus-square:before { content: "\f21c"; } +.la-google-wallet:before { content: "\f21d"; } +.la-graduation-cap:before { content: "\f21e"; } +.la-gratipay:before, .la-gittip:before { content: "\f21f"; } +.la-group:before { content: "\f220"; } +.la-h-square:before { content: "\f221"; } +.la-hacker-news:before { content: "\f222"; } +.la-hand-grab-o:before { content: "\f223"; } +.la-hand-lizard-o:before { content: "\f224"; } +.la-hand-o-down:before { content: "\f225"; } +.la-hand-o-left:before { content: "\f226"; } +.la-hand-o-right:before { content: "\f227"; } +.la-hand-o-up:before { content: "\f228"; } +.la-hand-paper-o:before { content: "\f229"; } +.la-hand-peace-o:before { content: "\f22a"; } +.la-hand-pointer-o:before { content: "\f22b"; } +.la-hand-rock-o:before { content: "\f22c"; } +.la-hand-scissors-o:before { content: "\f22d"; } +.la-hand-spock-o:before { content: "\f22e"; } +.la-hand-stop-o:before { content: "\f22f"; } +.la-hdd-o:before { content: "\f230"; } +.la-header:before { content: "\f231"; } +.la-headphones:before { content: "\f232"; } +.la-heart:before { content: "\f233"; } +.la-heart-o:before { content: "\f234"; } +.la-heartbeat:before { content: "\f235"; } +.la-history:before { content: "\f236"; } +.la-home:before { content: "\f237"; } +.la-hospital-o:before { content: "\f238"; } +.la-hotel:before { content: "\f239"; } +.la-hourglass:before { content: "\f23a"; } +.la-hourglass-1:before { content: "\f23b"; } +.la-hourglass-2:before { content: "\f23c"; } +.la-hourglass-3:before { content: "\f23d"; } +.la-hourglass-end:before { content: "\f23e"; } +.la-hourglass-half:before { content: "\f23f"; } +.la-hourglass-o:before { content: "\f240"; } +.la-hourglass-start:before { content: "\f241"; } +.la-houzz:before { content: "\f242"; } +.la-html5:before { content: "\f243"; } +.la-i-cursor:before { content: "\f244"; } +.la-ils:before { content: "\f245"; } +.la-image:before { content: "\f246"; } +.la-inbox:before { content: "\f247"; } +.la-indent:before { content: "\f248"; } +.la-industry:before { content: "\f249"; } +.la-info:before { content: "\f24a"; } +.la-info-circle:before { content: "\f24b"; } +.la-inr:before { content: "\f24c"; } +.la-instagram:before { content: "\f24d"; } +.la-institution:before { content: "\f24e"; } +.la-internet-explorer:before { content: "\f24f"; } +.la-ioxhost:before { content: "\f250"; } +.la-italic:before { content: "\f251"; } +.la-joomla:before { content: "\f252"; } +.la-jpy:before { content: "\f253"; } +.la-jsfiddle:before { content: "\f254"; } +.la-key:before { content: "\f255"; } +.la-keyboard-o:before { content: "\f256"; } +.la-krw:before { content: "\f257"; } +.la-language:before { content: "\f258"; } +.la-laptop:before { content: "\f259"; } +.la-lastfm:before { content: "\f25a"; } +.la-lastfm-square:before { content: "\f25b"; } +.la-leaf:before { content: "\f25c"; } +.la-leanpub:before { content: "\f25d"; } +.la-legal:before { content: "\f25e"; } +.la-lemon-o:before { content: "\f25f"; } +.la-level-down:before { content: "\f260"; } +.la-level-up:before { content: "\f261"; } +.la-life-bouy:before { content: "\f262"; } +.la-life-buoy:before { content: "\f263"; } +.la-life-ring:before, .la-support:before { content: "\f264"; } +.la-life-saver:before { content: "\f265"; } +.la-lightbulb-o:before { content: "\f266"; } +.la-line-chart:before { content: "\f267"; } +.la-link:before { content: "\f268"; } +.la-linkedin:before { content: "\f269"; } +.la-linkedin-square:before { content: "\f26a"; } +.la-linux:before { content: "\f26b"; } +.la-list:before { content: "\f26c"; } +.la-list-alt:before { content: "\f26d"; } +.la-list-ol:before { content: "\f26e"; } +.la-list-ul:before { content: "\f26f"; } +.la-location-arrow:before { content: "\f270"; } +.la-lock:before { content: "\f271"; } +.la-long-arrow-down:before { content: "\f272"; } +.la-long-arrow-left:before { content: "\f273"; } +.la-long-arrow-right:before { content: "\f274"; } +.la-long-arrow-up:before { content: "\f275"; } +.la-magic:before { content: "\f276"; } +.la-magnet:before { content: "\f277"; } +.la-mail-forward:before { content: "\f278"; } +.la-mail-reply:before { content: "\f279"; } +.la-mail-reply-all:before { content: "\f27a"; } +.la-male:before { content: "\f27b"; } +.la-map:before { content: "\f27c"; } +.la-map-marker:before { content: "\f27d"; } +.la-map-o:before { content: "\f27e"; } +.la-map-pin:before { content: "\f27f"; } +.la-map-signs:before { content: "\f280"; } +.la-mars:before { content: "\f281"; } +.la-mars-double:before { content: "\f282"; } +.la-mars-stroke:before { content: "\f283"; } +.la-mars-stroke-h:before { content: "\f284"; } +.la-mars-stroke-v:before { content: "\f285"; } +.la-maxcdn:before { content: "\f286"; } +.la-meanpath:before { content: "\f287"; } +.la-medium:before { content: "\f288"; } +.la-medkit:before { content: "\f289"; } +.la-meh-o:before { content: "\f28a"; } +.la-mercury:before { content: "\f28b"; } +.la-microphone:before { content: "\f28c"; } +.la-microphone-slash:before { content: "\f28d"; } +.la-minus:before { content: "\f28e"; } +.la-minus-circle:before { content: "\f28f"; } +.la-minus-square:before { content: "\f290"; } +.la-minus-square-o:before { content: "\f291"; } +.la-mobile:before { content: "\f292"; } +.la-mobile-phone:before { content: "\f293"; } +.la-money:before { content: "\f294"; } +.la-moon-o:before { content: "\f295"; } +.la-mortar-board:before { content: "\f296"; } +.la-motorcycle:before { content: "\f297"; } +.la-mouse-pointer:before { content: "\f298"; } +.la-music:before { content: "\f299"; } +.la-navicon:before { content: "\f29a"; } +.la-neuter:before { content: "\f29b"; } +.la-newspaper-o:before { content: "\f29c"; } +.la-object-group:before { content: "\f29d"; } +.la-object-ungroup:before { content: "\f29e"; } +.la-odnoklassniki:before { content: "\f29f"; } +.la-odnoklassniki-square:before { content: "\f2a0"; } +.la-opencart:before { content: "\f2a1"; } +.la-openid:before { content: "\f2a2"; } +.la-opera:before { content: "\f2a3"; } +.la-optin-monster:before { content: "\f2a4"; } +.la-outdent:before { content: "\f2a5"; } +.la-pagelines:before { content: "\f2a6"; } +.la-paint-brush:before { content: "\f2a7"; } +.la-paper-plane:before, .la-send:before { content: "\f2a8"; } +.la-paper-plane-o:before, .la-send-o:before { content: "\f2a9"; } +.la-paperclip:before { content: "\f2aa"; } +.la-paragraph:before { content: "\f2ab"; } +.la-paste:before { content: "\f2ac"; } +.la-pause:before { content: "\f2ad"; } +.la-paw:before { content: "\f2ae"; } +.la-paypal:before { content: "\f2af"; } +.la-pencil:before { content: "\f2b0"; } +.la-pencil-square:before { content: "\f2b1"; } +.la-pencil-square-o:before { content: "\f2b2"; } +.la-phone:before { content: "\f2b3"; } +.la-phone-square:before { content: "\f2b4"; } +.la-photo:before { content: "\f2b5"; } +.la-picture-o:before { content: "\f2b6"; } +.la-pie-chart:before { content: "\f2b7"; } +.la-pied-piper:before { content: "\f2b8"; } +.la-pied-piper-alt:before { content: "\f2b9"; } +.la-pinterest:before { content: "\f2ba"; } +.la-pinterest-p:before { content: "\f2bb"; } +.la-pinterest-square:before { content: "\f2bc"; } +.la-plane:before { content: "\f2bd"; } +.la-play:before { content: "\f2be"; } +.la-play-circle:before { content: "\f2bf"; } +.la-play-circle-o:before { content: "\f2c0"; } +.la-plug:before { content: "\f2c1"; } +.la-plus:before { content: "\f2c2"; } +.la-plus-circle:before { content: "\f2c3"; } +.la-plus-square:before { content: "\f2c4"; } +.la-plus-square-o:before { content: "\f2c5"; } +.la-power-off:before { content: "\f2c6"; } +.la-print:before { content: "\f2c7"; } +.la-puzzle-piece:before { content: "\f2c8"; } +.la-qq:before { content: "\f2c9"; } +.la-qrcode:before { content: "\f2ca"; } +.la-question:before { content: "\f2cb"; } +.la-question-circle:before { content: "\f2cc"; } +.la-quote-left:before { content: "\f2cd"; } +.la-quote-right:before { content: "\f2ce"; } +.la-ra:before { content: "\f2cf"; } +.la-random:before { content: "\f2d0"; } +.la-rebel:before { content: "\f2d1"; } +.la-recycle:before { content: "\f2d2"; } +.la-reddit:before { content: "\f2d3"; } +.la-reddit-square:before { content: "\f2d4"; } +.la-refresh:before { content: "\f2d5"; } +.la-registered:before { content: "\f2d6"; } +.la-renren:before { content: "\f2d7"; } +.la-reorder:before { content: "\f2d8"; } +.la-repeat:before { content: "\f2d9"; } +.la-reply:before { content: "\f2da"; } +.la-reply-all:before { content: "\f2db"; } +.la-retweet:before { content: "\f2dc"; } +.la-rmb:before { content: "\f2dd"; } +.la-road:before { content: "\f2de"; } +.la-rocket:before { content: "\f2df"; } +.la-rotate-left:before { content: "\f2e0"; } +.la-rotate-right:before { content: "\f2e1"; } +.la-rouble:before { content: "\f2e2"; } +.la-rss:before, .la-feed:before { content: "\f2e3"; } +.la-rss-square:before { content: "\f2e4"; } +.la-rub:before { content: "\f2e5"; } +.la-ruble:before { content: "\f2e6"; } +.la-rupee:before { content: "\f2e7"; } +.la-safari:before { content: "\f2e8"; } +.la-save:before { content: "\f2e9"; } +.la-scissors:before { content: "\f2ea"; } +.la-search:before { content: "\f2eb"; } +.la-search-minus:before { content: "\f2ec"; } +.la-search-plus:before { content: "\f2ed"; } +.la-sellsy:before { content: "\f2ee"; } +.la-server:before { content: "\f2ef"; } +.la-share:before { content: "\f2f0"; } +.la-share-alt:before { content: "\f2f1"; } +.la-share-alt-square:before { content: "\f2f2"; } +.la-share-square:before { content: "\f2f3"; } +.la-share-square-o:before { content: "\f2f4"; } +.la-shekel:before { content: "\f2f5"; } +.la-sheqel:before { content: "\f2f6"; } +.la-shield:before { content: "\f2f7"; } +.la-ship:before { content: "\f2f8"; } +.la-shirtsinbulk:before { content: "\f2f9"; } +.la-shopping-cart:before { content: "\f2fa"; } +.la-sign-in:before { content: "\f2fb"; } +.la-sign-out:before { content: "\f2fc"; } +.la-signal:before { content: "\f2fd"; } +.la-simplybuilt:before { content: "\f2fe"; } +.la-sitemap:before { content: "\f2ff"; } +.la-skyatlas:before { content: "\f300"; } +.la-skype:before { content: "\f301"; } +.la-slack:before { content: "\f302"; } +.la-sliders:before { content: "\f303"; } +.la-slideshare:before { content: "\f304"; } +.la-smile-o:before { content: "\f305"; } +.la-sort:before, .la-unsorted:before { content: "\f306"; } +.la-sort-alpha-asc:before { content: "\f307"; } +.la-sort-alpha-desc:before { content: "\f308"; } +.la-sort-amount-asc:before { content: "\f309"; } +.la-sort-amount-desc:before { content: "\f30a"; } +.la-sort-asc:before, .la-sort-up:before { content: "\f30b"; } +.la-sort-desc:before, .la-sort-down:before { content: "\f30c"; } +.la-sort-numeric-asc:before { content: "\f30d"; } +.la-sort-numeric-desc:before { content: "\f30e"; } +.la-soundcloud:before { content: "\f30f"; } +.la-space-shuttle:before { content: "\f310"; } +.la-spinner:before { content: "\f311"; } +.la-spoon:before { content: "\f312"; } +.la-spotify:before { content: "\f313"; } +.la-square:before { content: "\f314"; } +.la-square-o:before { content: "\f315"; } +.la-stack-exchange:before { content: "\f316"; } +.la-stack-overflow:before { content: "\f317"; } +.la-star:before { content: "\f318"; } +.la-star-half:before { content: "\f319"; } +.la-star-half-o:before, .la-star-half-full:before, .la-star-half-empty:before { content: "\f31a"; } +.la-star-o:before { content: "\f31b"; } +.la-steam:before { content: "\f31c"; } +.la-steam-square:before { content: "\f31d"; } +.la-step-backward:before { content: "\f31e"; } +.la-step-forward:before { content: "\f31f"; } +.la-stethoscope:before { content: "\f320"; } +.la-sticky-note:before { content: "\f321"; } +.la-sticky-note-o:before { content: "\f322"; } +.la-stop:before { content: "\f323"; } +.la-street-view:before { content: "\f324"; } +.la-strikethrough:before { content: "\f325"; } +.la-stumbleupon:before { content: "\f326"; } +.la-stumbleupon-circle:before { content: "\f327"; } +.la-subscript:before { content: "\f328"; } +.la-subway:before { content: "\f329"; } +.la-suitcase:before { content: "\f32a"; } +.la-sun-o:before { content: "\f32b"; } +.la-superscript:before { content: "\f32c"; } +.la-table:before { content: "\f32d"; } +.la-tablet:before { content: "\f32e"; } +.la-tachometer:before { content: "\f32f"; } +.la-tag:before { content: "\f330"; } +.la-tags:before { content: "\f331"; } +.la-tasks:before { content: "\f332"; } +.la-taxi:before { content: "\f333"; } +.la-television:before, .la-tv:before { content: "\f334"; } +.la-tencent-weibo:before { content: "\f335"; } +.la-terminal:before { content: "\f336"; } +.la-text-height:before { content: "\f337"; } +.la-text-width:before { content: "\f338"; } +.la-th:before { content: "\f339"; } +.la-th-large:before { content: "\f33a"; } +.la-th-list:before { content: "\f33b"; } +.la-thumb-tack:before { content: "\f33c"; } +.la-thumbs-down:before { content: "\f33d"; } +.la-thumbs-o-down:before { content: "\f33e"; } +.la-thumbs-o-up:before { content: "\f33f"; } +.la-thumbs-up:before { content: "\f340"; } +.la-ticket:before { content: "\f341"; } +.la-times:before, .la-remove:before { content: "\f342"; } +.la-times-circle:before { content: "\f343"; } +.la-times-circle-o:before { content: "\f344"; } +.la-tint:before { content: "\f345"; } +.la-toggle-off:before { content: "\f346"; } +.la-toggle-on:before { content: "\f347"; } +.la-trademark:before { content: "\f348"; } +.la-train:before { content: "\f349"; } +.la-transgender:before, .la-intersex:before { content: "\f34a"; } +.la-transgender-alt:before { content: "\f34b"; } +.la-trash:before { content: "\f34c"; } +.la-trash-o:before { content: "\f34d"; } +.la-tree:before { content: "\f34e"; } +.la-trello:before { content: "\f34f"; } +.la-tripadvisor:before { content: "\f350"; } +.la-trophy:before { content: "\f351"; } +.la-truck:before { content: "\f352"; } +.la-try:before { content: "\f353"; } +.la-tty:before { content: "\f354"; } +.la-tumblr:before { content: "\f355"; } +.la-tumblr-square:before { content: "\f356"; } +.la-turkish-lira:before { content: "\f357"; } +.la-twitch:before { content: "\f358"; } +.la-twitter:before { content: "\f359"; } +.la-twitter-square:before { content: "\f35a"; } +.la-umbrella:before { content: "\f35b"; } +.la-underline:before { content: "\f35c"; } +.la-undo:before { content: "\f35d"; } +.la-university:before { content: "\f35e"; } +.la-unlink:before { content: "\f35f"; } +.la-unlock:before { content: "\f360"; } +.la-unlock-alt:before { content: "\f361"; } +.la-upload:before { content: "\f362"; } +.la-usd:before { content: "\f363"; } +.la-user:before { content: "\f364"; } +.la-user-md:before { content: "\f365"; } +.la-user-plus:before { content: "\f366"; } +.la-user-secret:before { content: "\f367"; } +.la-user-times:before { content: "\f368"; } +.la-users:before { content: "\f369"; } +.la-venus:before { content: "\f36a"; } +.la-venus-double:before { content: "\f36b"; } +.la-venus-mars:before { content: "\f36c"; } +.la-viacoin:before { content: "\f36d"; } +.la-video-camera:before { content: "\f36e"; } +.la-vimeo:before { content: "\f36f"; } +.la-vimeo-square:before { content: "\f370"; } +.la-vine:before { content: "\f371"; } +.la-vk:before { content: "\f372"; } +.la-volume-down:before { content: "\f373"; } +.la-volume-off:before { content: "\f374"; } +.la-volume-up:before { content: "\f375"; } +.la-warning:before { content: "\f376"; } +.la-wechat:before { content: "\f377"; } +.la-weibo:before { content: "\f378"; } +.la-weixin:before { content: "\f379"; } +.la-whatsapp:before { content: "\f37a"; } +.la-wheelchair:before { content: "\f37b"; } +.la-wifi:before { content: "\f37c"; } +.la-wikipedia-w:before { content: "\f37d"; } +.la-windows:before { content: "\f37e"; } +.la-won:before { content: "\f37f"; } +.la-wordpress:before { content: "\f380"; } +.la-wrench:before { content: "\f381"; } +.la-xing:before { content: "\f382"; } +.la-xing-square:before { content: "\f383"; } +.la-y-combinator:before { content: "\f384"; } +.la-y-combinator-square:before { content: "\f385"; } +.la-yahoo:before { content: "\f386"; } +.la-yc:before { content: "\f387"; } +.la-yc-square:before { content: "\f388"; } +.la-yelp:before { content: "\f389"; } +.la-yen:before { content: "\f38a"; } +.la-youtube:before { content: "\f38b"; } +.la-youtube-play:before { content: "\f38c"; } +.la-youtube-square:before { content: "\f38d"; } \ No newline at end of file diff --git a/src/assets/fonts/line-awesome/css/line-awesome.min.css b/src/assets/fonts/line-awesome/css/line-awesome.min.css new file mode 100644 index 0000000..babf166 --- /dev/null +++ b/src/assets/fonts/line-awesome/css/line-awesome.min.css @@ -0,0 +1,15 @@ +/*! + * Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome + * License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License) + * + * Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ] + * + * Contacts: + * [ https://icons8.com/contact ] + * + * Follow Icon8 on + * Twitter [ https://twitter.com/icons_8 ] + * Facebook [ https://www.facebook.com/Icons8 ] + * Google+ [ https://plus.google.com/+Icons8 ] + * GitHub [ https://github.com/icons8 ] + */.la,.la-stack{display:inline-block}.la-fw,.la-li{text-align:center}@font-face{font-family:LineAwesome;src:url(../fonts/line-awesome.eot?v=1.1.);src:url(../fonts/line-awesome.eot??v=1.1.#iefix) format("embedded-opentype"),url(../fonts/line-awesome.woff2?v=1.1.) format("woff2"),url(../fonts/line-awesome.woff?v=1.1.) format("woff"),url(../fonts/line-awesome.ttf?v=1.1.) format("truetype"),url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:LineAwesome;src:url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg")}}.la{font:normal normal normal 16px/1 LineAwesome;font-size:inherit;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased}.la-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.la-2x{font-size:2em}.la-3x{font-size:3em}.la-4x{font-size:4em}.la-5x{font-size:5em}.la-fw{width:1.28571429em}.la-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.la-ul>li{position:relative}.la-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.la-li.la-lg{left:-1.85714286em}.la-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.li.pull-left{margin-right:.3em}.li.pull-right{margin-left:.3em}.la-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.la-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.la-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.la-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.la-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.la-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .la-flip-horizontal,:root .la-flip-vertical,:root .la-rotate-180,:root .la-rotate-270,:root .la-rotate-90{filter:none}.la-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.la-stack-1x,.la-stack-2x{position:absolute;left:0;width:100%;text-align:center}.la-stack-1x{line-height:inherit}.la-stack-2x{font-size:2em}.la-inverse{color:#fff}.la-500px:before{content:"\f100"}.la-adjust:before{content:"\f101"}.la-adn:before{content:"\f102"}.la-align-center:before{content:"\f103"}.la-align-justify:before{content:"\f104"}.la-align-left:before{content:"\f105"}.la-align-right:before{content:"\f106"}.la-amazon:before{content:"\f107"}.la-ambulance:before{content:"\f108"}.la-anchor:before{content:"\f109"}.la-android:before{content:"\f10a"}.la-angellist:before{content:"\f10b"}.la-angle-double-down:before{content:"\f10c"}.la-angle-double-left:before{content:"\f10d"}.la-angle-double-right:before{content:"\f10e"}.la-angle-double-up:before{content:"\f10f"}.la-angle-down:before{content:"\f110"}.la-angle-left:before{content:"\f111"}.la-angle-right:before{content:"\f112"}.la-angle-up:before{content:"\f113"}.la-apple:before{content:"\f114"}.la-archive:before{content:"\f115"}.la-area-chart:before{content:"\f116"}.la-arrow-circle-down:before{content:"\f117"}.la-arrow-circle-left:before{content:"\f118"}.la-arrow-circle-o-down:before{content:"\f119"}.la-arrow-circle-o-left:before{content:"\f11a"}.la-arrow-circle-o-right:before{content:"\f11b"}.la-arrow-circle-o-up:before{content:"\f11c"}.la-arrow-circle-right:before{content:"\f11d"}.la-arrow-circle-up:before{content:"\f11e"}.la-arrow-down:before{content:"\f11f"}.la-arrow-left:before{content:"\f120"}.la-arrow-right:before{content:"\f121"}.la-arrow-up:before{content:"\f122"}.la-arrows:before{content:"\f123"}.la-arrows-alt:before{content:"\f124"}.la-arrows-h:before{content:"\f125"}.la-arrows-v:before{content:"\f126"}.la-asterisk:before{content:"\f127"}.la-at:before{content:"\f128"}.la-automobile:before{content:"\f129"}.la-backward:before{content:"\f12a"}.la-balance-scale:before{content:"\f12b"}.la-ban:before{content:"\f12c"}.la-bank:before{content:"\f12d"}.la-bar-chart:before{content:"\f12e"}.la-bar-chart-o:before{content:"\f12f"}.la-barcode:before{content:"\f130"}.la-bars:before{content:"\f131"}.la-battery-0:before{content:"\f132"}.la-battery-1:before{content:"\f133"}.la-battery-2:before{content:"\f134"}.la-battery-3:before{content:"\f135"}.la-battery-4:before{content:"\f136"}.la-battery-empty:before{content:"\f137"}.la-battery-full:before{content:"\f138"}.la-battery-half:before{content:"\f139"}.la-battery-quarter:before{content:"\f13a"}.la-battery-three-quarters:before{content:"\f13b"}.la-bed:before{content:"\f13c"}.la-beer:before{content:"\f13d"}.la-behance:before{content:"\f13e"}.la-behance-square:before{content:"\f13f"}.la-bell:before{content:"\f140"}.la-bell-o:before{content:"\f141"}.la-bell-slash:before{content:"\f142"}.la-bell-slash-o:before{content:"\f143"}.la-bicycle:before{content:"\f144"}.la-binoculars:before{content:"\f145"}.la-birthday-cake:before{content:"\f146"}.la-bitbucket:before{content:"\f147"}.la-bitbucket-square:before{content:"\f148"}.la-bitcoin:before{content:"\f149"}.la-black-tie:before{content:"\f14a"}.la-bold:before{content:"\f14b"}.la-bolt:before{content:"\f14c"}.la-bomb:before{content:"\f14d"}.la-book:before{content:"\f14e"}.la-bookmark:before{content:"\f14f"}.la-bookmark-o:before{content:"\f150"}.la-briefcase:before{content:"\f151"}.la-btc:before{content:"\f152"}.la-bug:before{content:"\f153"}.la-building:before{content:"\f154"}.la-building-o:before{content:"\f155"}.la-bullhorn:before{content:"\f156"}.la-bullseye:before{content:"\f157"}.la-bus:before{content:"\f158"}.la-buysellads:before{content:"\f159"}.la-cab:before{content:"\f15a"}.la-calculator:before{content:"\f15b"}.la-calendar:before{content:"\f15c"}.la-calendar-check-o:before{content:"\f15d"}.la-calendar-minus-o:before{content:"\f15e"}.la-calendar-o:before{content:"\f15f"}.la-calendar-plus-o:before{content:"\f160"}.la-calendar-times-o:before{content:"\f161"}.la-camera:before{content:"\f162"}.la-camera-retro:before{content:"\f163"}.la-car:before{content:"\f164"}.la-caret-down:before{content:"\f165"}.la-caret-left:before{content:"\f166"}.la-caret-right:before{content:"\f167"}.la-caret-square-o-down:before,.la-toggle-down:before{content:"\f168"}.la-caret-square-o-left:before,.la-toggle-left:before{content:"\f169"}.la-caret-square-o-right:before,.la-toggle-right:before{content:"\f16a"}.la-caret-square-o-up:before,.la-toggle-up:before{content:"\f16b"}.la-caret-up:before{content:"\f16c"}.la-cart-arrow-down:before{content:"\f16d"}.la-cart-plus:before{content:"\f16e"}.la-cc:before{content:"\f16f"}.la-cc-amex:before{content:"\f170"}.la-cc-diners-club:before{content:"\f171"}.la-cc-discover:before{content:"\f172"}.la-cc-jcb:before{content:"\f173"}.la-cc-mastercard:before{content:"\f174"}.la-cc-paypal:before{content:"\f175"}.la-cc-stripe:before{content:"\f176"}.la-cc-visa:before{content:"\f177"}.la-certificate:before{content:"\f178"}.la-chain:before{content:"\f179"}.la-chain-broken:before{content:"\f17a"}.la-check:before{content:"\f17b"}.la-check-circle:before{content:"\f17c"}.la-check-circle-o:before{content:"\f17d"}.la-check-square:before{content:"\f17e"}.la-check-square-o:before{content:"\f17f"}.la-chevron-circle-down:before{content:"\f180"}.la-chevron-circle-left:before{content:"\f181"}.la-chevron-circle-right:before{content:"\f182"}.la-chevron-circle-up:before{content:"\f183"}.la-chevron-down:before{content:"\f184"}.la-chevron-left:before{content:"\f185"}.la-chevron-right:before{content:"\f186"}.la-chevron-up:before{content:"\f187"}.la-child:before{content:"\f188"}.la-chrome:before{content:"\f189"}.la-circle:before{content:"\f18a"}.la-circle-o:before{content:"\f18b"}.la-circle-o-notch:before{content:"\f18c"}.la-circle-thin:before{content:"\f18d"}.la-clipboard:before{content:"\f18e"}.la-clock-o:before{content:"\f18f"}.la-clone:before{content:"\f190"}.la-close:before{content:"\f191"}.la-cloud:before{content:"\f192"}.la-cloud-download:before{content:"\f193"}.la-cloud-upload:before{content:"\f194"}.la-cny:before{content:"\f195"}.la-code:before{content:"\f196"}.la-code-fork:before{content:"\f197"}.la-codepen:before{content:"\f198"}.la-coffee:before{content:"\f199"}.la-cog:before{content:"\f19a"}.la-cogs:before{content:"\f19b"}.la-columns:before{content:"\f19c"}.la-comment:before{content:"\f19d"}.la-comment-o:before{content:"\f19e"}.la-commenting:before{content:"\f19f"}.la-commenting-o:before{content:"\f1a0"}.la-comments:before{content:"\f1a1"}.la-comments-o:before{content:"\f1a2"}.la-compass:before{content:"\f1a3"}.la-compress:before{content:"\f1a4"}.la-connectdevelop:before{content:"\f1a5"}.la-contao:before{content:"\f1a6"}.la-copy:before{content:"\f1a7"}.la-copyright:before{content:"\f1a8"}.la-creative-commons:before{content:"\f1a9"}.la-credit-card:before{content:"\f1aa"}.la-crop:before{content:"\f1ab"}.la-crosshairs:before{content:"\f1ac"}.la-css3:before{content:"\f1ad"}.la-cube:before{content:"\f1ae"}.la-cubes:before{content:"\f1af"}.la-cut:before{content:"\f1b0"}.la-cutlery:before{content:"\f1b1"}.la-dashboard:before{content:"\f1b2"}.la-dashcube:before{content:"\f1b3"}.la-database:before{content:"\f1b4"}.la-dedent:before{content:"\f1b5"}.la-delicious:before{content:"\f1b6"}.la-desktop:before{content:"\f1b7"}.la-deviantart:before{content:"\f1b8"}.la-diamond:before{content:"\f1b9"}.la-digg:before{content:"\f1ba"}.la-dollar:before{content:"\f1bb"}.la-dot-circle-o:before{content:"\f1bc"}.la-download:before{content:"\f1bd"}.la-dribbble:before{content:"\f1be"}.la-dropbox:before{content:"\f1bf"}.la-drupal:before{content:"\f1c0"}.la-edit:before{content:"\f1c1"}.la-eject:before{content:"\f1c2"}.la-ellipsis-h:before{content:"\f1c3"}.la-ellipsis-v:before{content:"\f1c4"}.la-empire:before,.la-ge:before{content:"\f1c5"}.la-envelope:before{content:"\f1c6"}.la-envelope-o:before{content:"\f1c7"}.la-envelope-square:before{content:"\f1c8"}.la-eraser:before{content:"\f1c9"}.la-eur:before{content:"\f1ca"}.la-euro:before{content:"\f1cb"}.la-exchange:before{content:"\f1cc"}.la-exclamation:before{content:"\f1cd"}.la-exclamation-circle:before{content:"\f1ce"}.la-exclamation-triangle:before{content:"\f1cf"}.la-expand:before{content:"\f1d0"}.la-expeditedssl:before{content:"\f1d1"}.la-external-link:before{content:"\f1d2"}.la-external-link-square:before{content:"\f1d3"}.la-eye:before{content:"\f1d4"}.la-eye-slash:before{content:"\f1d5"}.la-eyedropper:before{content:"\f1d6"}.la-facebook-f:before,.la-facebook:before{content:"\f1d7"}.la-facebook-official:before{content:"\f1d8"}.la-facebook-square:before{content:"\f1d9"}.la-fast-backward:before{content:"\f1da"}.la-fast-forward:before{content:"\f1db"}.la-fax:before{content:"\f1dc"}.la-female:before{content:"\f1dd"}.la-fighter-jet:before{content:"\f1de"}.la-file:before{content:"\f1df"}.la-file-archive-o:before{content:"\f1e0"}.la-file-audio-o:before{content:"\f1e1"}.la-file-code-o:before{content:"\f1e2"}.la-file-excel-o:before{content:"\f1e3"}.la-file-image-o:before{content:"\f1e4"}.la-file-movie-o:before{content:"\f1e5"}.la-file-o:before{content:"\f1e6"}.la-file-pdf-o:before{content:"\f1e7"}.la-file-photo-o:before{content:"\f1e8"}.la-file-picture-o:before{content:"\f1e9"}.la-file-powerpoint-o:before{content:"\f1ea"}.la-file-sound-o:before{content:"\f1eb"}.la-file-text:before{content:"\f1ec"}.la-file-text-o:before{content:"\f1ed"}.la-file-video-o:before{content:"\f1ee"}.la-file-word-o:before{content:"\f1ef"}.la-file-zip-o:before{content:"\f1f0"}.la-files-o:before{content:"\f1f1"}.la-film:before{content:"\f1f2"}.la-filter:before{content:"\f1f3"}.la-fire:before{content:"\f1f4"}.la-fire-extinguisher:before{content:"\f1f5"}.la-firefox:before{content:"\f1f6"}.la-flag:before{content:"\f1f7"}.la-flag-checkered:before{content:"\f1f8"}.la-flag-o:before{content:"\f1f9"}.la-flash:before{content:"\f1fa"}.la-flask:before{content:"\f1fb"}.la-flickr:before{content:"\f1fc"}.la-floppy-o:before{content:"\f1fd"}.la-folder:before{content:"\f1fe"}.la-folder-o:before{content:"\f1ff"}.la-folder-open:before{content:"\f200"}.la-folder-open-o:before{content:"\f201"}.la-font:before{content:"\f202"}.la-fonticons:before{content:"\f203"}.la-forumbee:before{content:"\f204"}.la-forward:before{content:"\f205"}.la-foursquare:before{content:"\f206"}.la-frown-o:before{content:"\f207"}.la-futbol-o:before,.la-soccer-ball-o:before{content:"\f208"}.la-gamepad:before{content:"\f209"}.la-gavel:before{content:"\f20a"}.la-gbp:before{content:"\f20b"}.la-gear:before{content:"\f20c"}.la-gears:before{content:"\f20d"}.la-genderless:before{content:"\f20e"}.la-get-pocket:before{content:"\f20f"}.la-gg:before{content:"\f210"}.la-gg-circle:before{content:"\f211"}.la-gift:before{content:"\f212"}.la-git:before{content:"\f213"}.la-git-square:before{content:"\f214"}.la-github:before{content:"\f215"}.la-github-alt:before{content:"\f216"}.la-github-square:before{content:"\f217"}.la-glass:before{content:"\f218"}.la-globe:before{content:"\f219"}.la-google:before{content:"\f21a"}.la-google-plus:before{content:"\f21b"}.la-google-plus-square:before{content:"\f21c"}.la-google-wallet:before{content:"\f21d"}.la-graduation-cap:before{content:"\f21e"}.la-gittip:before,.la-gratipay:before{content:"\f21f"}.la-group:before{content:"\f220"}.la-h-square:before{content:"\f221"}.la-hacker-news:before{content:"\f222"}.la-hand-grab-o:before{content:"\f223"}.la-hand-lizard-o:before{content:"\f224"}.la-hand-o-down:before{content:"\f225"}.la-hand-o-left:before{content:"\f226"}.la-hand-o-right:before{content:"\f227"}.la-hand-o-up:before{content:"\f228"}.la-hand-paper-o:before{content:"\f229"}.la-hand-peace-o:before{content:"\f22a"}.la-hand-pointer-o:before{content:"\f22b"}.la-hand-rock-o:before{content:"\f22c"}.la-hand-scissors-o:before{content:"\f22d"}.la-hand-spock-o:before{content:"\f22e"}.la-hand-stop-o:before{content:"\f22f"}.la-hdd-o:before{content:"\f230"}.la-header:before{content:"\f231"}.la-headphones:before{content:"\f232"}.la-heart:before{content:"\f233"}.la-heart-o:before{content:"\f234"}.la-heartbeat:before{content:"\f235"}.la-history:before{content:"\f236"}.la-home:before{content:"\f237"}.la-hospital-o:before{content:"\f238"}.la-hotel:before{content:"\f239"}.la-hourglass:before{content:"\f23a"}.la-hourglass-1:before{content:"\f23b"}.la-hourglass-2:before{content:"\f23c"}.la-hourglass-3:before{content:"\f23d"}.la-hourglass-end:before{content:"\f23e"}.la-hourglass-half:before{content:"\f23f"}.la-hourglass-o:before{content:"\f240"}.la-hourglass-start:before{content:"\f241"}.la-houzz:before{content:"\f242"}.la-html5:before{content:"\f243"}.la-i-cursor:before{content:"\f244"}.la-ils:before{content:"\f245"}.la-image:before{content:"\f246"}.la-inbox:before{content:"\f247"}.la-indent:before{content:"\f248"}.la-industry:before{content:"\f249"}.la-info:before{content:"\f24a"}.la-info-circle:before{content:"\f24b"}.la-inr:before{content:"\f24c"}.la-instagram:before{content:"\f24d"}.la-institution:before{content:"\f24e"}.la-internet-explorer:before{content:"\f24f"}.la-ioxhost:before{content:"\f250"}.la-italic:before{content:"\f251"}.la-joomla:before{content:"\f252"}.la-jpy:before{content:"\f253"}.la-jsfiddle:before{content:"\f254"}.la-key:before{content:"\f255"}.la-keyboard-o:before{content:"\f256"}.la-krw:before{content:"\f257"}.la-language:before{content:"\f258"}.la-laptop:before{content:"\f259"}.la-lastfm:before{content:"\f25a"}.la-lastfm-square:before{content:"\f25b"}.la-leaf:before{content:"\f25c"}.la-leanpub:before{content:"\f25d"}.la-legal:before{content:"\f25e"}.la-lemon-o:before{content:"\f25f"}.la-level-down:before{content:"\f260"}.la-level-up:before{content:"\f261"}.la-life-bouy:before{content:"\f262"}.la-life-buoy:before{content:"\f263"}.la-life-ring:before,.la-support:before{content:"\f264"}.la-life-saver:before{content:"\f265"}.la-lightbulb-o:before{content:"\f266"}.la-line-chart:before{content:"\f267"}.la-link:before{content:"\f268"}.la-linkedin:before{content:"\f269"}.la-linkedin-square:before{content:"\f26a"}.la-linux:before{content:"\f26b"}.la-list:before{content:"\f26c"}.la-list-alt:before{content:"\f26d"}.la-list-ol:before{content:"\f26e"}.la-list-ul:before{content:"\f26f"}.la-location-arrow:before{content:"\f270"}.la-lock:before{content:"\f271"}.la-long-arrow-down:before{content:"\f272"}.la-long-arrow-left:before{content:"\f273"}.la-long-arrow-right:before{content:"\f274"}.la-long-arrow-up:before{content:"\f275"}.la-magic:before{content:"\f276"}.la-magnet:before{content:"\f277"}.la-mail-forward:before{content:"\f278"}.la-mail-reply:before{content:"\f279"}.la-mail-reply-all:before{content:"\f27a"}.la-male:before{content:"\f27b"}.la-map:before{content:"\f27c"}.la-map-marker:before{content:"\f27d"}.la-map-o:before{content:"\f27e"}.la-map-pin:before{content:"\f27f"}.la-map-signs:before{content:"\f280"}.la-mars:before{content:"\f281"}.la-mars-double:before{content:"\f282"}.la-mars-stroke:before{content:"\f283"}.la-mars-stroke-h:before{content:"\f284"}.la-mars-stroke-v:before{content:"\f285"}.la-maxcdn:before{content:"\f286"}.la-meanpath:before{content:"\f287"}.la-medium:before{content:"\f288"}.la-medkit:before{content:"\f289"}.la-meh-o:before{content:"\f28a"}.la-mercury:before{content:"\f28b"}.la-microphone:before{content:"\f28c"}.la-microphone-slash:before{content:"\f28d"}.la-minus:before{content:"\f28e"}.la-minus-circle:before{content:"\f28f"}.la-minus-square:before{content:"\f290"}.la-minus-square-o:before{content:"\f291"}.la-mobile:before{content:"\f292"}.la-mobile-phone:before{content:"\f293"}.la-money:before{content:"\f294"}.la-moon-o:before{content:"\f295"}.la-mortar-board:before{content:"\f296"}.la-motorcycle:before{content:"\f297"}.la-mouse-pointer:before{content:"\f298"}.la-music:before{content:"\f299"}.la-navicon:before{content:"\f29a"}.la-neuter:before{content:"\f29b"}.la-newspaper-o:before{content:"\f29c"}.la-object-group:before{content:"\f29d"}.la-object-ungroup:before{content:"\f29e"}.la-odnoklassniki:before{content:"\f29f"}.la-odnoklassniki-square:before{content:"\f2a0"}.la-opencart:before{content:"\f2a1"}.la-openid:before{content:"\f2a2"}.la-opera:before{content:"\f2a3"}.la-optin-monster:before{content:"\f2a4"}.la-outdent:before{content:"\f2a5"}.la-pagelines:before{content:"\f2a6"}.la-paint-brush:before{content:"\f2a7"}.la-paper-plane:before,.la-send:before{content:"\f2a8"}.la-paper-plane-o:before,.la-send-o:before{content:"\f2a9"}.la-paperclip:before{content:"\f2aa"}.la-paragraph:before{content:"\f2ab"}.la-paste:before{content:"\f2ac"}.la-pause:before{content:"\f2ad"}.la-paw:before{content:"\f2ae"}.la-paypal:before{content:"\f2af"}.la-pencil:before{content:"\f2b0"}.la-pencil-square:before{content:"\f2b1"}.la-pencil-square-o:before{content:"\f2b2"}.la-phone:before{content:"\f2b3"}.la-phone-square:before{content:"\f2b4"}.la-photo:before{content:"\f2b5"}.la-picture-o:before{content:"\f2b6"}.la-pie-chart:before{content:"\f2b7"}.la-pied-piper:before{content:"\f2b8"}.la-pied-piper-alt:before{content:"\f2b9"}.la-pinterest:before{content:"\f2ba"}.la-pinterest-p:before{content:"\f2bb"}.la-pinterest-square:before{content:"\f2bc"}.la-plane:before{content:"\f2bd"}.la-play:before{content:"\f2be"}.la-play-circle:before{content:"\f2bf"}.la-play-circle-o:before{content:"\f2c0"}.la-plug:before{content:"\f2c1"}.la-plus:before{content:"\f2c2"}.la-plus-circle:before{content:"\f2c3"}.la-plus-square:before{content:"\f2c4"}.la-plus-square-o:before{content:"\f2c5"}.la-power-off:before{content:"\f2c6"}.la-print:before{content:"\f2c7"}.la-puzzle-piece:before{content:"\f2c8"}.la-qq:before{content:"\f2c9"}.la-qrcode:before{content:"\f2ca"}.la-question:before{content:"\f2cb"}.la-question-circle:before{content:"\f2cc"}.la-quote-left:before{content:"\f2cd"}.la-quote-right:before{content:"\f2ce"}.la-ra:before{content:"\f2cf"}.la-random:before{content:"\f2d0"}.la-rebel:before{content:"\f2d1"}.la-recycle:before{content:"\f2d2"}.la-reddit:before{content:"\f2d3"}.la-reddit-square:before{content:"\f2d4"}.la-refresh:before{content:"\f2d5"}.la-registered:before{content:"\f2d6"}.la-renren:before{content:"\f2d7"}.la-reorder:before{content:"\f2d8"}.la-repeat:before{content:"\f2d9"}.la-reply:before{content:"\f2da"}.la-reply-all:before{content:"\f2db"}.la-retweet:before{content:"\f2dc"}.la-rmb:before{content:"\f2dd"}.la-road:before{content:"\f2de"}.la-rocket:before{content:"\f2df"}.la-rotate-left:before{content:"\f2e0"}.la-rotate-right:before{content:"\f2e1"}.la-rouble:before{content:"\f2e2"}.la-feed:before,.la-rss:before{content:"\f2e3"}.la-rss-square:before{content:"\f2e4"}.la-rub:before{content:"\f2e5"}.la-ruble:before{content:"\f2e6"}.la-rupee:before{content:"\f2e7"}.la-safari:before{content:"\f2e8"}.la-save:before{content:"\f2e9"}.la-scissors:before{content:"\f2ea"}.la-search:before{content:"\f2eb"}.la-search-minus:before{content:"\f2ec"}.la-search-plus:before{content:"\f2ed"}.la-sellsy:before{content:"\f2ee"}.la-server:before{content:"\f2ef"}.la-share:before{content:"\f2f0"}.la-share-alt:before{content:"\f2f1"}.la-share-alt-square:before{content:"\f2f2"}.la-share-square:before{content:"\f2f3"}.la-share-square-o:before{content:"\f2f4"}.la-shekel:before{content:"\f2f5"}.la-sheqel:before{content:"\f2f6"}.la-shield:before{content:"\f2f7"}.la-ship:before{content:"\f2f8"}.la-shirtsinbulk:before{content:"\f2f9"}.la-shopping-cart:before{content:"\f2fa"}.la-sign-in:before{content:"\f2fb"}.la-sign-out:before{content:"\f2fc"}.la-signal:before{content:"\f2fd"}.la-simplybuilt:before{content:"\f2fe"}.la-sitemap:before{content:"\f2ff"}.la-skyatlas:before{content:"\f300"}.la-skype:before{content:"\f301"}.la-slack:before{content:"\f302"}.la-sliders:before{content:"\f303"}.la-slideshare:before{content:"\f304"}.la-smile-o:before{content:"\f305"}.la-sort:before,.la-unsorted:before{content:"\f306"}.la-sort-alpha-asc:before{content:"\f307"}.la-sort-alpha-desc:before{content:"\f308"}.la-sort-amount-asc:before{content:"\f309"}.la-sort-amount-desc:before{content:"\f30a"}.la-sort-asc:before,.la-sort-up:before{content:"\f30b"}.la-sort-desc:before,.la-sort-down:before{content:"\f30c"}.la-sort-numeric-asc:before{content:"\f30d"}.la-sort-numeric-desc:before{content:"\f30e"}.la-soundcloud:before{content:"\f30f"}.la-space-shuttle:before{content:"\f310"}.la-spinner:before{content:"\f311"}.la-spoon:before{content:"\f312"}.la-spotify:before{content:"\f313"}.la-square:before{content:"\f314"}.la-square-o:before{content:"\f315"}.la-stack-exchange:before{content:"\f316"}.la-stack-overflow:before{content:"\f317"}.la-star:before{content:"\f318"}.la-star-half:before{content:"\f319"}.la-star-half-empty:before,.la-star-half-full:before,.la-star-half-o:before{content:"\f31a"}.la-star-o:before{content:"\f31b"}.la-steam:before{content:"\f31c"}.la-steam-square:before{content:"\f31d"}.la-step-backward:before{content:"\f31e"}.la-step-forward:before{content:"\f31f"}.la-stethoscope:before{content:"\f320"}.la-sticky-note:before{content:"\f321"}.la-sticky-note-o:before{content:"\f322"}.la-stop:before{content:"\f323"}.la-street-view:before{content:"\f324"}.la-strikethrough:before{content:"\f325"}.la-stumbleupon:before{content:"\f326"}.la-stumbleupon-circle:before{content:"\f327"}.la-subscript:before{content:"\f328"}.la-subway:before{content:"\f329"}.la-suitcase:before{content:"\f32a"}.la-sun-o:before{content:"\f32b"}.la-superscript:before{content:"\f32c"}.la-table:before{content:"\f32d"}.la-tablet:before{content:"\f32e"}.la-tachometer:before{content:"\f32f"}.la-tag:before{content:"\f330"}.la-tags:before{content:"\f331"}.la-tasks:before{content:"\f332"}.la-taxi:before{content:"\f333"}.la-television:before,.la-tv:before{content:"\f334"}.la-tencent-weibo:before{content:"\f335"}.la-terminal:before{content:"\f336"}.la-text-height:before{content:"\f337"}.la-text-width:before{content:"\f338"}.la-th:before{content:"\f339"}.la-th-large:before{content:"\f33a"}.la-th-list:before{content:"\f33b"}.la-thumb-tack:before{content:"\f33c"}.la-thumbs-down:before{content:"\f33d"}.la-thumbs-o-down:before{content:"\f33e"}.la-thumbs-o-up:before{content:"\f33f"}.la-thumbs-up:before{content:"\f340"}.la-ticket:before{content:"\f341"}.la-remove:before,.la-times:before{content:"\f342"}.la-times-circle:before{content:"\f343"}.la-times-circle-o:before{content:"\f344"}.la-tint:before{content:"\f345"}.la-toggle-off:before{content:"\f346"}.la-toggle-on:before{content:"\f347"}.la-trademark:before{content:"\f348"}.la-train:before{content:"\f349"}.la-intersex:before,.la-transgender:before{content:"\f34a"}.la-transgender-alt:before{content:"\f34b"}.la-trash:before{content:"\f34c"}.la-trash-o:before{content:"\f34d"}.la-tree:before{content:"\f34e"}.la-trello:before{content:"\f34f"}.la-tripadvisor:before{content:"\f350"}.la-trophy:before{content:"\f351"}.la-truck:before{content:"\f352"}.la-try:before{content:"\f353"}.la-tty:before{content:"\f354"}.la-tumblr:before{content:"\f355"}.la-tumblr-square:before{content:"\f356"}.la-turkish-lira:before{content:"\f357"}.la-twitch:before{content:"\f358"}.la-twitter:before{content:"\f359"}.la-twitter-square:before{content:"\f35a"}.la-umbrella:before{content:"\f35b"}.la-underline:before{content:"\f35c"}.la-undo:before{content:"\f35d"}.la-university:before{content:"\f35e"}.la-unlink:before{content:"\f35f"}.la-unlock:before{content:"\f360"}.la-unlock-alt:before{content:"\f361"}.la-upload:before{content:"\f362"}.la-usd:before{content:"\f363"}.la-user:before{content:"\f364"}.la-user-md:before{content:"\f365"}.la-user-plus:before{content:"\f366"}.la-user-secret:before{content:"\f367"}.la-user-times:before{content:"\f368"}.la-users:before{content:"\f369"}.la-venus:before{content:"\f36a"}.la-venus-double:before{content:"\f36b"}.la-venus-mars:before{content:"\f36c"}.la-viacoin:before{content:"\f36d"}.la-video-camera:before{content:"\f36e"}.la-vimeo:before{content:"\f36f"}.la-vimeo-square:before{content:"\f370"}.la-vine:before{content:"\f371"}.la-vk:before{content:"\f372"}.la-volume-down:before{content:"\f373"}.la-volume-off:before{content:"\f374"}.la-volume-up:before{content:"\f375"}.la-warning:before{content:"\f376"}.la-wechat:before{content:"\f377"}.la-weibo:before{content:"\f378"}.la-weixin:before{content:"\f379"}.la-whatsapp:before{content:"\f37a"}.la-wheelchair:before{content:"\f37b"}.la-wifi:before{content:"\f37c"}.la-wikipedia-w:before{content:"\f37d"}.la-windows:before{content:"\f37e"}.la-won:before{content:"\f37f"}.la-wordpress:before{content:"\f380"}.la-wrench:before{content:"\f381"}.la-xing:before{content:"\f382"}.la-xing-square:before{content:"\f383"}.la-y-combinator:before{content:"\f384"}.la-y-combinator-square:before{content:"\f385"}.la-yahoo:before{content:"\f386"}.la-yc:before{content:"\f387"}.la-yc-square:before{content:"\f388"}.la-yelp:before{content:"\f389"}.la-yen:before{content:"\f38a"}.la-youtube:before{content:"\f38b"}.la-youtube-play:before{content:"\f38c"}.la-youtube-square:before{content:"\f38d"} \ No newline at end of file diff --git a/src/assets/fonts/line-awesome/fonts/line-awesome.eot b/src/assets/fonts/line-awesome/fonts/line-awesome.eot new file mode 100644 index 0000000..fde50df Binary files /dev/null and b/src/assets/fonts/line-awesome/fonts/line-awesome.eot differ diff --git a/src/assets/fonts/line-awesome/fonts/line-awesome.svg b/src/assets/fonts/line-awesome/fonts/line-awesome.svg new file mode 100644 index 0000000..e3ab5fd --- /dev/null +++ b/src/assets/fonts/line-awesome/fonts/line-awesome.svg @@ -0,0 +1,2628 @@ + + + + + +Created by FontForge 20120731 at Sun Jan 22 13:00:30 2017 + By icons8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/line-awesome/fonts/line-awesome.ttf b/src/assets/fonts/line-awesome/fonts/line-awesome.ttf new file mode 100644 index 0000000..8f99967 Binary files /dev/null and b/src/assets/fonts/line-awesome/fonts/line-awesome.ttf differ diff --git a/src/assets/fonts/line-awesome/fonts/line-awesome.woff b/src/assets/fonts/line-awesome/fonts/line-awesome.woff new file mode 100644 index 0000000..0b3db49 Binary files /dev/null and b/src/assets/fonts/line-awesome/fonts/line-awesome.woff differ diff --git a/src/assets/fonts/line-awesome/fonts/line-awesome.woff2 b/src/assets/fonts/line-awesome/fonts/line-awesome.woff2 new file mode 100644 index 0000000..82810e7 Binary files /dev/null and b/src/assets/fonts/line-awesome/fonts/line-awesome.woff2 differ diff --git a/src/assets/fonts/meteocons/fonts/meteocons.eot b/src/assets/fonts/meteocons/fonts/meteocons.eot new file mode 100644 index 0000000..be2a850 Binary files /dev/null and b/src/assets/fonts/meteocons/fonts/meteocons.eot differ diff --git a/src/assets/fonts/meteocons/fonts/meteocons.svg b/src/assets/fonts/meteocons/fonts/meteocons.svg new file mode 100644 index 0000000..5a85a2c --- /dev/null +++ b/src/assets/fonts/meteocons/fonts/meteocons.svg @@ -0,0 +1,57 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/meteocons/fonts/meteocons.ttf b/src/assets/fonts/meteocons/fonts/meteocons.ttf new file mode 100644 index 0000000..51980b6 Binary files /dev/null and b/src/assets/fonts/meteocons/fonts/meteocons.ttf differ diff --git a/src/assets/fonts/meteocons/fonts/meteocons.woff b/src/assets/fonts/meteocons/fonts/meteocons.woff new file mode 100644 index 0000000..2976ef1 Binary files /dev/null and b/src/assets/fonts/meteocons/fonts/meteocons.woff differ diff --git a/src/assets/fonts/meteocons/style-origin.css b/src/assets/fonts/meteocons/style-origin.css new file mode 100644 index 0000000..811e211 --- /dev/null +++ b/src/assets/fonts/meteocons/style-origin.css @@ -0,0 +1,167 @@ +@font-face { + font-family: 'meteocons'; + src: url('fonts/meteocons.eot?df08c6'); + src: url('fonts/meteocons.eot?df08c6#iefix') format('embedded-opentype'), + url('fonts/meteocons.ttf?df08c6') format('truetype'), + url('fonts/meteocons.woff?df08c6') format('woff'), + url('fonts/meteocons.svg?df08c6#meteocons') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="me-"], [class*=" me-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'meteocons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.me-sunrise:before { + content: "\e900"; +} +.me-sun:before { + content: "\e901"; +} +.me-moon:before { + content: "\e902"; +} +.me-sun2:before { + content: "\e903"; +} +.me-windy:before { + content: "\e904"; +} +.me-wind:before { + content: "\e905"; +} +.me-snowflake:before { + content: "\e906"; +} +.me-cloudy:before { + content: "\e907"; +} +.me-cloud:before { + content: "\e908"; +} +.me-weather:before { + content: "\e909"; +} +.me-weather2:before { + content: "\e90a"; +} +.me-weather3:before { + content: "\e90b"; +} +.me-lines:before { + content: "\e90c"; +} +.me-cloud2:before { + content: "\e90d"; +} +.me-lightning:before { + content: "\e90e"; +} +.me-lightning2:before { + content: "\e90f"; +} +.me-rainy:before { + content: "\e910"; +} +.me-rainy2:before { + content: "\e911"; +} +.me-windy2:before { + content: "\e912"; +} +.me-windy3:before { + content: "\e913"; +} +.me-snowy:before { + content: "\e914"; +} +.me-snowy2:before { + content: "\e915"; +} +.me-snowy3:before { + content: "\e916"; +} +.me-weather4:before { + content: "\e917"; +} +.me-cloudy2:before { + content: "\e918"; +} +.me-cloud3:before { + content: "\e919"; +} +.me-lightning3:before { + content: "\e91a"; +} +.me-sun3:before { + content: "\e91b"; +} +.me-moon2:before { + content: "\e91c"; +} +.me-cloudy3:before { + content: "\e91d"; +} +.me-cloud4:before { + content: "\e91e"; +} +.me-cloud5:before { + content: "\e91f"; +} +.me-lightning4:before { + content: "\e920"; +} +.me-rainy3:before { + content: "\e921"; +} +.me-rainy4:before { + content: "\e922"; +} +.me-windy4:before { + content: "\e923"; +} +.me-windy5:before { + content: "\e924"; +} +.me-snowy4:before { + content: "\e925"; +} +.me-snowy5:before { + content: "\e926"; +} +.me-weather5:before { + content: "\e927"; +} +.me-cloudy4:before { + content: "\e928"; +} +.me-lightning5:before { + content: "\e929"; +} +.me-thermometer:before { + content: "\e92a"; +} +.me-compass:before { + content: "\e92b"; +} +.me-none:before { + content: "\e92c"; +} +.me-Celsius:before { + content: "\e92d"; +} +.me-Fahrenheit:before { + content: "\e92e"; +} \ No newline at end of file diff --git a/src/assets/fonts/meteocons/style.css b/src/assets/fonts/meteocons/style.css new file mode 100644 index 0000000..18bca73 --- /dev/null +++ b/src/assets/fonts/meteocons/style.css @@ -0,0 +1,167 @@ +@font-face { + font-family: 'meteocons'; + src: url('fonts/meteocons.eot?df08c6'); + src: url('fonts/meteocons.eot?df08c6#iefix') format('embedded-opentype'), + url('fonts/meteocons.ttf?df08c6') format('truetype'), + url(data:font/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAD6cAAsAAAAAPlAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIGTWNtYXAAAAFoAAAAVAAAAFQXVtK1Z2FzcAAAAbwAAAAIAAAACAAAABBnbHlmAAABxAAAOWgAADlosTsml2hlYWQAADssAAAANgAAADYNhltPaGhlYQAAO2QAAAAkAAAAJAfCA/RobXR4AAA7iAAAAMwAAADMwgAMF2xvY2EAADxUAAAAaAAAAGhdIWuAbWF4cAAAPLwAAAAgAAAAIAA+AVFuYW1lAAA83AAAAZ4AAAGeVim1SXBvc3QAAD58AAAAIAAAACAAAwAAAAMD9QGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6S4DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADgAAAAKAAgAAgACAAEAIOku//3//wAAAAAAIOkA//3//wAB/+MXBAADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAABgDaAIADJgMAABIAIAAuADwASgBYAAABPgEzMhYXMy4DIyIOAgczEzI2PQE0JiMiBh0BFBYlJiIPAQYUFxYyPwE2NAUnJiIHBhQfARYyNzY0ASEiBhUUFjMhMjY1NCYHISIGFRQWMyEyNjU0JgFjC1g6OlgLQAYnO0sqKks7JwZAnQ0TEw0NExMBMwkbCS0KCgkbCS0K/gQtCRsJCgotCRsJCgGC/oANExMNAYANExNN/wANExMNAQANExMBgDdJSTcpRjMeHjNGKQEAEw1ADRMTDUANEwYKCi0JGwkKCi0JGyQtCgoJGwktCgoJG/7wEw0NExMNDROAEw0NExMNDRMAAAAKAGAAIAOgA2AAEwAfAC0AOwBJAFcAZQBzAIEAjwAAASIOAhUUHgIzMj4CNTQuAgMiJjU0NjMyFhUUBgMyNj0BNCYjIgYdARQWEyIGHQEUFjMyNj0BNCYTNzY0JyYiDwEGFBcWMgEHBhQXFjI/ATY0JyYiJzQmKwEiBhUUFjsBMjYlIyIGFRQWOwEyNjU0JiUWMjc2NC8BJiIHBhQXASYiBwYUHwEWMjc2NCcCAC5SPSMjPVIuLlI9IyM9Ui5CXl5CQl5eQg0TEw0NExMNDRMTDQ0TE+wtCgoJGwktCgoJG/4XLQoKCRsJLQoKCRswEw1ADRMTDUANEwKgQA0TEw1ADRMT/XoJGwkKCi0JGwkKCgIfCRsJCgotCRsJCgoCoCM9Ui4uUj0jIz1SLi5SPSP+gF5CQl5eQkJeAcATDUANExMNQA0T/cATDUANExMNQA0TAewtCRsJCgotCRsJCv5yLQkbCQoKLQkbCQrCDRMTDQ0TEy0TDQ0TEw0NE6wKCgkbCS0KCgkbCf47CgoJGgotCQkJGwkAAAACAVIBEgL3ArcAIgA0AAABDgEiJicuATQ2Nz4BNzYWFx4BBwYWFx4BNzYWFx4BBw4BBwEGFBceAT4BNwYmJy4BNw4BBwK8Jl5iXyUmJSUmFDAbCRIHBgQDExgoJ2s2CBIHBgQDCR4U/sM4OB5NT0oaNmYoJyYDBAgEARImJSUmJV9iXiYUHgkDBAYHEgg2aycoGBMDBAYHEgkbMBQBPDifOB4cBSQhAyYnKGY2AwgEAAcAfgACA34DQgANABsAKQA3AEUAZQByAAABMjY9ATQmIyIGHQEUFhMiBh0BFBYzMjY9ATQmJQcGFBcWMj8BNjQnJiInNCYrASIGFRQWOwEyNjcWMjc2NC8BJiIHBhQXBSIGBy4BIyIOAhUUHgIzMjY3HgEzMj4CNTQuAgMuATU0NjcOARUUFhcCHg0TEw0NExMNDRMTDQ0TE/76LQoKCRsJLQoKCRswEw1ADRMTDUANEycJGwkKCi0JGwkKCgGmESAPDyARLlI9IyM9Ui4RIA8PIBEuUj0jIz1SzjdJSTcdIyMdAsITDUANExMNQA0T/cATDUANExMNQA0TVC0JGwkKCi0JGwkKwg0TEw0NExPZCgoJGwktCgoJGwkZBgQEBiM9Ui4uUj0jBgQEBiM9Ui4uUj0j/oMLWDo6WAsfUC4uUB8AAAQAPgDCA/4DAgA/AFQAWwBjAAABIy4DIyIGByMiBhUUFjsBDgEHIyIGFRQWOwEeARcjIgYVFBY7AR4BMzI2NzMyNjU0JisBPgE3MzI2NTQmIyUzMjY1NCYrAT4BMzIeAhchPgE3EyImJyEOATchLgEnIQ4BA96jBjFMYzdLfSfRDRMTDbIGBwJjDRMTDWMCBwasEBYWEMsnfUtLfSdLEBYWECwGBwKjDRMTDf12yg0TEw2cHlAuKks7Jwb+RgMJB8ouUB4BOB5Qm/5tBwkDAboDCQICNl1FKEY6Ew0NEw8gERMNDRMRIA8TDQ0TOkZGOhMNDRMPIBETDQ0TQBMNDRMeIh4zRikRIA/+wCIeHiKADyARESAAAAADAH4AgAO+AsAAEwAnAEEAAAEiBhUUFhchIgYVFBYzITI2NTQmBSEyNjU0JiMiBhUUFhchIgYVFBYFKgEHIiYjISIGFRQWMyEOARUUFjMyNjU0JgNeKDgDA/2aDRMTDQLAKDg4/RgBgCg4OCgoOAMD/toNExMCDQEDAgEBAf4SERgYEQGdAwM4KCg4OAJAOCgIEAgTDQ0TOCgoOEA4KCg4OCgIEAgTDQ0TwAEBEw0NEwgQCCg4OCgoOAAAAAIA6wCAAxUDAABIAFQAAAEnPgE1NCYnNz4BJy4BDwEuASc1NCYjIgYdAQ4BBycmBgcGFh8BDgEVFBYXBw4BFx4BPwEeARcVFBYzMjY9AT4BNxcWNjc2JiclNDYzMhYVFAYjIiYC/kICAgICQhcNDQ0zF0INHhElGxslER4NQhczDQ0NF0EBAgIBQRcNDQ0zF0INHhElGxslER4NQhczDQ0NF/7CJRsaJiYaGyUBdyYJEQkJEQkmDTMXFw4NJwwRBkwbJSUbTAYRCyUODhcXMw0mCBIJCREJJg0zFxcODiYMEQZMGyUlG0wGEQwmDg4XFzMNSRslJRsaJiYAAAgAAP/ABAADwAANABsAKQA3AEUAeQCJALoAAAEyNj0BNCYjIgYdARQWBTc2NCcmIg8BBhQXFjIFMzI2NTQmKwEiBhUUFiUUFjsBMjY1NCYrASIGJRYyNzY0LwEmIgcGFBcBIgYHLgEnLgMjIg4CFRQWFw4DFRQeAjMyNjceATMyNjceATMyPgI1NC4CIwEyFhcuASMiBgcuATU0NjMBIiYnDgEjIiYnDgEjIiY1NDYzMhYXHgEXPgE3PgEzMhYXHgEXHgEXPgEzMhYVFAYjAaANExMNDRMTAQYtCQkJGwktCgoJG/2QQA0TEw1ADRMTAq0TDUANExMNQA0T/ecJGwkKCi0JGwkKCgKmCBAIGUEmASQ9UC4uUj0jDAstTjoiIz1SLhUnEyxrOjprLBMnFS5SPSMjPVIu/oA8WAkPHhBFey0JCl5CAYAaLhQjZjs7ZiMULhpCXl5CDBYKBAkEBhEJI2U7Dx0OEB4OIzgSDh8QQl5eQgNAEw1ADRMTDUANE1QtCRsJCgotCRsJCuITDQ0TEw0NEyANExMNDRMTvwoKCRsJLQoKCRsJ/qcBASI0ES1QPCIjPVIuGjEWAiQ8UC0uUj0jBwgmKSkmCAcjPVIuLlI9IwEATTkCBDgyECYUQl79gBANKjMzKg0QXkJCXgQDAQICDRcLKzIEAwQLCBM4IwYGXkJCXgADAAD/wAQAA3EAQQBUAIQAAAE+ATc+ATc2JicuAQcGJicuATc2JicuAQcOAQcOARcOAQcuASMiDgIVFB4CMzI2Nx4BMzI2Nx4BMzI+AjU0JgE+ATcGFhceATcOAQcuAScmNjcTIiYnDgEjIiYnDgEjIiY1NDYzMhYXPgE3MjYzMhYXHgEXHgEXHgEXPgEzMhYVFAYDZgcPBxMeCgMEBgcSCTVrJygYEwMEBgcSCRwwEzMgEkFxJggQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9I1f+nQQIBAMmJyhmNhU3Hil1QhMWKdoaLhQjZjs7ZiMULhpCXl5CEB8OHnFFBAcEEyUSGCsSEh4MAgQCDh8QQl5eAbQFCwcUMBwIEgcGBQQSGCcnbDUIEgcHBAMKHhQyhUEIQjUBASM9Ui4uUj0jBwgmKSkmCAcjPVIuSnMBawQHAzZmJygmAxohBzQ/BTNuKf04EA0qMzMqDRBeQkJeBgY7TAQBBgUHGA8OJBQDBwMGBl5CQl4AAAkAYABCA6ADggANABsAKQA3AEUAYwBxAH8AjQAAATI2PQE0JiMiBh0BFBYFNzY0JyYiDwEGFBcWMgUzMjY1NCYrASIGFRQWJRQWOwEyNjU0JisBIgYlFjI3NjQvASYiBwYUFxMzLgE1NDYzMhYVFAYHMz4BNTQuAiMiDgIVFBYFISIGFRQWMyEyNjU0JgchIgYVFBYzITI2NTQmByEiBhUUFjMhMjY1NCYCAA0TEw0NExMBBi0JCQkbCS0KCgkb/ZBADRMTDUANExMCrRMNQA0TEw1ADRP95wkbCQoKLQkbCQoKSUABAl5CQl4CAUABAiM9Ui4uUj0jAgJe/QANExMNAwANExMN/QANExMNAwANExMN/QANExMNAwANExMDAhMNQA0TEw1ADRNULQkbCQoKLQkbCQriEw0NExMNDRMgDRMTDQ0TE78KCgkbCS0KCgkbCf7nCBAIQl5eQggQCAgQCC5SPSMjPVIuCBBIEw0NExMNDROAEw0NExMNDROAEw0NExMNDRMABABgAEIDoAM8AA0AGwApAFsAABMhMjY1NCYjISIGFRQWBSEiBhUUFjMhMjY1NCYHISIGFRQWMyEyNjU0JgEwJjUmNDc+ATcGFhceATcOAQczPgE3NiYnLgEHBiYnLgE3NiYnLgEHDgEHDgIWFzOAAwANExMN/QANExMDDf0ADRMTDQMADRMTDf0ADRMTDQMADRMT/g0CODgECAQDJicoZjYECQVTCAwFAwQGBxIJNWsnKBgTAwQGBxIJGzETISQJExhSAUITDQ0TEw0NE0ATDQ0TEw0NE4ATDQ0TEw0NEwFAAQE4nzgEBwQ2ZignJgMFCQQMGg4JEgYHBAMTGCgnazUJEgcGBAMKHhMhUFRVJQAEAAAAQAQAA0AANQBDAFEAXwAAEy4BNTQ2MzIWFz4BMzIWFz4BMzIWFRQGBzM+ATU0LgIjIgYHLgEjIgYHLgEjIg4CFRQWFwUhIgYVFBYzITI2NTQmByEiBhUUFjMhMjY1NCYHISIGFRQWMyEyNjU0JkMBAl5CEB8OIHhLS3ggDh8QQl4CAUABAiM9Ui4IEAgsh01NhywIEAguUj0jAgED3fxADRMTDQPADRMTDfxADRMTDQPADRMTDfxADRMTDQPADRMTAcAIEAhCXgYGPk5OPgYGXkIIEAgIEAguUj0jAQE9RUU9AQEjPVIuCBAIQBMNDRMTDQ0TgBMNDRMTDQ0TgBMNDRMTDQ0TAAAABADAAQADQALAAA0AGwApADcAABMhMjY1NCYjISIGFRQWBSEiBhUUFjMhMjY1NCYHISIGFRQWMyEyNjU0JgchIgYVFBYzITI2NTQm4AJADRMTDf3ADRMTAk39wA0TEw0CQA0TEw39wA0TEw0CQA0TEw39wA0TEw0CQA0TEwKAEw0NExMNDRNAEw0NExMNDROAEw0NExMNDROAEw0NExMNDRMAAAACAAAAgAQAAwAALABRAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIxEiJicOASMiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBiMDIAgQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9IyM9Ui4aLhQjZjs7ZiMULhpCXl5CEB8OIHhLS3ggDh8QQl5eQgKAAQE9RUU9AQEjPVIuLlI9IwcIJikpJggHIz1SLi5SPSP+gBANKjMzKg0QXkJCXgYGPk5OPgYGXkJCXgACAAAAAAQAA8AAMQBWAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceARcHFwc3Jzc+ATceATMyPgI1NC4CAyImJw4BDwEiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBgMgCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMhTCpGQEDAQBY0XygTJxUuUj0jIz1SLhouFBxOLiw7ZiMULhpCXl5CEB8OIHhLS3ggDh8QQl5eA0ABAT1FRT0BASM9Ui4uUj0jBwgcJgdGQMDAQEIEJiMIByM9Ui4uUj0j/oAQDSIuCAUzKg0QXkJCXgYGPk5OPgYGXkJCXgAAAAACAAAAAAQAA8AAUgBYAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceARc3LgEnDgEjIiY1NDYzMhYXPgEzMhYXPgEzMhYVFAYjIiYnDgEPAT4BNx4BMzI+AjU0LgIjARcHNyc3AyAIEAgsh01NhywIEAguUj0jIz1SLhUnExMpFjIjPRcULhpCXl5CEB8OIHhLS3ggDh8QQl5eQhouFA8nFRsfOhoTJxUuUj0jIz1SLv5gQEDAQEADQAEBPUVFPQEBIz1SLi5SPSMHCBAZCjILKBwNEF5CQl4GBj5OTj4GBl5CQl4QDRIfDFAJIBYIByM9Ui4uUj0j/cBAwMBAwAAAAwAAAAAEAAOAACwAUQBdAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIxEiJicOASMiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBiMBFBYzMjY1NCYxMAYDIAgQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9IyM9Ui4aLhQjZjs7ZiMULhpCXl5CEB8OIHhLS3ggDh8QQl5eQv6gJRsbJUBAAwABAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIuLlI9I/6AEA0qMzMqDRBeQkJeBgY+Tk4+BgZeQkJe/sAbJSUbG2VlAAAFAAD/wAQAA8AALABQAFwAaAB0AAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIxEiJicOASMiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBgEUFjMyNjU0JjEwBjcUFjMyNjU0JjEwBiUUFjMyNjU0JjEwBgMgCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMsazo6aywTJxUuUj0jIz1SLhouFCNmOztmIxQuGkJeXkIQHw4geEtLeCAOHxBCXl7+YCUbGyVAQP4lGxslQED+ACUbGyVAQANAAQE9RUU9AQEjPVIuLlI9IwcIJikpJggHIz1SLi5SPSP+gBANKjMzKg0QXkJCXgYGPk5OPgYGXkJCXv5AGyUlGxtlZSUbJSUbG2VlZRslJRsbZWUABQAAAL8EAALBACIARgBUAGIAcAAAAS4BIyIGBw4BFRQeAjMyNjceATMyNjceATMyPgI1NCYnAyImJw4BIyImJw4BIyImNTQ2MzIWMz4BMzIWFzI2MzIWFRQGBSEiBhUUFjMhMjY1NCYlMzI2NTQmKwEiBhUUFjczMjY1NCYrASIGFRQWA0IkXzQ0YCRPbyA2SCoIEggfRyYlRx8JEQkpSTYfb08JDRgLGkEjI0EaDBgMOFBQOAQKBRtRLy5SGwQKBThPT/2v/wANExMNAQANExP+84ANExMNgA0TE02ADRMTDYANExMCdCUoKCUEc1AqSDYgAgEUFRUUAQIgNkgqUHME/rEFBBcYGBcEBVA4OE8BJSkpJQFPODhQJRMNDRMTDQ0TQBMNDRMTDQ0TgBMNDRMTDQ0TAAAABwAAAAAEAAOAACEARgBUAGIAcAB8AIgAAAEuASMiBgcOARUUHgIzMjY3HgEzMjY3HgEzMj4CNTQmAyImJw4BIyImJw4BIyImNTQ2MzIWFz4BMzIWFz4BMzIWFRQGIwUhIgYVFBYzITI2NTQmJTMyNjU0JisBIgYVFBY3MzI2NTQmKwEiBhUUFgEUFjMyNjU0JjEwBgUUFjMyNjU0JjEwBgNCJF80NGAkT28gNkgqCBIIH0cmJUcfCREJKUk2H29YDRgLGkEjI0EaDBgMOFBQOAQKBRtRLy5SGwQKBThPTzj95/8ADRMTDQEADRMT/vOADRMTDYANExNNgA0TEw2ADRMTAW0lGxslQEABACUbGyVAQAMyJSkpJQN0UClJNh8BAhQWFhQCAR82SSlQdP61BAUXGRkXBQRPODhQAQElKiolAQFQODhPJRMNDhISDg0TQBIODRMTDQ4SgBIODRMTDQ4S/kEbJSUbG2VlmxslJRsbZWUABAAA/8AEAAPAAEgAVACBAKUAACUnPgE1NCYnNz4BJy4BDwEuASc1NCYjIgYdAQ4BBycmBgcGFh8BDgEVFBYXBw4BFx4BPwEeARcVFBYzMjY9AT4BNxcWNjc2JicnIiY1NDYzMhYVFAYBIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIxEiJicOASMiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBgKMJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNjA8UFA8PFBQBEQgQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9IyM9Ui4aLhQjZjs7ZiMULhpCXl5CEB8OIHhLS3ggDh8QQl5eSRQFCgUFCQUVBxwNDQcHFQYKAyoPFBQPKgMKBhUHBw0NHAcVBQkFBQoFFAgcDQwIBxUGCgMqDhUVDioDCgYVBwgMDRwIBBUPDhUVDg8VAvMBAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIuLlI9I/6AEA0qMzMqDRBeQkJeBgY+Tk4+BgZeQkJeAAADAAAAgAQAA8AASABUAKsAAAEnPgE1NCYnNz4BJy4BDwEuASc1NCYjIgYdAQ4BBycmBgcGFh8BDgEVFBYXBw4BFx4BPwEeARcVFBYzMjY9AT4BNxcWNjc2JicnIiY1NDYzMhYVFAYBIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjc+ATc+ATcuAScOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBiMiJicOAQceARceARceATMyPgI1NC4CIwKMJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNjA8UFA8PFBQBEQgQCCyHTU2HLAgQCC5SPSMjPVIuEiIRAQYEBhAKBQsEFC4aQl5eQhAfDiB4S0t4IA4fEEJeXkIaLhQECwUKEQUEBgERIhIuUj0jIz1SLgEJFAUKBQUJBRUHHA0NBwcVBgoDKg8UFA8qAwoGFQcHDQ0cBxUFCQUFCgUUCBwNDAgHFQYKAyoOFRUOKgMKBhUHCAwNHAgEFQ8OFRUODxUCMwEBPUVFPQEBIz1SLi5SPSMGBgcPBwoRBgUJBQ0QXkJCXgYGPk5OPgYGXkJCXhANBQkFBhEKBw8HBgYjPVIuLlI9IwAACAAA/8AEAAPAAEgAVACdAKkA8QD9ASoBTgAAJSc+ATU0Jic3PgEnLgEPAS4BJzU0JiMiBh0BDgEHJyYGBwYWHwEOARUUFhcHDgEXHgE/AR4BFxUUFjMyNj0BPgE3FxY2NzYmJyciJjU0NjMyFhUUBiUnNCYnNzY0JyYiDwEuASMnLgEHDgEfAQ4BBw4BBycmBgcGFh8BHgEXBwYUFxYyPwEeAR8BHgE3PgEvAT4BNz4BNxcWNjc2JicHBiInJjQ3NjIXFhQlBy4BJy4BJzc2JicmBg8BIgYHJyYiBwYUHwEOARUHDgEXHgE/AR4BFx4BFwcGFhcWNj8BPgE3FxY2NzY0LwE+AT8BPgEnLgEHBiInJjQ3NjIXFhQBNC4CIyIGBy4BIyIGBy4BIyIOAhUUHgIzMjY3HgEzMjY3HgEzMj4CNQUOASMiJicOASMiJjU0NjMyFhc+ATMyFhc+ATMyFhUUBiMiJgKMJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNjA8UFA8PFBQBpRgDAxIGBgYSBhEGCwUHAg8ICQgCBgIFAgIDAhgIDwMCCQgYAQMCEgYHBhEGEgULBgYCDwkICQIHAwQCAgQCFwkPAgIICUcHEQYGBgYRBwb9exgCAwICBQIGAwkICQ8CBwULBhEGEgYGBhIDAxgJCAICDwkXAgQCAgQDBwIJCAkPAgYGCwUSBhEHBgYSAgMBGAgJAgMPRQYRBwYGBxEGBgNJIz1SLggQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9I/7EI2Y7O2YjFC4aQl5eQhAfDiB4S0t4IA4fEEJeXkIaLkkUBQoFBQkFFQccDQ0HBxUGCgMqDxQUDyoDCgYVBwcNDRwHFQUJBQUKBRQIHA0MCAcVBgoDKg4VFQ4qAwoGFQcIDA0cCAQVDw4VFQ4PFVoHBgsFEQcRBgYGEQIDGAkJAwIPCBgCAwMCBAIGAgkICA8DBgYLBRIGEQYGBhECAwEYCAkCAw8IGAIDAgIFAgYCCAkIDwINBgYGEgYGBgYScwYCBAIDAwIYCA8CAwkIGQMCEQYGBhEHEQULBgYDDwgJCAIGAgUCAgMCGAgPAgMJCBgBAwIRBwEGBhEGEgULBgYDDwgICTsGBgYSBgYGBhIBgC5SPSMBAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIugyozMyoNEF5CQl4GBj5OTj4GBl5CQl4QAAAAAAcAAP/ABAADwAAsAFkAZQBxAH0AiQCVAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIxEiJi8BBw4BIyImLwEHDgEjIiY1NDYzMhYfATc+ATMyFh8BNz4BMzIWFRQGIwUiBhUUFjMyNjU0JgUiBhUUFjMyNjU0JiUiBhUUFjMyNjU0JgMiBhUUFjMyNjU0JiEiBhUUFjMyNjU0JgMgCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMsazo6aywTJxUuUj0jIz1SLg8cDSQdI1YuLlYiHSQOHA9CXl5CBgsFJhclaz09ayUXJgULBkJeXkL9oBslJRsbJSUBJRslJRsbJSUBJRslJRsbJSWbGyUlGxslJf5lGyUlGxslJQNAAQE9RUU9AQEjPVIuLlI9IwcIJikpJggHIz1SLi5SPSP+gAUFDhkfICAfGQ4FBV5CQl4BAQUfMTc2Mh8FAQFeQkJegCUbGyUlGxslQCUbGyUlGxslQCUbGyUlGxsl/wAlGxslJRsbJSUbGyUlGxslAAADAAD/wAQAAu4APABtAI4AAAE0JiMqASMuASMiBgcqASMiBhUUFhcOARUuASMiDgIVFB4CMzI2Nx4BMzI2Nx4BMzI+AjU0Jic+ATUDIiYnDgEjIiYnDgEjIiY1NDYzMhYXPgE1PgE3PgEzMhYXPgE/ATIWFx4BFx4BFRQGEy4BIyIGBy4BIyIGBz4BMzIWFz4BMzIWFz4BMzIWFRQGBABpSQQHBCJkOTlkIgQHBElpAgEBAggQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9IxkWFhngGi4UI2Y7O2YjFC4aQl5eQhAfDgECCRUMIl42S3ggCRIJGRMiEBEcDBASXkEcQiUIEAgsh00zXygLOyYMFgoXVjU1VhcKFgwvQxAB4EpoKzExK2hKCA8HAQIBAQEjPVIuLlI9IwcIJikpJggHIz1SLidFHBg9I/5gEA0qMzMqDRBeQkJeBgYBAwIPHA0kKk4+AwUBAwkHCBgOFTEcQl4BVRQXAQE9RSAdIywEBCw4OCwEBEMvFiYAAAADAAD/wAQAA8AAQgB1AJYAAAE0JiMiBiMuASMiBgciJiMiBhUUFhcOARUuASMiDgIVFB4CMzI2Nx4BFwcXBzcnNz4BNx4BMzI+AjU0Jic+ATUDIiYnDgEPAS4BJw4BIyImNTQ2MzIWFz4BNz4BNz4BMzIWFz4BPwEyFhceARceARUUBiMTLgEjIgYHLgEjIgYHPgEzMhYXPgEzMhYXPgEzMhYVFAYEAGlJBAcEImQ5OWQiBAcESWkCAQECCBAILlI9IyM9Ui4VJxMcQCMuQEDAQAo3ZioTJxUuUj0jGRYWGeAaLhQcTy0wOmQiFC4aQl5eQhAfDgECAQgVDCJeNkt4IAkSCRkTIhARHAwQEl5CgxxCJQgQCCyHTTNfKAs7JgwWChdWNTVWFwoWDC9DEAKySmkBKzExKwFpSgcPCAECAQEBIz1RLy5SPCQIBxghCR9AgIBAEwIoJAcIJDxSLidFHBg+Iv5gEA4jLggEATIqDhBeQkNdBgYCAwEQHAwkKk4+BAQCAggICBcPFDIcQl4BVRQXAQE9RR8dIi0FBCw4OCwEBUMwFScAAwAA/8AEAAPAAAUAdgCXAAAlFwc3JzcBNCYjIgYjLgEjIgYHIiYjIgYVFBYXDgEVLgEjIg4CFRQeAjMyNjceARc3LgEnDgEjIiY1NDYzMhYXPgE1PgE3PgEzMhYXPgE/ATIWFx4BFx4BFRQGIyImJw4BDwEXPgE3HgEzMj4CNTQmJz4BNQcuASMiBgcuASMiBgc+ATMyFhc+ATMyFhc+ATMyFhUUBgGAQEDAQEABwGlJBAcEImQ5OWQiBAcESWkCAQECCBAILlI9IyM9Ui4VJxMCBAE5DhoLFC4aQl5eQhAfDgECCRUMIl42S3ggCRIJGRIjEBEcDBASXkIaLhQVNh8MJBovFhMnFS5SPSMZFhYZXRxCJQgQCCyHTTNfKAs7JgwWChdWNTVWFwoWDC9DEMBAwMBAgAFySmkBKzExKwFpSgcPCAECAQEBIz1RLy5SPCQIBwEDASYKFg4OEF5CQ10GBgIDARAcDCQqTj4EBAICCAgIFw8UMhxCXhAOGiUMGCUKHRIHCCQ8Ui4nRRwYPiJLFBcBAT1FHx0iLQUELDg4LAQFQzAVJwAAAAAJAGAAIAOgA2AAEwAhAC8APQBLAFkAZwB1AIMAAAEiDgIVFB4CMzI+AjU0LgInMjY9ATQmIyIGHQEUFhMiBh0BFBYzMjY9ATQmEzc2NCcmIg8BBhQXFjIBBwYUFxYyPwE2NCcmIic0JisBIgYVFBY7ATI2JSMiBhUUFjsBMjY1NCYlFjI3NjQvASYiBwYUFwEmIgcGFB8BFjI3NjQnAgAuUj0jIz1SLi5SPSMjPVIuDRMTDQ0TEw0NExMNDRMT7C0JCQkbCS0KCgka/hgtCgoJGwktCgoJGzATDUANExMNQA0TAqBADRMTDUANExP9egkbCQoKLQkbCQoKAh8KGgkKCi0JGwkKCgKgIz1SLi5SPSMjPVIuLlI9I0ATDUANExMNQA0T/cATDUANExMNQA0TAewtCRsJCgotCRsJCv5yLQkbCQoKLQkbCQrCDRMTDQ0TEy0TDQ0TEw0NE6wKCgkbCS0KCgkbCf47CgoJGgotCQkJGwkAAAAAAQFoASgC2QKZABYAAAEuATcOAQcOARQWFx4BMjY3PgE3BiYnAfAvGhUXKhMgISEgIVNWUiETGQg7fy8BsC9/OwgaEiFSVlMhICEhIBMqFxUaLwAABwAA/8AEAAPAAA0AGwApADcARQB5AIkAAAEyNj0BNCYjIgYdARQWBTc2NCcmIg8BBhQXFjIFMzI2NTQmKwEiBhUUFiUUFjsBMjY1NCYrASIGJRYyNzY0LwEmIgcGFBcBIgYHLgEnLgMjIg4CFRQWFw4DFRQeAjMyNjceATMyNjceATMyPgI1NC4CIyUiBgcuATU0NjMyFhcuASMBoA0TEw0NExMBBi0JCQkbCS0KCgkb/ZBADRMTDUANExMCrRMNQA0TEw1ADRP95wkbCQoKLQkbCQoKAqYIEAgZQSYBJD1QLi5SPSMMCy1OOiIjPVIuFScTLGs6OmssEycVLlI9IyM9Ui7+4EV7LQkKXkI8WAkPHhADQBMNQA0TEw1ADRNULQkbCQoKLQkbCQriEw0NExMNDRMgDRMTDQ0TE78KCgkbCS0KCgkbCf6nAQEiNBEtUDwiIz1SLhoxFgIkPFAtLlI9IwcIJikpJggHIz1SLi5SPSOAODIQJhRCXk05AgQAAgAA/8AEAANxAEEAVAAAAT4BNz4BNzYmJy4BBwYmJy4BNzYmJy4BBw4BBw4BFw4BBy4BIyIOAhUUHgIzMjY3HgEzMjY3HgEzMj4CNTQmAT4BNwYWFx4BNw4BBy4BJyY2NwNmBw8HEx4KAwQGBxIJNWsnKBgTAwQGBxIJHDATMyASQXEmCBAILlI9IyM9Ui4VJxMsazo6aywTJxUuUj0jV/6dBAgEAyYnKGY2FTceKXVCExYpAbQFCwcUMBwIEgcGBQQSGCcnbDUIEgcHBAMKHhQyhUEIQjUBASM9Ui4uUj0jBwgmKSkmCAcjPVIuSnMBawQHAzZmJygmAxohBzQ/BTNuKQABAAAAgAQAAwAALAAAASIGBy4BIyIGBy4BIyIOAhUUHgIzMjY3HgEzMjY3HgEzMj4CNTQuAiMDIAgQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9IyM9Ui4CgAEBPUVFPQEBIz1SLi5SPSMHCCYpKSYIByM9Ui4uUj0jAAABAAAAAAQAA8AAMQAAASIGBy4BIyIGBy4BIyIOAhUUHgIzMjY3HgEXBxcHNyc3PgE3HgEzMj4CNTQuAgMgCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMhTCpGQEDAQBY0XygTJxUuUj0jIz1SA0ABAT1FRT0BASM9Ui4uUj0jBwgcJgdGQMDAQEIEJiMIByM9Ui4uUj0jAAAAAAIAAAAABAADgAAsADgAAAEiBgcuASMiBgcuASMiDgIVFB4CMzI2Nx4BMzI2Nx4BMzI+AjU0LgIjARQWMzI2NTQmMTAGAyAIEAgsh01NhywIEAguUj0jIz1SLhUnEyxrOjprLBMnFS5SPSMjPVIu/qAlGxslQEADAAEBPUVFPQEBIz1SLi5SPSMHCCYpKSYIByM9Ui4uUj0j/UAbJSUbG2VlAAAABAAA/8AEAAPAACwAOABEAFAAAAEiBgcuASMiBgcuASMiDgIVFB4CMzI2Nx4BMzI2Nx4BMzI+AjU0LgIjARQWMzI2NTQmMTAGNxQWMzI2NTQmMTAGJRQWMzI2NTQmMTAGAyAIEAgsh01NhywIEAguUj0jIz1SLhUnEyxrOjprLBMnFS5SPSMjPVIu/qIlGxslQED+JRsbJUBA/gAlGxslQEADQAEBPUVFPQEBIz1SLi5SPSMHCCYpKSYIByM9Ui4uUj0j/MAbJSUbG2VlJRslJRsbZWVlGyUlGxtlZQAAAAAEAAAAvwQAAsEAIgAwAD4ATAAAAS4BIyIGBw4BFRQeAjMyNjceATMyNjceATMyPgI1NCYnASEiBhUUFjMhMjY1NCYlMzI2NTQmKwEiBhUUFjczMjY1NCYrASIGFRQWA0IkXzQ0YCRPbyA2SCoIEggfRyYlRx8JEQkpSTYfb0/93v8ADRMTDQEADRMT/vOADRMTDYANExNNgA0TEw2ADRMTAnQlKCglBHNQKkg2IAIBFBUVFAECIDZIKlBzBP6MEw0NExMNDRNAEw0NExMNDROAEw0NExMNDRMAAAAABgAAAAAEAAOAACEALwA9AEsAVwBjAAABLgEjIgYHDgEVFB4CMzI2Nx4BMzI2Nx4BMzI+AjU0JgEhIgYVFBYzITI2NTQmJTMyNjU0JisBIgYVFBY3MzI2NTQmKwEiBhUUFgEUFjMyNjU0JjEwBgUUFjMyNjU0JjEwBgNCJF80NGAkT28gNkgqCBIIH0cmJUcfCREJKUk2H2/9j/8ADRMTDQEADRMT/vOADRMTDYANExNNgA0TEw2ADRMTAW0lGxslQEABACUbGyVAQAMyJSkpJQN0UClJNh8BAhQWFhQCAR82SSlQdP6QEw0OEhIODRNAEg4NExMNDhKAEg4NExMNDhL+QRslJRsbZWWbGyUlGxtlZQAAAwAA/8AEAAPAAEcAUwCAAAAlJz4BNTQmJzc+AScuAQ8BLgEnNTQmIyIGHQEOAQcnJgYHBhYfAQ4BFRQWFwcOARceAT8BHgEXFRQWMzI2PQE+ATcXFjY3NiYnIiY1NDYzMhYVFAYBIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIwKMJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBweZDxQUDw8UFAERCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMsazo6aywTJxUuUj0jIz1SLkkUBQoFBQkFFQccDQ0HBxUGCgMqDxQUDyoDCgYVBwcNDRwHFQUJBQUKBRQIHA0MCAcVBgoDKg4VFQ4qAwoGFQcIDA0cDBUPDhUVDg8VAvMBAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIuLlI9IwAAAAAHAAD/wAQAA8AASABUAJ0AqQDxAP0BKgAAJSc+ATU0Jic3PgEnLgEPAS4BJzU0JiMiBh0BDgEHJyYGBwYWHwEOARUUFhcHDgEXHgE/AR4BFxUUFjMyNj0BPgE3FxY2NzYmJyciJjU0NjMyFhUUBiUnNCYnNzY0JyYiDwEuASMnLgEHDgEfAQ4BBw4BBycmBgcGFh8BHgEXBwYUFxYyPwEeAR8BHgE3PgEvAT4BNz4BNxcWNjc2JicHBiInJjQ3NjIXFhQlBy4BJy4BJzc2JicmBg8BIgYHJyYiBwYUHwEOARUHDgEXHgE/AR4BFx4BFwcGFhcWNj8BPgE3FxY2NzY0LwE+AT8BPgEnLgEHBiInJjQ3NjIXFhQBNC4CIyIGBy4BIyIGBy4BIyIOAhUUHgIzMjY3HgEzMjY3HgEzMj4CNQKMJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNJAEBAQEkDQcHBx0MJQcQChQPDxQKEAclDB0HBwcNjA8UFA8PFBQBpRgDAxIGBgYSBhEGCwUHAg8ICQgCBgIFAgIDAhgIDwMCCQgYAQMCEgYHBhEGEgULBgYCDwkICQIHAwQCAgQCFwkPAgIICUcHEQYGBgYRBwb9exgCAwICBQIGAwkICQ8CBwULBhEGEgYGBhIDAxgJCAICDwkXAgQCAgQDBwIJCAkPAgYGCwUSBhEHBgYSAgMBGAgJAgMPRQYRBwYGBxEGBgNJIz1SLggQCCyHTU2HLAgQCC5SPSMjPVIuFScTLGs6OmssEycVLlI9I0kUBQoFBQkFFQccDQ0HBxUGCgMqDxQUDyoDCgYVBwcNDRwHFQUJBQUKBRQIHA0MCAcVBgoDKg4VFQ4qAwoGFQcIDA0cCAQVDw4VFQ4PFVoHBgsFEQcRBgYGEQIDGAkJAwIPCBgCAwMCBAIGAgkICA8DBgYLBRIGEQYGBhECAwEYCAkCAw8IGAIDAgIFAgYCCAkIDwINBgYGEgYGBgYScwYCBAIDAwIYCA8CAwkIGQMCEQYGBhEHEQULBgYDDwgJCAIGAgUCAgMCGAgPAgMJCBgBAwIRBwEGBhEGEgULBgYDDwgICTsGBgYSBgYGBhIBgC5SPSMBAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIuAAAABgAA/8AEAAPAACwAOABEAFAAXABoAAABIgYHLgEjIgYHLgEjIg4CFRQeAjMyNjceATMyNjceATMyPgI1NC4CIwEiBhUUFjMyNjU0JgUiBhUUFjMyNjU0JiUiBhUUFjMyNjU0JgMiBhUUFjMyNjU0JiEiBhUUFjMyNjU0JgMgCBAILIdNTYcsCBAILlI9IyM9Ui4VJxMsazo6aywTJxUuUj0jIz1SLv2gGyUlGxslJQElGyUlGxslJQElGyUlGxslJZsbJSUbGyUl/mUbJSUbGyUlA0ABAT1FRT0BASM9Ui4uUj0jBwgmKSkmCAcjPVIuLlI9I/4AJRsbJSUbGyVAJRsbJSUbGyVAJRsbJSUbGyX/ACUbGyUlGxslJRsbJSUbGyUAAAEAAAApBAADVwA8AAABHgEVFA4CIyImJw4BIyImJw4BIyIuAjU0PgIzMhYXNDY3LgE1NDYzOgEzPgEzMhYXOgEzMhYVFAYHA9EWGSM9Ui4VJxMsazo6aywTJxUuUj0jIz1SLggQCAIBAQJpSQQHBCJkOTlkIgQHBElpGRYB0RxFJy5SPSMIByYpKSYHCCM9Ui4uUj0jAQEBAgEHDwhKaCsxMStoSiM9GAAAAAABAAD/wAQAA8AAQgAAATQmIyIGIy4BIyIGByImIyIGFRQWFw4BFS4BIyIOAhUUHgIzMjY3HgEXBxcHNyc3PgE3HgEzMj4CNTQmJz4BNQQAaUkEBwQiZDk5ZCIEBwRJaQIBAQIIEAguUj0jIz1SLhUnExxAIy5AQMBACjdmKhMnFS5SPSMZFhYZArJKaQErMTErAWlKBw8IAQIBAQEjPVEvLlI8JAgHGCEJH0CAgEATAigkBwgkPFIuJ0UcGD4iAAABAYAAAAKAA4AAEwAAJRE0JiMiBhURDgEVFBYzMjY1NCYCQCYaGyUdI0s1NUsj7gJMHSkpHf20EDsjNUtLNSM7AAAAAAMAAP/ABAADwAATACcAKwAAASIOAhUUHgIzMj4CNTQuAgMiLgI1ND4CMzIeAhUUDgItARMFAgBqu4tQUIu7amq7i1BQi7tqT4xpPDxpjE9PjGk8PGmM/vEBAID/AAPAUIu7amq7i1BQi7tqaruLUPyAPGmMT0+MaTw8aYxPT4xpPMCAAQCAAAAEAGgA/AOYAoQADgASABsAIgAAASMvASMRMzUzHwEzESMVFzMTIxcjAzM3MxczAwc/ATMfASMBPgJDUj9GAzpZQEZfNIE0/0d8Sxd7FUx7Tg4bAhwOVQGTZnn+n95ZhQFh35cBiBL+n0lJAWHdLlxdLQAAAAMBHAELAuQCdQAvAEcAlAAAAS4BJy4BIyIGBw4BBw4BBw4BFRQWFx4BFx4BFx4BMzI2Nz4BNz4BNz4BNTQmJy4BBw4BIyImJy4BNTQ2Nz4BMzIWFx4BFRQGBQ4BIyImJy4BJy4BJy4BPQE0Njc+ATc+ATc+ATMyFhceARc3LgEnLgEjIgYHDgEHDgEHDgEdARQWFx4BFx4BFx4BMzI2Nz4BNycOAQcBogUNBwcPCAkPBwcNBQYIAwMDAwMDCAYFDQcHDwgJDwcHDQUGCAMDAwMDAwgkBgwHCAwGBQUFBQYMBwgMBgUFBQEVCRIJBgsGBgoFBQcDAwMDAwMHBQQLBgYLBgkTCQoRCSEKGA8OHRAMGQwMFQoJDwYGBQYGBRAJChUMDBkMEB4ODhgJIQkSCQJfBQgDAwMDAwMIBQUMBwcOCAgOBwcMBQUIAwMDAwMDCAUFDAcHDggIDgcHDEgFBQUFBQwHBwwFBQUFBQUMBwcMxwIDAgICBQQECgYGDwhnCQ8GBgoEBAUCAQICAwMKBjYJDQQEBAMEBAoIBxELCxgPhA4ZCwoSBwcKBAQDBAUFDAk2BwoDAAAAAwEaAQ0C5gJzADAASABTAAABLgEnLgEjIgYHDgEHDgEHDgEVFBYXHgEXHgEXHgEzMjY3PgE3PgE3PgE1NCYnLgEnBw4BIyImJy4BNTQ2Nz4BMzIWFx4BFRQGJTUjETM1MzUjNTMBoQUNBwcQCAgPCAcMBgUIBAMDAwMECAUGDAcIDwgIEAcHDQUFCQMDAwMDAwkFHwUMCAcNBQUFBQUFDQcIDAUFBgYBX/RHlJStAl0GCAMCAwMCAwgGBQwHBw4IBw8HBwwFBQgDAwMDAwMIBQUMBwcPBwgOBwcMBU0FBQUFBQwHBw0EBQUFBAUNBwcMGT/+oI8/UwABAAAAAQAAeUM4tV8PPPUACwQAAAAAANUzi2kAAAAA1TOLaQAA/8AEAAPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAAzBAAAAAAAAAAAAAAAAgAAAAQAANoEAABgBAABUgQAAH4EAAA+BAAAfgQAAOsEAAAABAAAAAQAAGAEAABgBAAAAAQAAMAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAGAEAAFoBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAYAEAAAABAAAaAQAARwEAAEaAAAAAAAKABQAHgCgAWwBxAJmAvIDUAPOBNIFlgZaBuIHaAe6CCwIqgkqCawKSgrmC6AMiA16D1wQKhDwEcQSmhNWE4AUQBTCFQQVUBWiFhIWgBcKF8IZdBoGGlwavBreGyIbXBw4HLQAAQAAADMBTwAKAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAkAAAABAAAAAAACAAcAcgABAAAAAAADAAkAPAABAAAAAAAEAAkAhwABAAAAAAAFAAsAGwABAAAAAAAGAAkAVwABAAAAAAAKABoAogADAAEECQABABIACQADAAEECQACAA4AeQADAAEECQADABIARQADAAEECQAEABIAkAADAAEECQAFABYAJgADAAEECQAGABIAYAADAAEECQAKADQAvG1ldGVvY29ucwBtAGUAdABlAG8AYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMG1ldGVvY29ucwBtAGUAdABlAG8AYwBvAG4Ac21ldGVvY29ucwBtAGUAdABlAG8AYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcm1ldGVvY29ucwBtAGUAdABlAG8AYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('woff'), + url('fonts/meteocons.svg?df08c6#meteocons') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="me-"], [class*=" me-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'meteocons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.me-sunrise:before { + content: "\e900"; +} +.me-sun:before { + content: "\e901"; +} +.me-moon:before { + content: "\e902"; +} +.me-sun2:before { + content: "\e903"; +} +.me-windy:before { + content: "\e904"; +} +.me-wind:before { + content: "\e905"; +} +.me-snowflake:before { + content: "\e906"; +} +.me-cloudy:before { + content: "\e907"; +} +.me-cloud:before { + content: "\e908"; +} +.me-weather:before { + content: "\e909"; +} +.me-weather2:before { + content: "\e90a"; +} +.me-weather3:before { + content: "\e90b"; +} +.me-lines:before { + content: "\e90c"; +} +.me-cloud2:before { + content: "\e90d"; +} +.me-lightning:before { + content: "\e90e"; +} +.me-lightning2:before { + content: "\e90f"; +} +.me-rainy:before { + content: "\e910"; +} +.me-rainy2:before { + content: "\e911"; +} +.me-windy2:before { + content: "\e912"; +} +.me-windy3:before { + content: "\e913"; +} +.me-snowy:before { + content: "\e914"; +} +.me-snowy2:before { + content: "\e915"; +} +.me-snowy3:before { + content: "\e916"; +} +.me-weather4:before { + content: "\e917"; +} +.me-cloudy2:before { + content: "\e918"; +} +.me-cloud3:before { + content: "\e919"; +} +.me-lightning3:before { + content: "\e91a"; +} +.me-sun3:before { + content: "\e91b"; +} +.me-moon2:before { + content: "\e91c"; +} +.me-cloudy3:before { + content: "\e91d"; +} +.me-cloud4:before { + content: "\e91e"; +} +.me-cloud5:before { + content: "\e91f"; +} +.me-lightning4:before { + content: "\e920"; +} +.me-rainy3:before { + content: "\e921"; +} +.me-rainy4:before { + content: "\e922"; +} +.me-windy4:before { + content: "\e923"; +} +.me-windy5:before { + content: "\e924"; +} +.me-snowy4:before { + content: "\e925"; +} +.me-snowy5:before { + content: "\e926"; +} +.me-weather5:before { + content: "\e927"; +} +.me-cloudy4:before { + content: "\e928"; +} +.me-lightning5:before { + content: "\e929"; +} +.me-thermometer:before { + content: "\e92a"; +} +.me-compass:before { + content: "\e92b"; +} +.me-none:before { + content: "\e92c"; +} +.me-Celsius:before { + content: "\e92d"; +} +.me-Fahrenheit:before { + content: "\e92e"; +} \ No newline at end of file diff --git a/src/assets/fonts/meteocons/style.min.css b/src/assets/fonts/meteocons/style.min.css new file mode 100644 index 0000000..6331fd1 --- /dev/null +++ b/src/assets/fonts/meteocons/style.min.css @@ -0,0 +1 @@ +@font-face{font-family:meteocons;src:url(fonts/meteocons.eot?df08c6);src:url(fonts/meteocons.eot?df08c6#iefix) format('embedded-opentype'),url(fonts/meteocons.ttf?df08c6) format('truetype'),url(data:font/x-font-woff;charset=utf-8;base64,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) format('woff'),url(fonts/meteocons.svg?df08c6#meteocons) format('svg');font-weight:400;font-style:normal}[class*=" me-"],[class^=me-]{font-family:meteocons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.me-sunrise:before{content:"\e900"}.me-sun:before{content:"\e901"}.me-moon:before{content:"\e902"}.me-sun2:before{content:"\e903"}.me-windy:before{content:"\e904"}.me-wind:before{content:"\e905"}.me-snowflake:before{content:"\e906"}.me-cloudy:before{content:"\e907"}.me-cloud:before{content:"\e908"}.me-weather:before{content:"\e909"}.me-weather2:before{content:"\e90a"}.me-weather3:before{content:"\e90b"}.me-lines:before{content:"\e90c"}.me-cloud2:before{content:"\e90d"}.me-lightning:before{content:"\e90e"}.me-lightning2:before{content:"\e90f"}.me-rainy:before{content:"\e910"}.me-rainy2:before{content:"\e911"}.me-windy2:before{content:"\e912"}.me-windy3:before{content:"\e913"}.me-snowy:before{content:"\e914"}.me-snowy2:before{content:"\e915"}.me-snowy3:before{content:"\e916"}.me-weather4:before{content:"\e917"}.me-cloudy2:before{content:"\e918"}.me-cloud3:before{content:"\e919"}.me-lightning3:before{content:"\e91a"}.me-sun3:before{content:"\e91b"}.me-moon2:before{content:"\e91c"}.me-cloudy3:before{content:"\e91d"}.me-cloud4:before{content:"\e91e"}.me-cloud5:before{content:"\e91f"}.me-lightning4:before{content:"\e920"}.me-rainy3:before{content:"\e921"}.me-rainy4:before{content:"\e922"}.me-windy4:before{content:"\e923"}.me-windy5:before{content:"\e924"}.me-snowy4:before{content:"\e925"}.me-snowy5:before{content:"\e926"}.me-weather5:before{content:"\e927"}.me-cloudy4:before{content:"\e928"}.me-lightning5:before{content:"\e929"}.me-thermometer:before{content:"\e92a"}.me-compass:before{content:"\e92b"}.me-none:before{content:"\e92c"}.me-Celsius:before{content:"\e92d"}.me-Fahrenheit:before{content:"\e92e"} \ No newline at end of file diff --git a/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.dev.svg b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.dev.svg new file mode 100644 index 0000000..d8a4b3a --- /dev/null +++ b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.dev.svg @@ -0,0 +1,1369 @@ + + + + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.eot b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.eot new file mode 100644 index 0000000..d258f62 Binary files /dev/null and b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.eot differ diff --git a/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.svg b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.svg new file mode 100644 index 0000000..6c9f7c5 --- /dev/null +++ b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.svg @@ -0,0 +1,1369 @@ + + + + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.ttf b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.ttf new file mode 100644 index 0000000..2194f1f Binary files /dev/null and b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.ttf differ diff --git a/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.woff b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.woff new file mode 100644 index 0000000..50df1e4 Binary files /dev/null and b/src/assets/fonts/simple-line-icons/fonts/Simple-Line-Icons.woff differ diff --git a/src/assets/fonts/simple-line-icons/style-origin.css b/src/assets/fonts/simple-line-icons/style-origin.css new file mode 100644 index 0000000..14706dd --- /dev/null +++ b/src/assets/fonts/simple-line-icons/style-origin.css @@ -0,0 +1,526 @@ +@font-face { + font-family: 'Simple-Line-Icons'; + src:url('fonts/Simple-Line-Icons.eot'); + src:url('fonts/Simple-Line-Icons.eot?#iefix') format('embedded-opentype'), + url('fonts/Simple-Line-Icons.woff') format('woff'), + url('fonts/Simple-Line-Icons.ttf') format('truetype'), + url('fonts/Simple-Line-Icons.svg#Simple-Line-Icons') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'Simple-Line-Icons' !important; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="icon-"] { +*/ +.icon-user-female, .icon-user-follow, .icon-user-following, .icon-user-unfollow, .icon-trophy, .icon-screen-smartphone, .icon-screen-desktop, .icon-plane, .icon-notebook, .icon-moustache, .icon-mouse, .icon-magnet, .icon-energy, .icon-emoticon-smile, .icon-disc, .icon-cursor-move, .icon-crop, .icon-credit-card, .icon-chemistry, .icon-user, .icon-speedometer, .icon-social-youtube, .icon-social-twitter, .icon-social-tumblr, .icon-social-facebook, .icon-social-dropbox, .icon-social-dribbble, .icon-shield, .icon-screen-tablet, .icon-magic-wand, .icon-hourglass, .icon-graduation, .icon-ghost, .icon-game-controller, .icon-fire, .icon-eyeglasses, .icon-envelope-open, .icon-envelope-letter, .icon-bell, .icon-badge, .icon-anchor, .icon-wallet, .icon-vector, .icon-speech, .icon-puzzle, .icon-printer, .icon-present, .icon-playlist, .icon-pin, .icon-picture, .icon-map, .icon-layers, .icon-handbag, .icon-globe-alt, .icon-globe, .icon-frame, .icon-folder-alt, .icon-film, .icon-feed, .icon-earphones-alt, .icon-earphones, .icon-drop, .icon-drawer, .icon-docs, .icon-directions, .icon-direction, .icon-diamond, .icon-cup, .icon-compass, .icon-call-out, .icon-call-in, .icon-call-end, .icon-calculator, .icon-bubbles, .icon-briefcase, .icon-book-open, .icon-basket-loaded, .icon-basket, .icon-bag, .icon-action-undo, .icon-action-redo, .icon-wrench, .icon-umbrella, .icon-trash, .icon-tag, .icon-support, .icon-size-fullscreen, .icon-size-actual, .icon-shuffle, .icon-share-alt, .icon-share, .icon-rocket, .icon-question, .icon-pie-chart, .icon-pencil, .icon-note, .icon-music-tone-alt, .icon-music-tone, .icon-microphone, .icon-loop, .icon-logout, .icon-login, .icon-list, .icon-like, .icon-home, .icon-grid, .icon-graph, .icon-equalizer, .icon-dislike, .icon-cursor, .icon-control-start, .icon-control-rewind, .icon-control-play, .icon-control-pause, .icon-control-forward, .icon-control-end, .icon-calendar, .icon-bulb, .icon-bar-chart, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-ban, .icon-bubble, .icon-camcorder, .icon-camera, .icon-check, .icon-clock, .icon-close, .icon-cloud-download, .icon-cloud-upload, .icon-doc, .icon-envelope, .icon-eye, .icon-flag, .icon-folder, .icon-heart, .icon-info, .icon-key, .icon-link, .icon-lock, .icon-lock-open, .icon-magnifier, .icon-magnifier-add, .icon-magnifier-remove, .icon-paper-clip, .icon-paper-plane, .icon-plus, .icon-pointer, .icon-power, .icon-refresh, .icon-reload, .icon-settings, .icon-star, .icon-symbol-female, .icon-symbol-male, .icon-target, .icon-volume-1, .icon-volume-2, .icon-volume-off, .icon-users { + font-family: 'Simple-Line-Icons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-moustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-emoticon-smile:before { + content: "\e021"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-user:before { + content: "\e005"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglasses:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-map:before { + content: "\e033"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-login:before { + content: "\e066"; +} +.icon-list:before { + content: "\e067"; +} +.icon-like:before { + content: "\e068"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-bar-chart:before { + content: "\e077"; +} +.icon-arrow-up:before { + content: "\e078"; +} +.icon-arrow-right:before { + content: "\e079"; +} +.icon-arrow-left:before { + content: "\e07a"; +} +.icon-arrow-down:before { + content: "\e07b"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camcorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-close:before { + content: "\e082"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-info:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-pointer:before { + content: "\e096"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-users:before { + content: "\e001"; +} \ No newline at end of file diff --git a/src/assets/fonts/simple-line-icons/style.css b/src/assets/fonts/simple-line-icons/style.css new file mode 100644 index 0000000..650e8b0 --- /dev/null +++ b/src/assets/fonts/simple-line-icons/style.css @@ -0,0 +1,526 @@ +@font-face { + font-family: 'Simple-Line-Icons'; + src:url('fonts/Simple-Line-Icons.eot'); + src:url('fonts/Simple-Line-Icons.eot?#iefix') format('embedded-opentype'), + url(data:font/x-font-woff;charset=utf-8;base64,d09GRk9UVE8AAOe8AAsAAAABu6AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAA4yUAAbPOH4xiK0ZGVE0AAOQwAAAAGgAAABxmk/qIR0RFRgAA5EwAAAAeAAAAIADRAARPUy8yAADkbAAAAEsAAABgL93cQWNtYXAAAOS4AAABMgAAApb6NPANaGVhZAAA5ewAAAAwAAAANv4pzBNoaGVhAADmHAAAACAAAAAkBBH/42htdHgAAOY8AAAAfgAAAU4HvwSibWF4cAAA5rwAAAAGAAAABgCkUABuYW1lAADmxAAAAOwAAAIKic1IyHBvc3QAAOewAAAADAAAACAAAwAAeJy8vXl8VdX1h73PnRNCSIBgmBIEBBQRQhhFBcQJQXGqUqVKrVpEixSppUqdENFGpBQVFStatWpFpRURlUKkiIiIEVBAQEDmKSFApjvtdz1r3wSosbW/z/u++ePk3nPPOXtaew3fNRzPBALG87zGV976q7G339xl6K1jbu4y+Bd3jLnTeD7jmYuqF/mqF/urcwNFGf6ijEBeuml+ZWNbVFT3ISP86K3VT1XfFWxtTOiyRnI0JkuO4ZnZfM5obbxXRzQ2r/C0iGlkmpnWpr3pbLqbvmaAudBcan5iRphfmNHm12aCuc88bKaaJ8ws8xfzuplr3jOLzMdmpVljvjHbzB5TZipNwgt4DbzGXnOvjdfRO8Pr6Z3lDfIu9i73hns3eLd4v/LGe/d4D3qPen/0ZnrPe694c7x3vA+8j7zl3hfe195mb4e33zvs1fiML+zL9OX4Wvna+U7zFfj6+Pr7LvBd4rvKd53vRt+tvrG+3/ru9U32Peab4XvW96LvNd/bvvm+f/qW+j7zrfZt8G317faV+ip8cb/fn+7P9uf68/0d/F38Pfz9/Of6B/sv81/jv95/s/92/53+u/0P+B/xT/M/5f+z/2X/G/5/+N/3F/s/8a/yf+Xf5N/u3+cv91f7bSAUaBhoGmgZaBs4NdAt0DtwTuD8wNDAlYFrAz8PjArcEbgrMCXw9G/G3HpBt27d5N/5df+6u3+F7l8P96+X/itwlxQUuH/uygJ3ZYG7sqCn++du6O5u6O5u6O5u6O5u6O5u6O5u6O5u6Oa+devt/vVx//q6fwPdv3Pdv0Hu33nu3/nu3wWudXd7gbu9wN1e4G4vcLcXuNsL3O0F7vYCd3t3d3t3d3t3d3t3d3t3d3t3d3t3d3t3d3t3d3uhG3ShG3ShG3ShG3ShG3ShG2ahG3Sha6/QtVfo2it07RW69gpde4WuvULXXqFrr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rb6Brb6Brr1vB90TE92WGMd4U7xHhvH/wirzHvKne49404cLTvT95M7wnvCe9p4QjP+094z3rzfKe8/4s3Hm294L3ovcX7yXvZeHUf/Ve9V7zXvf+5r0hXPtN7y3vbW+u93fvH8LB53nvevO997wF3vvCzT/0Fnr/9BZ5i71i4exLvH95S72PvWXeJ8LlP/VWeJ95K73PvVXC8Uu8L73V3hpvrfeVcP913npvg/eNt9HbJJLgW2+Lt9Xb5n3nbRepsNPb5e329nh7vX0iIQ54B71Sr8w75JWLtDjiHfUqvEqvyqv2aryoF/PiXsJLelakiOfz+fy+gC/oC4lEifjSfOm+Br4MX0ORLo18Wb5sX2NfE19TkTTNfCf5cn3NfS18LUXqtPbl+fJ9bXwn+9qKBGrvO8XXwdfR18l3qnnZL1NpjE8EqPF/aUKTTNrVJuNG0+gZk7XHZJeY3Dmm5U3m5PNN28dM+1tMhymm0yemczfTbbLpPtQUtjM9N5s++eacHDPgoLmgkRk8zgzNN5c1Mld1N8P7mp9ONCM2mBt6mp/vMjdfZ26tMmOyzbjHzW9ONRPuMXd/Ze7NMg8+ax56zky5wDzynnnsE/P4w+aPH5k/vWae6mRmJswzfcxzU8zsC82Lc82ra8zrs8zfrjVvNDZz9pi5y8w7pebdoJn/oXlvknn/HfPBYbOw2izaZ4q7m4++Mf+a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) format('woff'), + url('fonts/Simple-Line-Icons.ttf') format('truetype'), + url('fonts/Simple-Line-Icons.svg#Simple-Line-Icons') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'Simple-Line-Icons' !important; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="icon-"] { +*/ +.icon-user-female, .icon-user-follow, .icon-user-following, .icon-user-unfollow, .icon-trophy, .icon-screen-smartphone, .icon-screen-desktop, .icon-plane, .icon-notebook, .icon-moustache, .icon-mouse, .icon-magnet, .icon-energy, .icon-emoticon-smile, .icon-disc, .icon-cursor-move, .icon-crop, .icon-credit-card, .icon-chemistry, .icon-user, .icon-speedometer, .icon-social-youtube, .icon-social-twitter, .icon-social-tumblr, .icon-social-facebook, .icon-social-dropbox, .icon-social-dribbble, .icon-shield, .icon-screen-tablet, .icon-magic-wand, .icon-hourglass, .icon-graduation, .icon-ghost, .icon-game-controller, .icon-fire, .icon-eyeglasses, .icon-envelope-open, .icon-envelope-letter, .icon-bell, .icon-badge, .icon-anchor, .icon-wallet, .icon-vector, .icon-speech, .icon-puzzle, .icon-printer, .icon-present, .icon-playlist, .icon-pin, .icon-picture, .icon-map, .icon-layers, .icon-handbag, .icon-globe-alt, .icon-globe, .icon-frame, .icon-folder-alt, .icon-film, .icon-feed, .icon-earphones-alt, .icon-earphones, .icon-drop, .icon-drawer, .icon-docs, .icon-directions, .icon-direction, .icon-diamond, .icon-cup, .icon-compass, .icon-call-out, .icon-call-in, .icon-call-end, .icon-calculator, .icon-bubbles, .icon-briefcase, .icon-book-open, .icon-basket-loaded, .icon-basket, .icon-bag, .icon-action-undo, .icon-action-redo, .icon-wrench, .icon-umbrella, .icon-trash, .icon-tag, .icon-support, .icon-size-fullscreen, .icon-size-actual, .icon-shuffle, .icon-share-alt, .icon-share, .icon-rocket, .icon-question, .icon-pie-chart, .icon-pencil, .icon-note, .icon-music-tone-alt, .icon-music-tone, .icon-microphone, .icon-loop, .icon-logout, .icon-login, .icon-list, .icon-like, .icon-home, .icon-grid, .icon-graph, .icon-equalizer, .icon-dislike, .icon-cursor, .icon-control-start, .icon-control-rewind, .icon-control-play, .icon-control-pause, .icon-control-forward, .icon-control-end, .icon-calendar, .icon-bulb, .icon-bar-chart, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-ban, .icon-bubble, .icon-camcorder, .icon-camera, .icon-check, .icon-clock, .icon-close, .icon-cloud-download, .icon-cloud-upload, .icon-doc, .icon-envelope, .icon-eye, .icon-flag, .icon-folder, .icon-heart, .icon-info, .icon-key, .icon-link, .icon-lock, .icon-lock-open, .icon-magnifier, .icon-magnifier-add, .icon-magnifier-remove, .icon-paper-clip, .icon-paper-plane, .icon-plus, .icon-pointer, .icon-power, .icon-refresh, .icon-reload, .icon-settings, .icon-star, .icon-symbol-female, .icon-symbol-male, .icon-target, .icon-volume-1, .icon-volume-2, .icon-volume-off, .icon-users { + font-family: 'Simple-Line-Icons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-moustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-emoticon-smile:before { + content: "\e021"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-user:before { + content: "\e005"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglasses:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-map:before { + content: "\e033"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-login:before { + content: "\e066"; +} +.icon-list:before { + content: "\e067"; +} +.icon-like:before { + content: "\e068"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-bar-chart:before { + content: "\e077"; +} +.icon-arrow-up:before { + content: "\e078"; +} +.icon-arrow-right:before { + content: "\e079"; +} +.icon-arrow-left:before { + content: "\e07a"; +} +.icon-arrow-down:before { + content: "\e07b"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camcorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-close:before { + content: "\e082"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-info:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-pointer:before { + content: "\e096"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-users:before { + content: "\e001"; +} \ No newline at end of file diff --git a/src/assets/fonts/simple-line-icons/style.min.css b/src/assets/fonts/simple-line-icons/style.min.css new file mode 100644 index 0000000..49ea5bf --- /dev/null +++ b/src/assets/fonts/simple-line-icons/style.min.css @@ -0,0 +1 @@ +@font-face{font-family:Simple-Line-Icons;src:url(fonts/Simple-Line-Icons.eot);src:url(fonts/Simple-Line-Icons.eot?#iefix) format('embedded-opentype'),url(data:font/x-font-woff;charset=utf-8;base64,d09GRk9UVE8AAOe8AAsAAAABu6AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAA4yUAAbPOH4xiK0ZGVE0AAOQwAAAAGgAAABxmk/qIR0RFRgAA5EwAAAAeAAAAIADRAARPUy8yAADkbAAAAEsAAABgL93cQWNtYXAAAOS4AAABMgAAApb6NPANaGVhZAAA5ewAAAAwAAAANv4pzBNoaGVhAADmHAAAACAAAAAkBBH/42htdHgAAOY8AAAAfgAAAU4HvwSibWF4cAAA5rwAAAAGAAAABgCkUABuYW1lAADmxAAAAOwAAAIKic1IyHBvc3QAAOewAAAADAAAACAAAwAAeJy8vXl8VdX1h73PnRNCSIBgmBIEBBQRQhhFBcQJQXGqUqVKrVpEixSppUqdENFGpBQVFStatWpFpRURlUKkiIiIEVBAQEDmKSFApjvtdz1r3wSosbW/z/u++ePk3nPPOXtaew3fNRzPBALG87zGV976q7G339xl6K1jbu4y+Bd3jLnTeD7jmYuqF/mqF/urcwNFGf6ijEBeuml+ZWNbVFT3ISP86K3VT1XfFWxtTOiyRnI0JkuO4ZnZfM5obbxXRzQ2r/C0iGlkmpnWpr3pbLqbvmaAudBcan5iRphfmNHm12aCuc88bKaaJ8ws8xfzuplr3jOLzMdmpVljvjHbzB5TZipNwgt4DbzGXnOvjdfRO8Pr6Z3lDfIu9i73hns3eLd4v/LGe/d4D3qPen/0ZnrPe694c7x3vA+8j7zl3hfe195mb4e33zvs1fiML+zL9OX4Wvna+U7zFfj6+Pr7LvBd4rvKd53vRt+tvrG+3/ru9U32Peab4XvW96LvNd/bvvm+f/qW+j7zrfZt8G317faV+ip8cb/fn+7P9uf68/0d/F38Pfz9/Of6B/sv81/jv95/s/92/53+u/0P+B/xT/M/5f+z/2X/G/5/+N/3F/s/8a/yf+Xf5N/u3+cv91f7bSAUaBhoGmgZaBs4NdAt0DtwTuD8wNDAlYFrAz8PjArcEbgrMCXw9G/G3HpBt27d5N/5df+6u3+F7l8P96+X/itwlxQUuH/uygJ3ZYG7sqCn++du6O5u6O5u6O5u6O5u6O5u6O5u6O5u6Oa+devt/vVx//q6fwPdv3Pdv0Hu33nu3/nu3wWudXd7gbu9wN1e4G4vcLcXuNsL3O0F7vYCd3t3d3t3d3t3d3t3d3t3d3t3d3t3d3t3d3t3d3uhG3ShG3ShG3ShG3ShG3ShG2ahG3Sha6/QtVfo2it07RW69gpde4WuvULXXqFrr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr4drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr6drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr5drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr7drr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr49rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rr69rb6Brb6Brr1vB90TE92WGMd4U7xHhvH/wirzHvKne49404cLTvT95M7wnvCe9p4QjP+094z3rzfKe8/4s3Hm294L3ovcX7yXvZeHUf/Ve9V7zXvf+5r0hXPtN7y3vbW+u93fvH8LB53nvevO997wF3vvCzT/0Fnr/9BZ5i71i4exLvH95S72PvWXeJ8LlP/VWeJ95K73PvVXC8Uu8L73V3hpvrfeVcP913npvg/eNt9HbJJLgW2+Lt9Xb5n3nbRepsNPb5e329nh7vX0iIQ54B71Sr8w75JWLtDjiHfUqvEqvyqv2aryoF/PiXsJLelakiOfz+fy+gC/oC4lEifjSfOm+Br4MX0ORLo18Wb5sX2NfE19TkTTNfCf5cn3NfS18LUXqtPbl+fJ9bXwn+9qKBGrvO8XXwdfR18l3qnnZL1NpjE8EqPF/aUKTTNrVJuNG0+gZk7XHZJeY3Dmm5U3m5PNN28dM+1tMhymm0yemczfTbbLpPtQUtjM9N5s++eacHDPgoLmgkRk8zgzNN5c1Mld1N8P7mp9ONCM2mBt6mp/vMjdfZ26tMmOyzbjHzW9ONRPuMXd/Ze7NMg8+ax56zky5wDzynnnsE/P4w+aPH5k/vWae6mRmJswzfcxzU8zsC82Lc82ra8zrs8zfrjVvNDZz9pi5y8w7pebdoJn/oXlvknn/HfPBYbOw2izaZ4q7m4++Mf+a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) format('woff'),url(fonts/Simple-Line-Icons.ttf) format('truetype'),url(fonts/Simple-Line-Icons.svg#Simple-Line-Icons) format('svg');font-weight:400;font-style:normal}[data-icon]:before{font-family:Simple-Line-Icons!important;content:attr(data-icon);speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-action-redo,.icon-action-undo,.icon-anchor,.icon-arrow-down,.icon-arrow-left,.icon-arrow-right,.icon-arrow-up,.icon-badge,.icon-bag,.icon-ban,.icon-bar-chart,.icon-basket,.icon-basket-loaded,.icon-bell,.icon-book-open,.icon-briefcase,.icon-bubble,.icon-bubbles,.icon-bulb,.icon-calculator,.icon-calendar,.icon-call-end,.icon-call-in,.icon-call-out,.icon-camcorder,.icon-camera,.icon-check,.icon-chemistry,.icon-clock,.icon-close,.icon-cloud-download,.icon-cloud-upload,.icon-compass,.icon-control-end,.icon-control-forward,.icon-control-pause,.icon-control-play,.icon-control-rewind,.icon-control-start,.icon-credit-card,.icon-crop,.icon-cup,.icon-cursor,.icon-cursor-move,.icon-diamond,.icon-direction,.icon-directions,.icon-disc,.icon-dislike,.icon-doc,.icon-docs,.icon-drawer,.icon-drop,.icon-earphones,.icon-earphones-alt,.icon-emoticon-smile,.icon-energy,.icon-envelope,.icon-envelope-letter,.icon-envelope-open,.icon-equalizer,.icon-eye,.icon-eyeglasses,.icon-feed,.icon-film,.icon-fire,.icon-flag,.icon-folder,.icon-folder-alt,.icon-frame,.icon-game-controller,.icon-ghost,.icon-globe,.icon-globe-alt,.icon-graduation,.icon-graph,.icon-grid,.icon-handbag,.icon-heart,.icon-home,.icon-hourglass,.icon-info,.icon-key,.icon-layers,.icon-like,.icon-link,.icon-list,.icon-lock,.icon-lock-open,.icon-login,.icon-logout,.icon-loop,.icon-magic-wand,.icon-magnet,.icon-magnifier,.icon-magnifier-add,.icon-magnifier-remove,.icon-map,.icon-microphone,.icon-mouse,.icon-moustache,.icon-music-tone,.icon-music-tone-alt,.icon-note,.icon-notebook,.icon-paper-clip,.icon-paper-plane,.icon-pencil,.icon-picture,.icon-pie-chart,.icon-pin,.icon-plane,.icon-playlist,.icon-plus,.icon-pointer,.icon-power,.icon-present,.icon-printer,.icon-puzzle,.icon-question,.icon-refresh,.icon-reload,.icon-rocket,.icon-screen-desktop,.icon-screen-smartphone,.icon-screen-tablet,.icon-settings,.icon-share,.icon-share-alt,.icon-shield,.icon-shuffle,.icon-size-actual,.icon-size-fullscreen,.icon-social-dribbble,.icon-social-dropbox,.icon-social-facebook,.icon-social-tumblr,.icon-social-twitter,.icon-social-youtube,.icon-speech,.icon-speedometer,.icon-star,.icon-support,.icon-symbol-female,.icon-symbol-male,.icon-tag,.icon-target,.icon-trash,.icon-trophy,.icon-umbrella,.icon-user,.icon-user-female,.icon-user-follow,.icon-user-following,.icon-user-unfollow,.icon-users,.icon-vector,.icon-volume-1,.icon-volume-2,.icon-volume-off,.icon-wallet,.icon-wrench{font-family:Simple-Line-Icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased}.icon-user-female:before{content:"\e000"}.icon-user-follow:before{content:"\e002"}.icon-user-following:before{content:"\e003"}.icon-user-unfollow:before{content:"\e004"}.icon-trophy:before{content:"\e006"}.icon-screen-smartphone:before{content:"\e010"}.icon-screen-desktop:before{content:"\e011"}.icon-plane:before{content:"\e012"}.icon-notebook:before{content:"\e013"}.icon-moustache:before{content:"\e014"}.icon-mouse:before{content:"\e015"}.icon-magnet:before{content:"\e016"}.icon-energy:before{content:"\e020"}.icon-emoticon-smile:before{content:"\e021"}.icon-disc:before{content:"\e022"}.icon-cursor-move:before{content:"\e023"}.icon-crop:before{content:"\e024"}.icon-credit-card:before{content:"\e025"}.icon-chemistry:before{content:"\e026"}.icon-user:before{content:"\e005"}.icon-speedometer:before{content:"\e007"}.icon-social-youtube:before{content:"\e008"}.icon-social-twitter:before{content:"\e009"}.icon-social-tumblr:before{content:"\e00a"}.icon-social-facebook:before{content:"\e00b"}.icon-social-dropbox:before{content:"\e00c"}.icon-social-dribbble:before{content:"\e00d"}.icon-shield:before{content:"\e00e"}.icon-screen-tablet:before{content:"\e00f"}.icon-magic-wand:before{content:"\e017"}.icon-hourglass:before{content:"\e018"}.icon-graduation:before{content:"\e019"}.icon-ghost:before{content:"\e01a"}.icon-game-controller:before{content:"\e01b"}.icon-fire:before{content:"\e01c"}.icon-eyeglasses:before{content:"\e01d"}.icon-envelope-open:before{content:"\e01e"}.icon-envelope-letter:before{content:"\e01f"}.icon-bell:before{content:"\e027"}.icon-badge:before{content:"\e028"}.icon-anchor:before{content:"\e029"}.icon-wallet:before{content:"\e02a"}.icon-vector:before{content:"\e02b"}.icon-speech:before{content:"\e02c"}.icon-puzzle:before{content:"\e02d"}.icon-printer:before{content:"\e02e"}.icon-present:before{content:"\e02f"}.icon-playlist:before{content:"\e030"}.icon-pin:before{content:"\e031"}.icon-picture:before{content:"\e032"}.icon-map:before{content:"\e033"}.icon-layers:before{content:"\e034"}.icon-handbag:before{content:"\e035"}.icon-globe-alt:before{content:"\e036"}.icon-globe:before{content:"\e037"}.icon-frame:before{content:"\e038"}.icon-folder-alt:before{content:"\e039"}.icon-film:before{content:"\e03a"}.icon-feed:before{content:"\e03b"}.icon-earphones-alt:before{content:"\e03c"}.icon-earphones:before{content:"\e03d"}.icon-drop:before{content:"\e03e"}.icon-drawer:before{content:"\e03f"}.icon-docs:before{content:"\e040"}.icon-directions:before{content:"\e041"}.icon-direction:before{content:"\e042"}.icon-diamond:before{content:"\e043"}.icon-cup:before{content:"\e044"}.icon-compass:before{content:"\e045"}.icon-call-out:before{content:"\e046"}.icon-call-in:before{content:"\e047"}.icon-call-end:before{content:"\e048"}.icon-calculator:before{content:"\e049"}.icon-bubbles:before{content:"\e04a"}.icon-briefcase:before{content:"\e04b"}.icon-book-open:before{content:"\e04c"}.icon-basket-loaded:before{content:"\e04d"}.icon-basket:before{content:"\e04e"}.icon-bag:before{content:"\e04f"}.icon-action-undo:before{content:"\e050"}.icon-action-redo:before{content:"\e051"}.icon-wrench:before{content:"\e052"}.icon-umbrella:before{content:"\e053"}.icon-trash:before{content:"\e054"}.icon-tag:before{content:"\e055"}.icon-support:before{content:"\e056"}.icon-size-fullscreen:before{content:"\e057"}.icon-size-actual:before{content:"\e058"}.icon-shuffle:before{content:"\e059"}.icon-share-alt:before{content:"\e05a"}.icon-share:before{content:"\e05b"}.icon-rocket:before{content:"\e05c"}.icon-question:before{content:"\e05d"}.icon-pie-chart:before{content:"\e05e"}.icon-pencil:before{content:"\e05f"}.icon-note:before{content:"\e060"}.icon-music-tone-alt:before{content:"\e061"}.icon-music-tone:before{content:"\e062"}.icon-microphone:before{content:"\e063"}.icon-loop:before{content:"\e064"}.icon-logout:before{content:"\e065"}.icon-login:before{content:"\e066"}.icon-list:before{content:"\e067"}.icon-like:before{content:"\e068"}.icon-home:before{content:"\e069"}.icon-grid:before{content:"\e06a"}.icon-graph:before{content:"\e06b"}.icon-equalizer:before{content:"\e06c"}.icon-dislike:before{content:"\e06d"}.icon-cursor:before{content:"\e06e"}.icon-control-start:before{content:"\e06f"}.icon-control-rewind:before{content:"\e070"}.icon-control-play:before{content:"\e071"}.icon-control-pause:before{content:"\e072"}.icon-control-forward:before{content:"\e073"}.icon-control-end:before{content:"\e074"}.icon-calendar:before{content:"\e075"}.icon-bulb:before{content:"\e076"}.icon-bar-chart:before{content:"\e077"}.icon-arrow-up:before{content:"\e078"}.icon-arrow-right:before{content:"\e079"}.icon-arrow-left:before{content:"\e07a"}.icon-arrow-down:before{content:"\e07b"}.icon-ban:before{content:"\e07c"}.icon-bubble:before{content:"\e07d"}.icon-camcorder:before{content:"\e07e"}.icon-camera:before{content:"\e07f"}.icon-check:before{content:"\e080"}.icon-clock:before{content:"\e081"}.icon-close:before{content:"\e082"}.icon-cloud-download:before{content:"\e083"}.icon-cloud-upload:before{content:"\e084"}.icon-doc:before{content:"\e085"}.icon-envelope:before{content:"\e086"}.icon-eye:before{content:"\e087"}.icon-flag:before{content:"\e088"}.icon-folder:before{content:"\e089"}.icon-heart:before{content:"\e08a"}.icon-info:before{content:"\e08b"}.icon-key:before{content:"\e08c"}.icon-link:before{content:"\e08d"}.icon-lock:before{content:"\e08e"}.icon-lock-open:before{content:"\e08f"}.icon-magnifier:before{content:"\e090"}.icon-magnifier-add:before{content:"\e091"}.icon-magnifier-remove:before{content:"\e092"}.icon-paper-clip:before{content:"\e093"}.icon-paper-plane:before{content:"\e094"}.icon-plus:before{content:"\e095"}.icon-pointer:before{content:"\e096"}.icon-power:before{content:"\e097"}.icon-refresh:before{content:"\e098"}.icon-reload:before{content:"\e099"}.icon-settings:before{content:"\e09a"}.icon-star:before{content:"\e09b"}.icon-symbol-female:before{content:"\e09c"}.icon-symbol-male:before{content:"\e09d"}.icon-target:before{content:"\e09e"}.icon-volume-1:before{content:"\e09f"}.icon-volume-2:before{content:"\e0a0"}.icon-volume-off:before{content:"\e0a1"}.icon-users:before{content:"\e001"} \ No newline at end of file diff --git a/src/assets/fonts/summernote/summernote.eot b/src/assets/fonts/summernote/summernote.eot new file mode 100644 index 0000000..3138288 Binary files /dev/null and b/src/assets/fonts/summernote/summernote.eot differ diff --git a/src/assets/fonts/summernote/summernote.ttf b/src/assets/fonts/summernote/summernote.ttf new file mode 100644 index 0000000..bb254a1 Binary files /dev/null and b/src/assets/fonts/summernote/summernote.ttf differ diff --git a/src/assets/fonts/summernote/summernote.woff b/src/assets/fonts/summernote/summernote.woff new file mode 100644 index 0000000..01b4e75 Binary files /dev/null and b/src/assets/fonts/summernote/summernote.woff differ diff --git a/src/assets/fonts/tinymce/readme.md b/src/assets/fonts/tinymce/readme.md new file mode 100644 index 0000000..fa5d639 --- /dev/null +++ b/src/assets/fonts/tinymce/readme.md @@ -0,0 +1 @@ +Icons are generated and provided by the http://icomoon.io service. diff --git a/src/assets/fonts/tinymce/tinymce-small.eot b/src/assets/fonts/tinymce/tinymce-small.eot new file mode 100644 index 0000000..b144ba0 Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce-small.eot differ diff --git a/src/assets/fonts/tinymce/tinymce-small.json b/src/assets/fonts/tinymce/tinymce-small.json new file mode 100644 index 0000000..0808be0 --- /dev/null +++ b/src/assets/fonts/tinymce/tinymce-small.json @@ -0,0 +1,1277 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M704 832v-37.004c151.348-61.628 256-193.82 256-346.996 0-212.078-200.576-384-448-384s-448 171.922-448 384c0 153.176 104.654 285.368 256 346.996v37.004h-192l-64-96v224h320v-222.812c-100.9-51.362-170.666-161.54-170.666-289.188 0-176.732 133.718-320 298.666-320 164.948 0 298.666 143.268 298.666 320 0 127.648-69.766 237.826-170.666 289.188v222.812h320v-224l-64 96h-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57376, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 0, + "order": 1, + "prevSize": 32, + "code": 57376, + "name": "charmap", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M256 64v896l256-256 256 256v-896h-512zM704 789.49l-192-192-192 192v-661.49h384v661.49z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57363, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 1, + "order": 2, + "prevSize": 32, + "code": 57363, + "name": "bookmark", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM800 838c-9.724 0-19.45-3.708-26.87-11.13l-128-127.998c-14.844-14.84-14.844-38.898 0-53.738 14.84-14.844 38.896-14.844 53.736 0l128 128c14.844 14.84 14.844 38.896 0 53.736-7.416 7.422-17.142 11.13-26.866 11.13zM608 960c-17.674 0-32-14.326-32-32v-128c0-17.674 14.326-32 32-32s32 14.326 32 32v128c0 17.674-14.326 32-32 32zM928 640h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32h128c17.674 0 32 14.326 32 32s-14.326 32-32 32zM224 186c9.724 0 19.45 3.708 26.87 11.13l128 128c14.842 14.84 14.842 38.898 0 53.738-14.84 14.844-38.898 14.844-53.738 0l-128-128c-14.842-14.84-14.842-38.898 0-53.738 7.418-7.422 17.144-11.13 26.868-11.13zM416 64c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32s-32-14.326-32-32v-128c0-17.674 14.326-32 32-32zM96 384h128c17.674 0 32 14.326 32 32s-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57362, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 2, + "order": 3, + "prevSize": 32, + "code": 57362, + "name": "link", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM352 710c-9.724 0-19.45-3.71-26.87-11.128-14.84-14.84-14.84-38.898 0-53.738l320-320c14.84-14.84 38.896-14.84 53.736 0 14.844 14.84 14.844 38.9 0 53.74l-320 320c-7.416 7.416-17.142 11.126-26.866 11.126z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57361, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 3, + "order": 4, + "prevSize": 32, + "code": 57361, + "name": "unlink", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M576 281.326v-217.326l336.002 336-336.002 336v-222.096c-390.906-9.17-315 247.096-256 446.096-288-320-212.092-690.874 256-678.674z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57360, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 4, + "order": 5, + "prevSize": 32, + "code": 57360, + "name": "redo", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M704 960c59-199 134.906-455.266-256-446.096v222.096l-336.002-336 336.002-336v217.326c468.092-12.2 544 358.674 256 678.674z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57359, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 5, + "order": 6, + "prevSize": 32, + "code": 57359, + "name": "undo", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M256.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.954 10.578-19.034 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498zM768.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.956 10.578-19.036 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57358, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 6, + "order": 7, + "prevSize": 32, + "code": 57358, + "name": "blockquote", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM384 576h576v128h-576zM384 384h576v128h-576zM64 768h896v128h-896zM64 384l224 160-224 160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57356, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 7, + "order": 8, + "prevSize": 32, + "code": 57356, + "name": "indent", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h576v128h-576zM64 384h576v128h-576zM64 768h896v128h-896zM960 384l-224 160 224 160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57357, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 8, + "order": 9, + "prevSize": 32, + "code": 57357, + "name": "outdent", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM320 530v-146h-64v-320h-128v64h64v256h-64v64h128v50l-128 60v146h128v64h-128v64h128v64h-128v64h192v-320h-128v-50z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57355, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 9, + "order": 10, + "prevSize": 32, + "code": 57355, + "name": "numlist", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM128 192c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 512c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 832c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57354, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 10, + "order": 11, + "prevSize": 32, + "code": 57354, + "name": "bullist", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M888 384h-56v-256h64v-64h-320v64h64v256h-256v-256h64v-64h-320v64h64v256h-56c-39.6 0-72 32.4-72 72v432c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-312h128v312c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-432c0-39.6-32.4-72-72-72zM348 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM860 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57353, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 11, + "order": 12, + "prevSize": 32, + "code": 57353, + "name": "searchreplace", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h384l192-192v-384h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM704 869.49v-101.49h101.49l-101.49 101.49zM832 704h-192v192h-256v-448h448v256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57352, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 12, + "order": 13, + "prevSize": 32, + "code": 57352, + "name": "paste", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M832 320h-192v-64l-192-192h-384v704h384v192h576v-448l-192-192zM832 410.51l101.49 101.49h-101.49v-101.49zM448 154.51l101.49 101.49h-101.49v-101.49zM128 128h256v192h192v384h-448v-576zM960 896h-448v-128h128v-384h128v192h192v320z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57393, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 13, + "order": 14, + "prevSize": 32, + "code": 57393, + "name": "copy", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M960 512h-265.876c-50.078-35.42-114.43-54.86-182.124-54.86-89.206 0-164.572-50.242-164.572-109.712 0-59.47 75.366-109.714 164.572-109.714 75.058 0 140.308 35.576 159.12 82.286h113.016c-7.93-50.644-37.58-97.968-84.058-132.826-50.88-38.16-117.676-59.174-188.078-59.174-70.404 0-137.196 21.014-188.074 59.174-54.788 41.090-86.212 99.502-86.212 160.254s31.424 119.164 86.212 160.254c1.956 1.466 3.942 2.898 5.946 4.316h-265.872v64h512.532c58.208 17.106 100.042 56.27 100.042 100.572 0 59.468-75.368 109.71-164.572 109.71-75.060 0-140.308-35.574-159.118-82.286h-113.016c7.93 50.64 37.582 97.968 84.060 132.826 50.876 38.164 117.668 59.18 188.072 59.18 70.402 0 137.198-21.016 188.074-59.174 54.79-41.090 86.208-99.502 86.208-160.254 0-35.298-10.654-69.792-30.294-100.572h204.012v-64z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57389, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 19, + "order": 15, + "prevSize": 32, + "code": 57389, + "name": "strikethrough", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M192 832h576v64h-576v-64zM640 128v384c0 31.312-14.7 61.624-41.39 85.352-30.942 27.502-73.068 42.648-118.61 42.648-45.544 0-87.668-15.146-118.608-42.648-26.692-23.728-41.392-54.040-41.392-85.352v-384h-128v384c0 141.382 128.942 256 288 256s288-114.618 288-256v-384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57388, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 20, + "order": 16, + "prevSize": 32, + "code": 57388, + "name": "underline", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M832 128v64h-144l-256 640h144v64h-448v-64h144l256-640h-144v-64h448z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57387, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 21, + "order": 17, + "prevSize": 32, + "code": 57387, + "name": "italic", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M625.442 494.182c48.074-38.15 78.558-94.856 78.558-158.182 0-114.876-100.29-208-224-208h-224v768h288c123.712 0 224-93.124 224-208 0-88.196-59.118-163.562-142.558-193.818zM384 304c0-26.51 21.49-48 48-48h67.204c42.414 0 76.796 42.98 76.796 96s-34.382 96-76.796 96h-115.204v-144zM547.2 768h-115.2c-26.51 0-48-21.49-48-48v-144h163.2c42.418 0 76.8 42.98 76.8 96s-34.382 96-76.8 96z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57386, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 18, + "prevSize": 32, + "code": 57386, + "name": "bold", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M850.746 242.746l-133.492-133.49c-24.888-24.892-74.054-45.256-109.254-45.256h-416c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-544c0-35.2-20.366-84.364-45.254-109.254zM805.49 287.998c6.792 6.796 13.792 19.162 18.894 32.002h-184.384v-184.386c12.84 5.1 25.204 12.1 32 18.896l133.49 133.488zM831.884 896h-639.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h383.886v256h256v511.884c-0.034 0.040-0.076 0.082-0.116 0.116z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57345, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 23, + "order": 19, + "prevSize": 32, + "code": 57345, + "name": "newdocument", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M960 880v-591.938l-223.938-224.062h-592.062c-44.182 0-80 35.816-80 80v736c0 44.184 35.818 80 80 80h736c44.184 0 80-35.816 80-80zM576 192h64v192h-64v-192zM704 832h-384v-255.882c0.034-0.042 0.076-0.082 0.116-0.118h383.77c0.040 0.036 0.082 0.076 0.116 0.118l-0.002 255.882zM832 832h-64v-256c0-35.2-28.8-64-64-64h-384c-35.2 0-64 28.8-64 64v256h-64v-640h64v192c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-171.010l128 128.072v490.938z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57344, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 20, + "prevSize": 32, + "code": 57344, + "name": "save", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M64 192v704h896v-704h-896zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-192v-128h192zM128 512h192v128h-192v-128zM704 512h192v128h-192v-128zM704 448v-128h192v128h-192zM128 704h192v128h-192v-128zM704 832v-128h192v128h-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57371, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 25, + "order": 21, + "prevSize": 32, + "code": 57371, + "name": "table", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M512 140c99.366 0 192.782 38.694 263.042 108.956s108.958 163.678 108.958 263.044-38.696 192.782-108.958 263.042-163.676 108.958-263.042 108.958-192.782-38.696-263.044-108.958-108.956-163.676-108.956-263.042 38.694-192.782 108.956-263.044 163.678-108.956 263.044-108.956zM512 64c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448v0zM320 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM576 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM512 656c-101.84 0-192.56-36.874-251.166-94.328 23.126 117.608 126.778 206.328 251.166 206.328 124.388 0 228.040-88.72 251.168-206.328-58.608 57.454-149.328 94.328-251.168 94.328z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57377, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 26, + "order": 22, + "prevSize": 32, + "code": 57377, + "name": "emoticons", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M480 384l-192-192 128-128h-352v352l128-128 192 192zM640 480l192-192 128 128v-352h-352l128 128-192 192zM544 640l192 192-128 128h352v-352l-128 128-192-192zM384 544l-192 192-128-128v352h352l-128-128 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57379, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 27, + "order": 23, + "prevSize": 32, + "code": 57379, + "name": "fullscreen", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M64 448h896v128h-896z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57372, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 28, + "order": 24, + "prevSize": 32, + "code": 57372, + "name": "hr", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M64 768h512v128h-512v-128zM768 192h-220.558l-183.766 512h-132.288l183.762-512h-223.15v-128h576v128zM929.774 896l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774-62.226 62.226z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57373, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 29, + "order": 25, + "prevSize": 32, + "code": 57373, + "name": "removeformat", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M256 128h512v128h-512v-128zM896 320h-768c-35.2 0-64 28.8-64 64v256c0 35.2 28.796 64 64 64h128v192h512v-192h128c35.2 0 64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM704 832h-384v-256h384v256zM910.4 416c0 25.626-20.774 46.4-46.398 46.4s-46.402-20.774-46.402-46.4 20.778-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57378, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 30, + "order": 26, + "prevSize": 32, + "code": 57378, + "name": "print", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M384 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57390, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 31, + "order": 27, + "prevSize": 32, + "code": 57390, + "name": "visualchars", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M448 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM64 896l224-192-224-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57391, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 32, + "order": 28, + "prevSize": 32, + "code": 57391, + "name": "ltr", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M416 704l-192-192 192-192-64-64-256 256 256 256zM672 256l-64 64 192 192-192 192 64 64 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57367, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 38, + "order": 29, + "prevSize": 32, + "code": 57367, + "name": "code", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128v-128zM704 256c35.346 0 64 28.654 64 64v166l-228 154h-92v-64l192-128v-64h-320v-128h384zM512 64c-119.666 0-232.166 46.6-316.784 131.216-84.614 84.618-131.216 197.118-131.216 316.784 0 119.664 46.602 232.168 131.216 316.784 84.618 84.616 197.118 131.216 316.784 131.216 119.664 0 232.168-46.6 316.784-131.216 84.616-84.616 131.216-197.12 131.216-316.784 0-119.666-46.6-232.166-131.216-316.784-84.616-84.616-197.12-131.216-316.784-131.216z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57366, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 39, + "order": 30, + "prevSize": 32, + "code": 57366, + "name": "help", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM896 831.884c-0.012 0.014-0.030 0.028-0.042 0.042l-191.958-319.926-160 128-224-288-191.968 479.916c-0.010-0.010-0.022-0.022-0.032-0.032v-639.77c0.034-0.040 0.076-0.082 0.114-0.114h767.77c0.040 0.034 0.082 0.076 0.116 0.116v639.768zM640 352c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96-53.019 0-96 42.981-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57364, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 40, + "order": 31, + "prevSize": 32, + "code": 57364, + "name": "image", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM256 832h-128v-128h128v128zM256 576h-128v-128h128v128zM256 320h-128v-128h128v128zM704 832h-384v-640h384v640zM896 832h-128v-128h128v128zM896 576h-128v-128h128v128zM896 320h-128v-128h128v128zM384 320v384l288-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57365, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 41, + "order": 32, + "prevSize": 32, + "code": 57365, + "name": "media", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M77.798 304.624l81.414 50.882c50.802-81.114 128.788-143.454 221.208-174.246l-30.366-91.094c-113.748 37.898-209.728 114.626-272.256 214.458zM673.946 90.166l-30.366 91.094c92.422 30.792 170.404 93.132 221.208 174.248l81.412-50.882c-62.526-99.834-158.506-176.562-272.254-214.46zM607.974 704.008c-4.808 0-9.692-1.090-14.286-3.386l-145.688-72.844v-211.778c0-17.672 14.328-32 32-32s32 14.328 32 32v172.222l110.31 55.156c15.806 7.902 22.214 27.124 14.31 42.932-5.604 11.214-16.908 17.696-28.646 17.698zM512 192c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384 0-212.078-171.922-384-384-384zM512 864c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 159.058-128.942 288-288 288z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57368, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 42, + "order": 33, + "prevSize": 32, + "code": 57368, + "name": "insertdatetime", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M64 455.746c45.318-49.92 97.162-92.36 153.272-125.124 90.332-52.744 192.246-80.622 294.728-80.622 102.48 0 204.396 27.878 294.726 80.624 56.112 32.764 107.956 75.204 153.274 125.124v-117.432c-33.010-28.118-68.124-53.14-104.868-74.594-105.006-61.314-223.658-93.722-343.132-93.722s-238.128 32.408-343.134 93.72c-36.742 21.454-71.856 46.478-104.866 74.596v117.43zM512 320c-183.196 0-345.838 100.556-448 256 102.162 155.448 264.804 256 448 256 183.196 0 345.838-100.552 448-256-102.162-155.444-264.804-256-448-256zM512 512c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.348 28.654-64 64-64s64 28.652 64 64zM728.066 696.662c-67.434 39.374-140.128 59.338-216.066 59.338s-148.632-19.964-216.066-59.338c-51.554-30.104-98.616-71.31-138.114-120.662 39.498-49.35 86.56-90.558 138.116-120.66 13.276-7.752 26.758-14.74 40.426-20.982-10.512 23.742-16.362 50.008-16.362 77.642 0 106.040 85.962 192 192 192 106.040 0 192-85.96 192-192 0-27.634-5.85-53.9-16.36-77.642 13.668 6.244 27.15 13.23 40.426 20.982 51.554 30.102 98.616 71.31 138.116 120.66-39.498 49.352-86.56 90.558-138.116 120.662z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57369, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 43, + "order": 34, + "prevSize": 32, + "code": 57369, + "name": "preview", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M651.168 283.834c-24.612-81.962-28.876-91.834-107.168-91.834h-64c-79.618 0-82.664 10.152-108.418 96 0 0.002 0 0.002-0.002 0.004l-143.998 479.996h113.636l57.6-192h226.366l57.6 192h113.63l-145.246-484.166zM437.218 448l38.4-136c10.086-33.618 36.38-30 36.38-30s26.294-3.618 36.38 30h0.004l38.4 136h-149.564z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57370, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 44, + "order": 35, + "prevSize": 32, + "code": 57370, + "name": "forecolor", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57384, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 45, + "order": 36, + "prevSize": 32, + "code": 57384, + "name": "restoredraft", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57346, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 46, + "order": 37, + "prevSize": 32, + "code": 57346, + "name": "fullpage", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57375, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 47, + "order": 38, + "prevSize": 32, + "code": 57375, + "name": "superscript", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57374, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 48, + "order": 39, + "prevSize": 32, + "code": 57374, + "name": "subscript", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h576v-576h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM832 896h-448v-448h448v448zM448 512v128h32l32-64h64v192h-48v64h160v-64h-48v-192h64l32 64h32v-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pastetext" + ], + "defaultCode": 57397, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 49, + "order": 40, + "prevSize": 32, + "code": 57397, + "name": "pastetext", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize", + "dots" + ], + "defaultCode": 57394, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 50, + "order": 41, + "prevSize": 32, + "code": 57394, + "name": "resize", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M928 128h-416l-32-64h-352l-64 128h896zM840.34 704h87.66l32-448h-896l64 640h356.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM874.996 849.75l-134.496-110.692c17.454-28.922 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l110.692 134.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM576 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "browse" + ], + "defaultCode": 57396, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 51, + "order": 42, + "prevSize": 32, + "code": 57396, + "name": "browse", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M864.408 670.132c-46.47-46.47-106.938-68.004-161.082-62.806l-63.326-63.326 192-192c0 0 128-128 0-256l-320 320-320-320c-128 128 0 256 0 256l192 192-63.326 63.326c-54.144-5.198-114.61 16.338-161.080 62.806-74.98 74.98-85.112 186.418-22.626 248.9 62.482 62.482 173.92 52.354 248.9-22.626 46.47-46.468 68.002-106.938 62.806-161.080l63.326-63.326 63.328 63.328c-5.196 54.144 16.336 114.61 62.806 161.078 74.978 74.98 186.418 85.112 248.898 22.626 62.488-62.482 52.356-173.918-22.624-248.9zM353.124 758.578c-2.212 24.332-15.020 49.826-35.14 69.946-22.212 22.214-51.080 35.476-77.218 35.476-10.524 0-25.298-2.228-35.916-12.848-21.406-21.404-17.376-73.132 22.626-113.136 22.212-22.214 51.080-35.476 77.218-35.476 10.524 0 25.298 2.228 35.916 12.848 13.112 13.11 13.47 32.688 12.514 43.19zM512 608c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM819.152 851.152c-10.62 10.62-25.392 12.848-35.916 12.848-26.138 0-55.006-13.262-77.218-35.476-20.122-20.12-32.928-45.614-35.138-69.946-0.958-10.502-0.6-30.080 12.514-43.192 10.618-10.622 25.39-12.848 35.916-12.848 26.136 0 55.006 13.262 77.216 35.474 40.004 40.008 44.032 91.736 22.626 113.14z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57351, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 14, + "order": 43, + "prevSize": 32, + "code": 57351, + "name": "cut", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h896v128h-896zM64 768h896v128h-896z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57350, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 15, + "order": 44, + "prevSize": 32, + "code": 57350, + "name": "alignjustify", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM256 384h512v128h-512zM256 768h512v128h-512z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57348, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 16, + "order": 45, + "prevSize": 32, + "code": 57348, + "name": "aligncenter", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM384 384h576v128h-576zM384 768h576v128h-576z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57349, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 17, + "order": 46, + "prevSize": 32, + "code": 57349, + "name": "alignright", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h576v128h-576zM64 768h576v128h-576z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57347, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 18, + "order": 47, + "prevSize": 32, + "code": 57347, + "name": "alignleft", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M320 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM960 512l-224 192 224 192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57392, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 33, + "order": 48, + "prevSize": 32, + "code": 57392, + "name": "rtl", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M512 384h128v64h-128zM512 768h128v64h-128zM576 576h128v64h-128zM768 576v192h-64v64h128v-256zM384 576h128v64h-128zM320 768h128v64h-128zM320 384h128v64h-128zM192 192v256h64v-192h64v-64zM704 448h128v-256h-64v192h-64zM64 64v896h896v-896h-896zM896 896h-768v-768h768v768zM192 576v256h64v-192h64v-64zM576 192h128v64h-128zM384 192h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57382, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 34, + "order": 49, + "prevSize": 32, + "code": 57382, + "name": "template", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M816 64l16 384h-640l16-384h32l16 320h512l16-320h32zM208 960l-16-320h640l-16 320h-32l-16-256h-512l-16 256h-32zM64 512h128v64h-128zM256 512h128v64h-128zM448 512h128v64h-128zM640 512h128v64h-128zM832 512h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57383, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 35, + "order": 50, + "prevSize": 32, + "code": 57383, + "name": "pagebreak", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M960 128v-64h-192c-35.202 0-64 28.8-64 64v320c0 15.856 5.858 30.402 15.496 41.614l-303.496 260.386-142-148-82 70 224 288 416-448h128v-64h-192v-320h192zM256 512h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192h128v192zM128 256v-128h128v128h-128zM640 448v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64zM448 128h128v128h-128v-128zM448 320h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57380, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 36, + "order": 51, + "prevSize": 32, + "code": 57380, + "name": "spellcheck", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M448 512h-128v-128h128v-128h128v128h128v128h-128v128h-128v-128zM960 576v320h-896v-320h128v192h640v-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57381, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 37, + "order": 52, + "prevSize": 32, + "code": 57381, + "name": "nonbreaking", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M256 352v-128c0-53.020 42.98-96 96-96h32v-128h-32c-123.712 0-224 100.288-224 224v128c0 53.020-42.98 96-96 96h-32v128h32c53.020 0 96 42.98 96 96v128c0 123.71 100.288 224 224 224h32v-128h-32c-53.020 0-96-42.98-96-96v-128c0-62.684-25.758-119.342-67.254-160 41.496-40.658 67.254-97.316 67.254-160z", + "M1024 352v-128c0-53.020-42.98-96-96-96h-32v-128h32c123.71 0 224 100.288 224 224v128c0 53.020 42.98 96 96 96h32v128h-32c-53.020 0-96 42.98-96 96v128c0 123.71-100.29 224-224 224h-32v-128h32c53.020 0 96-42.98 96-96v-128c0-62.684 25.758-119.342 67.254-160-41.496-40.658-67.254-97.316-67.254-160z", + "M768 320.882c0 70.692-57.308 128-128 128s-128-57.308-128-128c0-70.692 57.308-128 128-128s128 57.308 128 128z", + "M640 511.118c-70.692 0-128 57.308-128 128 0 68.732 32 123.216 130.156 127.852-29.19 41.126-73.156 57.366-130.156 62.7v76c0 0 256 22.332 256-266.55-0.25-70.694-57.306-128.002-128-128.002z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "tags": [ + "code", + "semicolon", + "curly-braces" + ], + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 1, + "id": 0, + "prevSize": 16, + "code": 58883, + "name": "codesample" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 0 + } + ], + "height": 1024, + "metadata": { + "name": "tinymce-small" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "tinymce-small", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "showMetrics": false, + "showMetadata": false, + "showVersion": false, + "embed": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215 + }, + "historySize": 100, + "showCodes": true + } +} \ No newline at end of file diff --git a/src/assets/fonts/tinymce/tinymce-small.svg b/src/assets/fonts/tinymce/tinymce-small.svg new file mode 100644 index 0000000..b4ee6f4 --- /dev/null +++ b/src/assets/fonts/tinymce/tinymce-small.svg @@ -0,0 +1,63 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/tinymce/tinymce-small.ttf b/src/assets/fonts/tinymce/tinymce-small.ttf new file mode 100644 index 0000000..a983e2d Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce-small.ttf differ diff --git a/src/assets/fonts/tinymce/tinymce-small.woff b/src/assets/fonts/tinymce/tinymce-small.woff new file mode 100644 index 0000000..d8962df Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce-small.woff differ diff --git a/src/assets/fonts/tinymce/tinymce.eot b/src/assets/fonts/tinymce/tinymce.eot new file mode 100644 index 0000000..09fd441 Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce.eot differ diff --git a/src/assets/fonts/tinymce/tinymce.json b/src/assets/fonts/tinymce/tinymce.json new file mode 100644 index 0000000..107b741 --- /dev/null +++ b/src/assets/fonts/tinymce/tinymce.json @@ -0,0 +1,3381 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M576.234 289.27l242.712-81.432 203.584 606.784-242.712 81.432zM0 896h256v-704h-256v704zM64 320h128v64h-128v-64zM320 896h256v-704h-256v704zM384 320h128v64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "books", + "library", + "archive" + ], + "defaultCode": 57458, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 523, + "id": 1722, + "prevSize": 32, + "code": 59665, + "name": "books", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "minus", + "minimize", + "subtract" + ], + "defaultCode": 58229, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 597, + "id": 1723, + "prevSize": 32, + "code": 59705, + "name": "minus", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "plus", + "add", + "sum" + ], + "defaultCode": 58230, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 598, + "id": 1724, + "prevSize": 32, + "code": 59706, + "name": "plus", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M521.6 44.8l-67.2 67.2-86.4-86.4-86.4 86.4 86.4 86.4-368 368 432 432 518.4-518.4-428.8-435.2zM435.2 825.6l-262.4-262.4 35.2-35.2 576-51.2-348.8 348.8zM953.6 550.4c-6.4 6.4-16 16-28.8 32-28.8 32-41.6 64-41.6 89.6v0 0 0 0 0 0 0c0 16 6.4 35.2 22.4 48 12.8 12.8 32 22.4 48 22.4s35.2-6.4 48-22.4 22.4-32 22.4-48v0 0 0 0 0 0 0c0-25.6-12.8-54.4-41.6-89.6-9.6-16-22.4-25.6-28.8-32v0z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "fill" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 599, + "id": 1695, + "prevSize": 32, + "code": 59650, + "name": "fill" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M0 694.4h1024v128h-1024v-128z", + "M0 928h1024v64h-1024v-64z", + "M0 393.6h1024v192h-1024v-192z", + "M0 32h1024v256h-1024v-256z" + ], + "attrs": [ + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "borderwidth" + ], + "grid": 16 + }, + "attrs": [ + {}, + {}, + {}, + {} + ], + "properties": { + "order": 524, + "id": 1696, + "prevSize": 32, + "code": 59651, + "name": "borderwidth" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M739.2 332.8l-502.4 502.4h-185.6v-185.6l502.4-502.4 185.6 185.6zM803.2 272l-185.6-185.6 67.2-67.2c22.4-22.4 54.4-22.4 76.8 0l108.8 108.8c22.4 22.4 22.4 54.4 0 76.8l-67.2 67.2zM41.6 912h940.8v112h-940.8v-112z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "line" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 525, + "id": 1697, + "prevSize": 32, + "code": 59652, + "name": "line" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M0 480h1024v64h-1024v-64z", + "M304 48v339.2h-67.2v-272h-67.2v-67.2z", + "M444.8 265.6v54.4h134.4v67.2h-201.6v-153.6l134.4-64v-54.4h-134.4v-67.2h201.6v153.6z", + "M854.4 48v339.2h-204.8v-67.2h137.6v-67.2h-137.6v-70.4h137.6v-67.2h-137.6v-67.2z", + "M115.2 793.6c3.2-57.6 38.4-83.2 108.8-83.2 38.4 0 67.2 9.6 86.4 25.6s25.6 35.2 25.6 70.4v112c0 25.6 0 28.8 9.6 41.6h-73.6c-3.2-9.6-3.2-9.6-6.4-19.2-22.4 19.2-41.6 25.6-70.4 25.6-54.4 0-89.6-32-89.6-76.8s28.8-70.4 99.2-80l38.4-6.4c16-3.2 22.4-6.4 22.4-16 0-12.8-12.8-22.4-38.4-22.4s-41.6 9.6-44.8 28.8h-67.2zM262.4 844.8c-6.4 3.2-12.8 6.4-25.6 6.4l-25.6 6.4c-25.6 6.4-38.4 16-38.4 28.8 0 16 12.8 25.6 35.2 25.6s41.6-9.6 54.4-32v-35.2z", + "M390.4 624h73.6v112c22.4-16 41.6-22.4 67.2-22.4 64 0 105.6 51.2 105.6 124.8 0 76.8-44.8 134.4-108.8 134.4-32 0-48-9.6-67.2-35.2v28.8h-70.4v-342.4zM460.8 838.4c0 41.6 22.4 70.4 51.2 70.4s51.2-28.8 51.2-70.4c0-44.8-19.2-70.4-51.2-70.4-28.8 0-51.2 28.8-51.2 70.4z", + "M851.2 806.4c-3.2-22.4-19.2-35.2-44.8-35.2-32 0-51.2 25.6-51.2 70.4 0 48 19.2 73.6 51.2 73.6 25.6 0 41.6-12.8 44.8-41.6l70.4 3.2c-9.6 60.8-54.4 96-118.4 96-73.6 0-121.6-51.2-121.6-128 0-80 48-131.2 124.8-131.2 64 0 108.8 35.2 112 96h-67.2z" + ], + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "count" + ], + "grid": 16 + }, + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "properties": { + "order": 526, + "id": 1698, + "prevSize": 32, + "code": 59653, + "name": "count" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M553.6 656l-118.4-118.4c80-89.6 137.6-195.2 172.8-304h137.6v-92.8h-326.4v-92.8h-92.8v92.8h-326.4v92.8h518.4c-32 89.6-80 176-147.2 249.6-44.8-48-80-99.2-108.8-156.8h-92.8c35.2 76.8 80 147.2 137.6 211.2l-236.8 233.6 67.2 67.2 233.6-233.6 144 144c3.2 0 38.4-92.8 38.4-92.8zM816 419.2h-92.8l-208 560h92.8l51.2-140.8h220.8l51.2 140.8h92.8l-208-560zM691.2 745.6l76.8-201.6 76.8 201.6h-153.6z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "translate" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 527, + "id": 1699, + "prevSize": 32, + "code": 59655, + "name": "translate" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M576 64h128v128h-128v-128z", + "M576 320h128v128h-128v-128z", + "M320 320h128v128h-128v-128z", + "M576 576h128v128h-128v-128z", + "M320 576h128v128h-128v-128z", + "M320 832h128v128h-128v-128z", + "M576 832h128v128h-128v-128z", + "M320 64h128v128h-128v-128z" + ], + "attrs": [ + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + } + ], + "isMulticolor": false, + "tags": [ + "drag" + ], + "grid": 16 + }, + "attrs": [ + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + } + ], + "properties": { + "order": 528, + "id": 1700, + "prevSize": 32, + "code": 59656, + "name": "drag", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "home" + ], + "defaultCode": 57345, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 529, + "id": 1701, + "prevSize": 32, + "code": 59659, + "name": "home", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M839.432 199.43c27.492 27.492 50.554 78.672 55.552 120.57h-318.984v-318.984c41.898 4.998 93.076 28.060 120.568 55.552l142.864 142.862zM512 384v-384h-368c-44 0-80 36-80 80v864c0 44 36 80 80 80h672c44 0 80-36 80-80v-560h-384zM576 768v192h-192v-192h-160l256-256 256 256h-160z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "upload" + ], + "defaultCode": 57474, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 530, + "id": 1702, + "prevSize": 32, + "code": 59668, + "name": "upload", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M928 64h-832c-52.8 0-96 43.2-96 96v512c0 52.8 43.2 96 96 96h160v256l307.2-256h364.8c52.8 0 96-43.2 96-96v-512c0-52.8-43.2-96-96-96zM896 640h-379.142l-196.858 174.714v-174.714h-192v-448h768v448z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bubble" + ], + "defaultCode": 57703, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 600, + "id": 1703, + "prevSize": 32, + "code": 59676, + "name": "bubble", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M622.826 702.736c-22.11-3.518-22.614-64.314-22.614-64.314s64.968-64.316 79.128-150.802c38.090 0 61.618-91.946 23.522-124.296 1.59-34.054 48.96-267.324-190.862-267.324-239.822 0-192.45 233.27-190.864 267.324-38.094 32.35-14.57 124.296 23.522 124.296 14.158 86.486 79.128 150.802 79.128 150.802s-0.504 60.796-22.614 64.314c-71.22 11.332-337.172 128.634-337.172 257.264h896c0-128.63-265.952-245.932-337.174-257.264z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "user" + ], + "defaultCode": 57733, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 601, + "id": 1704, + "prevSize": 32, + "code": 59677, + "name": "user", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "lock" + ], + "defaultCode": 57811, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 602, + "id": 1705, + "prevSize": 32, + "code": 59686, + "name": "lock" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "unlock" + ], + "defaultCode": 57812, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 603, + "id": 1706, + "prevSize": 32, + "code": 59687, + "name": "unlock" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "settings" + ], + "defaultCode": 57819, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 604, + "id": 1707, + "prevSize": 32, + "code": 59688, + "name": "settings", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "remove2" + ], + "defaultCode": 57935, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 605, + "id": 1708, + "prevSize": 32, + "code": 59690, + "name": "remove2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M384 64h256v256h-256zM384 384h256v256h-256zM384 704h256v256h-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu" + ], + "defaultCode": 58025, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 606, + "id": 1709, + "prevSize": 32, + "code": 59693, + "name": "menu", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M1009.956 915.76l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648s-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.302 0 96.792-48.708 63.302-108.24zM512 896c-35.346 0-64-28.654-64-64 0-35.348 28.654-64 64-64 35.348 0 64 28.652 64 64 0 35.346-28.652 64-64 64zM556 704h-88l-20-256c0-35.346 28.654-64 64-64s64 28.654 64 64l-20 256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "warning" + ], + "defaultCode": 58198, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 531, + "id": 1710, + "prevSize": 32, + "code": 59696, + "name": "warning" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "question" + ], + "defaultCode": 58201, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 532, + "id": 1711, + "prevSize": 32, + "code": 59697, + "name": "question", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384 0 212.078-171.922 384-384 384zM768 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pluscircle" + ], + "defaultCode": 58206, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 533, + "id": 1712, + "prevSize": 32, + "code": 59698, + "name": "pluscircle", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM448 192h128v128h-128v-128zM640 832h-256v-64h64v-256h-64v-64h192v320h64v64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "info" + ], + "defaultCode": 58211, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 534, + "id": 1713, + "prevSize": 32, + "code": 59699, + "name": "info" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M1024 736 736 0h-448l-288 288v448l288 288h448l288-288v-448l-288-288zM576 832h-128v-128h128v128zM576 576h-128v-384h128v384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "notice" + ], + "defaultCode": 58218, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 535, + "id": 1714, + "prevSize": 32, + "code": 59700, + "name": "notice" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M0 640l192 192 320-320 320 320 192-192-511.998-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowup" + ], + "defaultCode": 58288, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 536, + "id": 1715, + "prevSize": 32, + "code": 59707, + "name": "arrowup", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M384 0l-192 192 320 320-320 320 192 192 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowright" + ], + "defaultCode": 58289, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 537, + "id": 1716, + "prevSize": 32, + "code": 59708, + "name": "arrowright", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M1024 384l-192-192-320 320-320-320-192 192 512 511.998z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowdown" + ], + "defaultCode": 58290, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 538, + "id": 1717, + "prevSize": 32, + "code": 59709, + "name": "arrowdown", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M768 640l-256-256-256 256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowup2" + ], + "defaultCode": 58292, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 539, + "id": 1718, + "prevSize": 32, + "code": 59711, + "name": "arrowup2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M256 384l256 256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowdown2" + ], + "defaultCode": 58294, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 540, + "id": 1719, + "prevSize": 32, + "code": 59712, + "name": "arrowdown2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M256 256l256 256 256-256zM255.996 575.996l256 256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu2" + ], + "defaultCode": 58393, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 541, + "id": 1720, + "prevSize": 32, + "code": 59713, + "name": "menu2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M704 576l128-128v512h-768v-768h512l-128 128h-256v512h512zM960 64v352l-130.744-130.744-354.746 354.744h-90.51v-90.512l354.744-354.744-130.744-130.744z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "newtab" + ], + "defaultCode": 58492, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 607, + "id": 1721, + "prevSize": 32, + "code": 59745, + "name": "newtab", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M960 256v-64l-448 128-448-128v64l320 128v256l-128 448h64l192-448 192 448h64l-128-448v-256zM416 160q0-40 28-68t68-28 68 28 28 68-28 68-68 28-68-28-28-68z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "a11y" + ] + }, + "attrs": [], + "properties": { + "order": 608, + "id": 1694, + "prevSize": 32, + "code": 59648, + "name": "a11y" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M892.8 982.4l-89.6-89.6c-70.4 80-172.8 131.2-288 131.2-208 0-380.8-166.4-384-377.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s0-3.2 0-6.4v0c0 0 0 0 0-3.2 0 0 0-3.2 0-3.2 3.2-105.6 48-211.2 105.6-304l-192-192 44.8-44.8 182.4 182.4c0 0 0 0 0 0l569.6 569.6c0 0 0 0 0 0l99.2 99.2-48 44.8zM896 633.6c0 0 0 0 0 0 0-3.2 0-6.4 0-6.4-9.6-316.8-384-627.2-384-627.2s-108.8 89.6-208 220.8l70.4 70.4c6.4-9.6 16-22.4 22.4-32 41.6-51.2 83.2-96 115.2-128v0c32 32 73.6 76.8 115.2 128 108.8 137.6 169.6 265.6 172.8 371.2 0 0 0 3.2 0 3.2v0 0c0 3.2 0 3.2 0 6.4s0 3.2 0 3.2v0 0c0 22.4-3.2 41.6-9.6 64l76.8 76.8c16-41.6 28.8-89.6 28.8-137.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s-0-3.2-0-6.4z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "invert" + ], + "grid": 16, + "defaultCode": 58882 + }, + "attrs": [ + {} + ], + "properties": { + "order": 609, + "id": 0, + "prevSize": 32, + "code": 58882, + "name": "invert" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M928 128h-416l-32-64h-352l-64 128h896zM904.34 704h74.86l44.8-448h-1024l64 640h484.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM1002.996 913.75l-198.496-174.692c17.454-28.92 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l174.692 198.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM640 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57396, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 0, + "order": 610, + "prevSize": 32, + "code": 57396, + "name": "browse", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize", + "dots" + ], + "defaultCode": 57394, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1, + "order": 611, + "prevSize": 32, + "code": 57394, + "name": "resize", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M832 256h-192v-64l-192-192h-448v768h384v256h640v-576l-192-192zM832 346.51l101.49 101.49h-101.49v-101.49zM448 90.51l101.49 101.49h-101.49v-101.49zM64 64h320v192h192v448h-512v-640zM960 960h-512v-192h192v-448h128v192h192v448z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "copy" + ], + "defaultCode": 57393, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 2, + "order": 612, + "prevSize": 32, + "code": 57393, + "name": "copy", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M256 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM960 896l-256-224 256-224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "rtl" + ], + "defaultCode": 57392, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 3, + "order": 613, + "prevSize": 32, + "code": 57392, + "name": "rtl", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M448 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM64 448l256 224-256 224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "ltr" + ], + "defaultCode": 57391, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 4, + "order": 542, + "prevSize": 32, + "code": 57391, + "name": "ltr", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M384 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "visualchars" + ], + "defaultCode": 57390, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 5, + "order": 543, + "prevSize": 32, + "code": 57390, + "name": "visualchars", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M731.42 517.036c63.92 47.938 100.58 116.086 100.58 186.964s-36.66 139.026-100.58 186.964c-59.358 44.518-137.284 69.036-219.42 69.036-82.138 0-160.062-24.518-219.42-69.036-63.92-47.938-100.58-116.086-100.58-186.964h128c0 69.382 87.926 128 192 128 104.074 0 192-58.618 192-128 0-69.382-87.926-128-192-128-82.138 0-160.062-24.518-219.42-69.036-63.92-47.94-100.58-116.086-100.58-186.964 0-70.878 36.66-139.024 100.58-186.964 59.358-44.518 137.282-69.036 219.42-69.036 82.136 0 160.062 24.518 219.42 69.036 63.92 47.94 100.58 116.086 100.58 186.964h-128c0-69.382-87.926-128-192-128-104.074 0-192 58.618-192 128 0 69.382 87.926 128 192 128 82.136 0 160.062 24.518 219.42 69.036zM0 512h1024v64h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "strikethrough" + ], + "defaultCode": 57389, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 6, + "order": 544, + "prevSize": 32, + "code": 57389, + "name": "strikethrough", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494 53.8 0 103.75-18.29 140.646-51.494 33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "underline" + ], + "defaultCode": 57388, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 7, + "order": 545, + "prevSize": 32, + "code": 57388, + "name": "underline", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "italic" + ], + "defaultCode": 57387, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 8, + "order": 546, + "prevSize": 32, + "code": 57387, + "name": "italic", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bold0" + ], + "defaultCode": 57386, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 9, + "order": 547, + "prevSize": 32, + "code": 57386, + "name": "bold", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "restoredraft" + ], + "defaultCode": 57384, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 11, + "order": 548, + "prevSize": 32, + "code": 57384, + "name": "restoredraft", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M0 512h128v64h-128zM192 512h192v64h-192zM448 512h128v64h-128zM640 512h192v64h-192zM896 512h128v64h-128zM880 0l16 448h-768l16-448h32l16 384h640l16-384zM144 1024l-16-384h768l-16 384h-32l-16-320h-640l-16 320z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pagebreak" + ], + "defaultCode": 57383, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 12, + "order": 549, + "prevSize": 32, + "code": 57383, + "name": "pagebreak", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M384 192h128v64h-128zM576 192h128v64h-128zM896 192v256h-192v-64h128v-128h-64v-64zM320 384h128v64h-128zM512 384h128v64h-128zM192 256v128h64v64h-128v-256h192v64zM384 576h128v64h-128zM576 576h128v64h-128zM896 576v256h-192v-64h128v-128h-64v-64zM320 768h128v64h-128zM512 768h128v64h-128zM192 640v128h64v64h-128v-256h192v64zM960 64h-896v896h896v-896zM1024 0v0 1024h-1024v-1024h1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "template" + ], + "defaultCode": 57382, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 13, + "order": 550, + "prevSize": 32, + "code": 57382, + "name": "template", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M448 576h-192v-128h192v-192h128v192h192v128h-192v192h-128zM1024 640v384h-1024v-384h128v256h768v-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "nonbreaking" + ], + "defaultCode": 57381, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 14, + "order": 551, + "prevSize": 32, + "code": 57381, + "name": "nonbreaking", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M128 256h128v192h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192zM128 64h128v128h-128v-128zM960 64v-64h-192c-35.202 0-64 28.8-64 64v320c0 35.2 28.798 64 64 64h192v-64h-192v-320h192zM640 160v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64zM576 384h-128v-128h128v128zM576 192h-128v-128h128v128zM832 576l-416 448-224-288 82-70 142 148 352-302z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "spellchecker" + ], + "defaultCode": 57380, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 15, + "order": 552, + "prevSize": 32, + "code": 57380, + "name": "spellchecker", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M704 896h256l64-128v256h-384v-214.214c131.112-56.484 224-197.162 224-361.786 0-214.432-157.598-382.266-352-382.266-194.406 0-352 167.832-352 382.266 0 164.624 92.886 305.302 224 361.786v214.214h-384v-256l64 128h256v-32.59c-187.63-66.46-320-227.402-320-415.41 0-247.424 229.23-448 512-448 282.77 0 512 200.576 512 448 0 188.008-132.37 348.95-320 415.41v32.59z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "charmap" + ], + "defaultCode": 57376, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 19, + "order": 614, + "prevSize": 32, + "code": 57376, + "name": "charmap", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sup" + ], + "defaultCode": 57375, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 20, + "order": 615, + "prevSize": 32, + "code": 57375, + "name": "sup", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sub" + ], + "defaultCode": 57374, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 21, + "order": 616, + "prevSize": 32, + "code": 57374, + "name": "sub", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M0 896h576v128h-576zM192 0h704v128h-704zM277.388 832l204.688-784.164 123.85 32.328-196.25 751.836zM929.774 1024l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "removeformat" + ], + "defaultCode": 57373, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 617, + "prevSize": 32, + "code": 57373, + "name": "removeformat", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M0 448h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "hr" + ], + "defaultCode": 57372, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 23, + "order": 618, + "prevSize": 32, + "code": 57372, + "name": "hr", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 640v-192h256v192h-256zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "table" + ], + "defaultCode": 57371, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 619, + "prevSize": 32, + "code": 57371, + "name": "table", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 52 + }, + { + "icon": { + "paths": [ + "M322.018 832l57.6-192h264.764l57.6 192h113.632l-191.996-640h-223.236l-192 640h113.636zM475.618 320h72.764l57.6 192h-187.964l57.6-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "forecolor" + ], + "defaultCode": 57370, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 25, + "order": 620, + "prevSize": 32, + "code": 57370, + "name": "forecolor", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 53 + }, + { + "icon": { + "paths": [ + "M512 320c-209.368 0-395.244 100.556-512 256 116.756 155.446 302.632 256 512 256 209.368 0 395.244-100.554 512-256-116.756-155.444-302.632-256-512-256zM448 448c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM773.616 705.296c-39.648 20.258-81.652 35.862-124.846 46.376-44.488 10.836-90.502 16.328-136.77 16.328-46.266 0-92.282-5.492-136.768-16.324-43.194-10.518-85.198-26.122-124.846-46.376-63.020-32.202-120.222-76.41-167.64-129.298 47.418-52.888 104.62-97.1 167.64-129.298 32.336-16.522 66.242-29.946 101.082-40.040-19.888 30.242-31.468 66.434-31.468 105.336 0 106.040 85.962 192 192 192 106.038 0 192-85.96 192-192 0-38.902-11.582-75.094-31.466-105.34 34.838 10.096 68.744 23.52 101.082 40.042 63.022 32.198 120.218 76.408 167.638 129.298-47.42 52.886-104.618 97.1-167.638 129.296zM860.918 243.722c-108.72-55.554-226.112-83.722-348.918-83.722-122.806 0-240.198 28.168-348.918 83.722-58.772 30.032-113.732 67.904-163.082 112.076v109.206c55.338-58.566 120.694-107.754 192.194-144.29 99.62-50.904 207.218-76.714 319.806-76.714s220.186 25.81 319.804 76.716c71.502 36.536 136.858 85.724 192.196 144.29v-109.206c-49.35-44.174-104.308-82.046-163.082-112.078z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "preview" + ], + "defaultCode": 57369, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 26, + "order": 553, + "prevSize": 32, + "code": 57369, + "name": "preview", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 54 + }, + { + "icon": { + "paths": [ + "M512 192c-212.076 0-384 171.922-384 384s171.922 384 384 384c212.074 0 384-171.922 384-384s-171.926-384-384-384zM715.644 779.646c-54.392 54.396-126.716 84.354-203.644 84.354s-149.25-29.958-203.646-84.354c-54.396-54.394-84.354-126.718-84.354-203.646s29.958-149.25 84.354-203.646c54.396-54.396 126.718-84.354 203.646-84.354s149.252 29.958 203.642 84.354c54.402 54.396 84.358 126.718 84.358 203.646s-29.958 149.252-84.356 203.646zM325.93 203.862l-42.94-85.878c-98.874 49.536-179.47 130.132-229.006 229.008l85.876 42.94c40.248-80.336 105.732-145.822 186.070-186.070zM884.134 389.93l85.878-42.938c-49.532-98.876-130.126-179.472-229.004-229.008l-42.944 85.878c80.338 40.248 145.824 105.732 186.070 186.068zM512 384h-64v192c0 10.11 4.7 19.11 12.022 24.972l-0.012 0.016 160 128 39.976-49.976-147.986-118.39v-176.622z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "inserttime" + ], + "defaultCode": 57368, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 27, + "order": 554, + "prevSize": 32, + "code": 57368, + "name": "inserttime", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 55 + }, + { + "icon": { + "paths": [ + "M320 256l-256 256 256 256h128l-256-256 256-256zM704 256h-128l256 256-256 256h128l256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "code" + ], + "defaultCode": 57367, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 28, + "order": 555, + "prevSize": 32, + "code": 57367, + "name": "code", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 56 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "help" + ], + "defaultCode": 57366, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 29, + "order": 556, + "prevSize": 32, + "code": 57366, + "name": "help", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 57 + }, + { + "icon": { + "paths": [ + "M0 128v768h1024v-768h-1024zM192 832h-128v-128h128v128zM192 576h-128v-128h128v128zM192 320h-128v-128h128v128zM768 832h-512v-640h512v640zM960 832h-128v-128h128v128zM960 576h-128v-128h128v128zM960 320h-128v-128h128v128zM384 320v384l256-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "media" + ], + "defaultCode": 57365, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 30, + "order": 557, + "prevSize": 32, + "code": 57365, + "name": "media", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 58 + }, + { + "icon": { + "paths": [ + "M0 128v832h1024v-832h-1024zM960 896h-896v-704h896v704zM704 352c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96-53.019 0-96-42.981-96-96zM896 832h-768l192-512 256 320 128-96z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "image" + ], + "defaultCode": 57364, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 31, + "order": 558, + "prevSize": 32, + "code": 57364, + "name": "image", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 59 + }, + { + "icon": { + "paths": [ + "M192 0v1024l320-320 320 320v-1024h-640zM768 869.49l-256-256-256 256v-805.49h512v805.49z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "anchor" + ], + "defaultCode": 57363, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 32, + "order": 559, + "prevSize": 32, + "code": 57363, + "name": "anchor", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 60 + }, + { + "icon": { + "paths": [ + "M476.888 675.114c4.56 9.048 6.99 19.158 6.99 29.696 0 17.616-6.744 34.058-18.992 46.308l-163.38 163.38c-12.248 12.248-28.696 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.38-99.38c-12.248-12.25-18.992-28.696-18.992-46.308s6.744-34.060 18.992-46.308l163.38-163.382c12.248-12.246 28.696-18.992 46.308-18.992 10.538 0 20.644 2.43 29.696 6.988l65.338-65.336c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.38 163.382c-60.67 60.67-60.67 159.95 0 220.618l99.38 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.38-163.38c55.82-55.82 60.238-144.298 13.344-205.346l-65.34 65.338zM978.496 144.884l-99.38-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.97 15.166-110.306 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.246-12.248 28.694-18.994 46.306-18.994 17.616 0 34.060 6.746 46.308 18.994l99.38 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.38 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.504l163.38-163.38c60.672-60.666 60.672-159.944 0-220.614zM233.368 278.624l-191.994-191.994 45.256-45.256 191.994 191.994zM384 0h64v192h-64zM0 384h192v64h-192zM790.632 745.376l191.996 191.996-45.256 45.256-191.996-191.996zM576 832h64v192h-64zM832 576h192v64h-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "unlink" + ], + "defaultCode": 57362, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 33, + "order": 560, + "prevSize": 32, + "code": 57362, + "name": "unlink", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 61 + }, + { + "icon": { + "paths": [ + "M320 704c17.6 17.6 47.274 16.726 65.942-1.942l316.118-316.116c18.668-18.668 19.54-48.342 1.94-65.942s-47.274-16.726-65.942 1.942l-316.116 316.116c-18.668 18.668-19.542 48.342-1.942 65.942zM476.888 675.112c4.56 9.050 6.99 19.16 6.99 29.696 0 17.616-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.382-99.382c-12.248-12.248-18.992-28.694-18.992-46.308s6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994 10.536 0 20.644 2.43 29.696 6.99l65.338-65.338c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-60.67 60.67-60.67 159.948 0 220.618l99.382 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c55.82-55.82 60.238-144.298 13.344-205.344l-65.34 65.34zM978.498 144.884l-99.382-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994s34.060 6.746 46.308 18.994l99.382 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c60.67-60.666 60.67-159.944 0-220.614z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "link" + ], + "defaultCode": 57361, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 34, + "order": 561, + "prevSize": 32, + "code": 57361, + "name": "link", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 62 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM256 320v384l-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "outdent" + ], + "defaultCode": 57357, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 38, + "order": 562, + "prevSize": 32, + "code": 57357, + "name": "outdent", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 63 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM0 704v-384l256 192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "indent" + ], + "defaultCode": 57356, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 39, + "order": 563, + "prevSize": 32, + "code": 57356, + "name": "indent", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 64 + }, + { + "icon": { + "paths": [ + "M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "numlist" + ], + "defaultCode": 57355, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 40, + "order": 621, + "prevSize": 32, + "code": 57355, + "name": "numlist", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 65 + }, + { + "icon": { + "paths": [ + "M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bullist" + ], + "defaultCode": 57354, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 41, + "order": 622, + "prevSize": 32, + "code": 57354, + "name": "bullist", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 66 + }, + { + "icon": { + "paths": [ + "M64 0h384v64h-384zM576 0h384v64h-384zM952 320h-56v-256h-256v256h-256v-256h-256v256h-56c-39.6 0-72 32.4-72 72v560c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-376h128v376c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-560c0-39.6-32.4-72-72-72zM348 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM924 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "searchreplace" + ], + "defaultCode": 57353, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 42, + "order": 623, + "prevSize": 32, + "code": 57353, + "name": "searchreplace", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 67 + }, + { + "icon": { + "paths": [ + "M832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h448l192-192v-512h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM832 933.49v-101.49h101.49l-101.49 101.49zM960 768h-192v192h-320v-576h512v384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "paste" + ], + "defaultCode": 57352, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 43, + "order": 624, + "prevSize": 32, + "code": 57352, + "name": "paste", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 68 + }, + { + "icon": { + "paths": [ + "M890.774 709.154c-45.654-45.556-103.728-69.072-157.946-69.072h-29.112l-63.904-64.008 255.62-256.038c63.904-64.010 63.904-192.028 0-256.038l-383.43 384.056-383.432-384.054c-63.904 64.008-63.904 192.028 0 256.038l255.622 256.034-63.906 64.008h-29.114c-54.22 0-112.292 23.518-157.948 69.076-81.622 81.442-92.65 202.484-24.63 270.35 29.97 29.902 70.288 44.494 112.996 44.494 54.216 0 112.29-23.514 157.946-69.072 53.584-53.464 76.742-124 67.084-185.348l65.384-65.488 65.376 65.488c-9.656 61.348 13.506 131.882 67.084 185.348 45.662 45.558 103.732 69.072 157.948 69.072 42.708 0 83.024-14.592 112.994-44.496 68.020-67.866 56.988-188.908-24.632-270.35zM353.024 845.538c-7.698 17.882-19.010 34.346-33.626 48.926-14.636 14.604-31.172 25.918-49.148 33.624-16.132 6.916-32.96 10.568-48.662 10.568-15.146 0-36.612-3.402-52.862-19.612-16.136-16.104-19.52-37.318-19.52-52.288 0-15.542 3.642-32.21 10.526-48.212 7.7-17.884 19.014-34.346 33.626-48.926 14.634-14.606 31.172-25.914 49.15-33.624 16.134-6.914 32.96-10.568 48.664-10.568 15.146 0 36.612 3.4 52.858 19.614 16.134 16.098 19.522 37.316 19.522 52.284 0.002 15.542-3.638 32.216-10.528 48.214zM512.004 666.596c-49.914 0-90.376-40.532-90.376-90.526 0-49.992 40.462-90.52 90.376-90.52s90.372 40.528 90.372 90.52c0 49.998-40.46 90.526-90.372 90.526zM855.272 919.042c-16.248 16.208-37.712 19.612-52.86 19.612-15.704 0-32.53-3.652-48.666-10.568-17.972-7.706-34.508-19.020-49.142-33.624-14.614-14.58-25.926-31.042-33.626-48.926-6.886-15.998-10.526-32.672-10.526-48.212 0-14.966 3.384-36.188 19.52-52.286 16.246-16.208 37.712-19.614 52.86-19.614 15.7 0 32.53 3.654 48.66 10.568 17.978 7.708 34.516 19.018 49.15 33.624 14.61 14.58 25.924 31.042 33.626 48.926 6.884 15.998 10.526 32.67 10.526 48.212-0.002 14.97-3.39 36.186-19.522 52.288z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "cut" + ], + "defaultCode": 57351, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 44, + "order": 625, + "prevSize": 32, + "code": 57351, + "name": "cut", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 69 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM0 256h1024v128h-1024zM0 448h1024v128h-1024zM0 640h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignjustify" + ], + "defaultCode": 57350, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 45, + "order": 626, + "prevSize": 32, + "code": 57350, + "name": "alignjustify", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 70 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignright" + ], + "defaultCode": 57349, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 46, + "order": 627, + "prevSize": 32, + "code": 57349, + "name": "alignright", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 71 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "aligncenter" + ], + "defaultCode": 57348, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 47, + "order": 564, + "prevSize": 32, + "code": 57348, + "name": "aligncenter", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 72 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignleft" + ], + "defaultCode": 57347, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 48, + "order": 565, + "prevSize": 32, + "code": 57347, + "name": "alignleft", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 73 + }, + { + "icon": { + "paths": [ + "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "fullpage" + ], + "defaultCode": 57346, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 49, + "order": 566, + "prevSize": 32, + "code": 57346, + "name": "fullpage", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 74 + }, + { + "icon": { + "paths": [ + "M903.432 199.43l-142.864-142.862c-31.112-31.112-92.568-56.568-136.568-56.568h-480c-44 0-80 36-80 80v864c0 44 36 80 80 80h736c44 0 80-36 80-80v-608c0-44-25.456-105.458-56.568-136.57zM858.178 244.686c3.13 3.13 6.25 6.974 9.28 11.314h-163.458v-163.456c4.34 3.030 8.184 6.15 11.314 9.28l142.864 142.862zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16h480c4.832 0 10.254 0.61 16 1.704v254.296h254.296c1.094 5.746 1.704 11.166 1.704 16v608z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "newdocument" + ], + "defaultCode": 57345, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 50, + "order": 567, + "prevSize": 32, + "code": 57345, + "name": "newdocument", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 75 + }, + { + "icon": { + "paths": [ + "M896 0h-896v1024h1024v-896l-128-128zM512 128h128v256h-128v-256zM896 896h-768v-768h64v320h576v-320h74.978l53.022 53.018v714.982z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "save" + ], + "defaultCode": 57344, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 51, + "order": 568, + "prevSize": 32, + "code": 57344, + "name": "save", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 76 + }, + { + "icon": { + "paths": [ + "M128 544l288 288 480-480-128-128-352 352-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57395, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 52, + "order": 569, + "prevSize": 32, + "code": 57395, + "name": "checkbox", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 77 + }, + { + "icon": { + "paths": [ + "M512 512v128h32l32-64h64v256h-48v64h224v-64h-48v-256h64l32 64h32v-128zM832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h640v-704h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM960 960h-512v-576h512v576z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pastetext" + ], + "defaultCode": 57397, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 53, + "order": 570, + "prevSize": 32, + "code": 57397, + "name": "pastetext", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 78 + }, + { + "icon": { + "paths": [ + "M1024 0v384l-138.26-138.26-212 212-107.48-107.48 212-212-138.26-138.26zM245.74 138.26l212 212-107.48 107.48-212-212-138.26 138.26v-384h384zM885.74 778.26l138.26-138.26v384h-384l138.26-138.26-212-212 107.48-107.48zM457.74 673.74l-212 212 138.26 138.26h-384v-384l138.26 138.26 212-212z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "fullscreen" + ], + "defaultCode": 57379, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 16, + "order": 571, + "prevSize": 32, + "code": 57379, + "name": "fullscreen", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 79 + }, + { + "icon": { + "paths": [ + "M256 64h512v128h-512zM960 256h-896c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h192v256h512v-256h192c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM704 896h-384v-320h384v320zM974.4 352c0 25.626-20.774 46.4-46.398 46.4-25.626 0-46.402-20.774-46.402-46.4s20.776-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "print" + ], + "defaultCode": 57378, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 17, + "order": 572, + "prevSize": 32, + "code": 57378, + "name": "print", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 80 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.228-512 512 0 282.77 229.228 512 512 512 282.77 0 512-229.23 512-512 0-282.772-229.23-512-512-512zM512 944c-238.586 0-432-193.412-432-432 0-238.586 193.414-432 432-432 238.59 0 432 193.414 432 432 0 238.588-193.41 432-432 432zM384 320c0 35.346-28.654 64-64 64s-64-28.654-64-64 28.654-64 64-64 64 28.654 64 64zM768 320c0 35.346-28.652 64-64 64s-64-28.654-64-64 28.652-64 64-64 64 28.654 64 64zM512 652c141.074 0 262.688-57.532 318.462-123.192-20.872 171.22-156.288 303.192-318.462 303.192-162.118 0-297.498-132.026-318.444-303.168 55.786 65.646 177.386 123.168 318.444 123.168z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "emoticons" + ], + "defaultCode": 57377, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 18, + "order": 573, + "prevSize": 32, + "code": 57377, + "name": "emoticons", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 81 + }, + { + "icon": { + "paths": [ + "M225 448c123.712 0 224 100.29 224 224 0 123.712-100.288 224-224 224-123.712 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.634 11.636-22.252 24.016-31.83 37.020 11.438-1.8 23.16-2.746 35.104-2.746zM801 448c123.71 0 224 100.29 224 224 0 123.712-100.29 224-224 224-123.71 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.636 11.636-22.254 24.016-31.832 37.020 11.44-1.8 23.16-2.746 35.106-2.746z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "blockquote" + ], + "defaultCode": 57358, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 37, + "order": 574, + "prevSize": 32, + "code": 57358, + "name": "blockquote", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 82 + }, + { + "icon": { + "paths": [ + "M761.862 1024c113.726-206.032 132.888-520.306-313.862-509.824v253.824l-384-384 384-384v248.372c534.962-13.942 594.57 472.214 313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "undo" + ], + "defaultCode": 57359, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 36, + "order": 628, + "prevSize": 32, + "code": 57359, + "name": "undo", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 83 + }, + { + "icon": { + "paths": [ + "M576 248.372v-248.372l384 384-384 384v-253.824c-446.75-10.482-427.588 303.792-313.86 509.824-280.712-303.414-221.1-789.57 313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "redo" + ], + "defaultCode": 57360, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 35, + "order": 629, + "prevSize": 32, + "code": 57360, + "name": "redo", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 84 + }, + { + "icon": { + "paths": [ + "M199.995 381.998v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-100.518 0-182.003 81.485-182.003 182.003v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 100.515 81.485 182.003 182.003 182.003h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-50.931-20.928-96.966-54.646-130.002 33.716-33.036 54.646-79.072 54.646-130.002z", + "M824.005 381.998v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c100.515 0 182.003 81.485 182.003 182.003v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 100.515-81.488 182.003-182.003 182.003h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-50.931 20.928-96.966 54.646-130.002-33.716-33.036-54.646-79.072-54.646-130.002z", + "M616.002 356.715c0 57.439-46.562 104.002-104.002 104.002s-104.002-46.562-104.002-104.002c0-57.439 46.562-104.002 104.002-104.002s104.002 46.562 104.002 104.002z", + "M512 511.283c-57.439 0-104.002 46.562-104.002 104.002 0 55.845 26 100.115 105.752 103.88-23.719 33.417-59.441 46.612-105.752 50.944v61.751c0 0 208.003 18.144 208.003-216.577-0.202-57.441-46.56-104.004-104.002-104.004z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "code", + "semicolon", + "curly-braces" + ], + "grid": 16, + "defaultCode": 58883 + }, + "attrs": [], + "properties": { + "order": 630, + "id": 1, + "prevSize": 32, + "code": 58883, + "name": "codesample" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 85 + }, + { + "icon": { + "paths": [ + "M864.626 473.162c-65.754-183.44-205.11-348.15-352.626-473.162-147.516 125.012-286.87 289.722-352.626 473.162-40.664 113.436-44.682 236.562 12.584 345.4 65.846 125.14 198.632 205.438 340.042 205.438s274.196-80.298 340.040-205.44c57.27-108.838 53.25-231.962 12.586-345.398zM738.764 758.956c-43.802 83.252-132.812 137.044-226.764 137.044-55.12 0-108.524-18.536-152.112-50.652 13.242 1.724 26.632 2.652 40.112 2.652 117.426 0 228.668-67.214 283.402-171.242 44.878-85.292 40.978-173.848 23.882-244.338 14.558 28.15 26.906 56.198 36.848 83.932 22.606 63.062 40.024 156.34-5.368 242.604z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "drop" + ], + "defaultCode": 57381, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 87, + "order": 631, + "prevSize": 32, + "code": 59701, + "ligatures": "droplet, color9", + "name": "drop" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 86 + }, + { + "icon": { + "paths": [ + "M768 128h-512l-256 256 512 576 512-576-256-256zM512 778.666v-2.666h-2.37l-14.222-16h16.592v-16h-30.814l-14.222-16h45.036v-16h-59.258l-14.222-16h73.48v-16h-87.704l-14.222-16h101.926v-16h-116.148l-14.222-16h130.37v-16h-144.592l-14.222-16h158.814v-16h-173.038l-14.222-16h187.26v-16h-201.482l-14.222-16h215.704v-16h-229.926l-14.222-16h244.148v-16h-258.372l-14.222-16h272.594v-16h-286.816l-14.222-16h301.038v-16h-315.26l-14.222-16h329.482v-16h-343.706l-7.344-8.262 139.072-139.072h211.978v3.334h215.314l16 16h-231.314v16h247.314l16 16h-263.314v16h279.314l16 16h-295.314v16h311.314l16 16h-327.314v16h343.312l7.738 7.738-351.050 394.928z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "diamond", + "gem", + "jewelry", + "dualtone" + ], + "defaultCode": 57889, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 635, + "order": 632, + "prevSize": 32, + "code": 60327, + "ligatures": "diamond2, gem2", + "name": "sharpen" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 87 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM128 512c0-212.078 171.922-384 384-384v768c-212.078 0-384-171.922-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "contrast" + ], + "defaultCode": 58104, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 854, + "order": 633, + "prevSize": 32, + "code": 60628, + "ligatures": "contrast", + "name": "contrast" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 88 + }, + { + "icon": { + "paths": [ + "M893.254 221.254l-90.508-90.508-290.746 290.744-290.746-290.744-90.508 90.506 290.746 290.748-290.746 290.746 90.508 90.508 290.746-290.746 290.746 290.746 90.508-90.51-290.744-290.744z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "remove" + ], + "defaultCode": 60778, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 634, + "prevSize": 32, + "code": 60778, + "ligatures": "cross2, cancel3", + "name": "remove22" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 89 + }, + { + "icon": { + "paths": [ + "M0 64v384c0 35.346 28.654 64 64 64s64-28.654 64-64v-229.488l677.488 677.488h-229.488c-35.346 0-64 28.652-64 64 0 35.346 28.654 64 64 64h384c35.346 0 64-28.654 64-64v-384c0-35.348-28.654-64-64-64s-64 28.652-64 64v229.488l-677.488-677.488h229.488c35.346 0 64-28.654 64-64s-28.652-64-64-64h-384c-35.346 0-64 28.654-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize2" + ], + "defaultCode": 58329, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1097, + "order": 575, + "prevSize": 32, + "code": 60921, + "ligatures": "arrow-resize2, diagonal2", + "name": "resize2" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 90 + }, + { + "icon": { + "paths": [ + "M483.2 640l-147.2-336c-9.6-25.6-19.2-44.8-25.6-54.4s-16-12.8-25.6-12.8c-16 0-25.6 3.2-28.8 3.2v-70.4c9.6-6.4 25.6-6.4 38.4-9.6 32 0 57.6 6.4 73.6 22.4 6.4 6.4 12.8 16 19.2 25.6 6.4 12.8 12.8 25.6 16 41.6l121.6 291.2 150.4-371.2h92.8l-198.4 470.4v224h-86.4v-224z", + "M0 0v1024h1024v-1024h-1024zM960 960h-896v-896h896v896z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "gamma2" + ], + "grid": 16, + "defaultCode": 58880 + }, + "attrs": [ + {}, + {} + ], + "properties": { + "order": 576, + "id": 1, + "prevSize": 32, + "code": 58880, + "name": "gamma" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 91 + }, + { + "icon": { + "paths": [ + "M627.2 880h-579.2v-396.8h579.2v396.8zM553.6 553.6h-435.2v256h435.2v-256z", + "M259.2 227.2c176-176 457.6-176 633.6 0s176 457.6 0 633.6c-121.6 121.6-297.6 160-454.4 108.8 121.6 28.8 262.4-9.6 361.6-108.8 150.4-150.4 160-384 22.4-521.6-121.6-121.6-320-128-470.4-19.2l86.4 86.4-294.4 22.4 22.4-294.4 92.8 92.8z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "orientation" + ], + "grid": 16, + "defaultCode": 58881 + }, + "attrs": [ + {}, + {} + ], + "properties": { + "order": 577, + "id": 0, + "prevSize": 32, + "code": 58881, + "name": "orientation" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 92 + }, + { + "icon": { + "paths": [ + "M768 544v352h-640v-640h352l128-128h-512c-52.8 0-96 43.2-96 96v704c0 52.8 43.2 96 96 96h704c52.798 0 96-43.2 96-96v-512l-128 128z", + "M864 0l-608 608v160h160l608-608c0-96-64-160-160-160zM416 640l-48-48 480-480 48 48-480 480z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 57361, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 68, + "order": 578, + "prevSize": 32, + "code": 59669, + "ligatures": "pencil7, write7", + "name": "editimage" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 93 + }, + { + "icon": { + "paths": [ + "M607.998 128.014c-212.070 0-383.986 171.916-383.986 383.986h-191.994l246.848 246.848 246.848-246.848h-191.994c0-151.478 122.798-274.276 274.276-274.276 151.48 0 274.276 122.798 274.276 274.276 0 151.48-122.796 274.276-274.276 274.276v109.71c212.070 0 383.986-171.916 383.986-383.986s-171.916-383.986-383.986-383.986z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "rotate-ccw", + "ccw", + "arrow" + ], + "defaultCode": 60072, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 579, + "prevSize": 32, + "code": 60072, + "ligatures": "rotate-ccw3, ccw4", + "name": "rotateleft" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 94 + }, + { + "icon": { + "paths": [ + "M416.002 128.014c212.070 0 383.986 171.916 383.986 383.986h191.994l-246.848 246.848-246.848-246.848h191.994c0-151.478-122.798-274.276-274.276-274.276-151.48 0-274.276 122.798-274.276 274.276 0 151.48 122.796 274.276 274.276 274.276v109.71c-212.070 0-383.986-171.916-383.986-383.986s171.916-383.986 383.986-383.986z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "rotate-cw", + "cw", + "arrow" + ], + "defaultCode": 60073, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 580, + "id": 1679, + "prevSize": 32, + "code": 60073, + "ligatures": "rotate-cw3, cw4", + "name": "rotateright" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 95 + }, + { + "icon": { + "paths": [ + "M0 384h1024v-384zM1024 960v-384h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "flip-vertical", + "mirror" + ], + "defaultCode": 57663, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 403, + "order": 581, + "prevSize": 32, + "code": 60074, + "ligatures": "flip-vertical, mirror", + "name": "flipv" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 96 + }, + { + "icon": { + "paths": [ + "M576 0v1024h384zM0 1024h384v-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "flip-horizontal", + "mirror" + ], + "defaultCode": 57664, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 405, + "order": 582, + "prevSize": 32, + "code": 60076, + "ligatures": "flip-horizontal, mirror3", + "name": "fliph" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 97 + }, + { + "icon": { + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM448 192h-128v128h-128v128h128v128h128v-128h128v-128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "zoom-in", + "magnifier", + "magnifier-plus", + "enlarge" + ], + "defaultCode": 57788, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 534, + "order": 583, + "prevSize": 32, + "code": 60213, + "ligatures": "zoom-in3, magnifier9", + "name": "zoomin" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 98 + }, + { + "icon": { + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM192 320h384v128h-384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "zoom-out", + "magnifier", + "magnifier-minus", + "reduce" + ], + "defaultCode": 57789, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 535, + "order": 584, + "prevSize": 32, + "code": 60214, + "ligatures": "zoom-out3, magnifier10", + "name": "zoomout" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 99 + }, + { + "icon": { + "paths": [ + "M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu", + "list", + "options", + "lines", + "hamburger" + ], + "defaultCode": 58031, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 585, + "id": 1448, + "prevSize": 32, + "code": 60522, + "ligatures": "menu3, list4", + "name": "options" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 100 + }, + { + "icon": { + "paths": [ + "M512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.348 0-64-28.654-64-64s28.652-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.258c24.992 24.99 24.992 65.516 0 90.508-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.99-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51-0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.518-24.992 90.508 0 24.994 24.994 24.994 65.52 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0s-24.994-65.518 0-90.508l45.256-45.258z", + "M512 256c-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-141.384-114.616-256-256-256zM512 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sun", + "weather" + ], + "defaultCode": 58094, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 844, + "order": 635, + "prevSize": 32, + "code": 60620, + "ligatures": "sun2, weather21", + "name": "sun" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 101 + }, + { + "icon": { + "paths": [ + "M715.812 64.48c-60.25-34.784-124.618-55.904-189.572-64.48 122.936 160.082 144.768 384.762 37.574 570.42-107.2 185.67-312.688 279.112-512.788 252.68 39.898 51.958 90.376 97.146 150.628 131.934 245.908 141.974 560.37 57.72 702.344-188.198 141.988-245.924 57.732-560.372-188.186-702.356z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "moon", + "night", + "sleep" + ], + "defaultCode": 58105, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 855, + "order": 636, + "prevSize": 32, + "code": 60621, + "ligatures": "moon, night", + "name": "moon" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 102 + }, + { + "icon": { + "paths": [ + "M672 1024l192-192-320-320 320-320-192-192-512 512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 58291, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1056, + "order": 637, + "prevSize": 32, + "code": 60864, + "ligatures": "arrow-left, left4", + "name": "arrowleft" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 103 + }, + { + "icon": { + "paths": [ + "M832 256l192-192-64-64-192 192h-448v-192h-128v192h-192v128h192v512h512v192h128v-192h192v-128h-192v-448zM320 320h320l-320 320v-320zM384 704l320-320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "crop", + "resize", + "cut" + ], + "defaultCode": 58428, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1201, + "order": 638, + "prevSize": 32, + "code": 61048, + "ligatures": "crop, resize", + "name": "crop" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 104 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablerowprops" + ], + "defaultCode": 58880, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1680, + "order": 639, + "prevSize": 32, + "code": 58884, + "name": "tablerowprops" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 105 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablecellprops" + ], + "defaultCode": 58881, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1681, + "order": 640, + "prevSize": 32, + "code": 58885, + "name": "tablecellprops" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 106 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-896v-192h896v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "table2" + ], + "defaultCode": 58882, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1682, + "order": 641, + "prevSize": 32, + "code": 58886, + "name": "table2" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 107 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 896v-448h576v448h-576zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablemergecells" + ], + "defaultCode": 58884, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1683, + "order": 586, + "prevSize": 32, + "code": 58887, + "name": "tablemergecells" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 108 + }, + { + "icon": { + "paths": [ + "M320 771.2v-182.4h-182.4v-89.6h182.4v-182.4h86.4v182.4h185.6v89.6h-185.6v182.4zM0 64v896h1024v-896h-1024zM640 896h-576v-704h576v704zM960 896h-256v-192h256v192zM960 640h-256v-192h256v192zM960 384h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertcolbefore" + ], + "defaultCode": 58885, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1684, + "order": 587, + "prevSize": 32, + "code": 58888, + "name": "tableinsertcolbefore" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 109 + }, + { + "icon": { + "paths": [ + "M704 316.8v182.4h182.4v89.6h-182.4v182.4h-86.4v-182.4h-185.6v-89.6h185.6v-182.4zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-704h576v704z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertcolafter" + ], + "defaultCode": 58886, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1685, + "order": 588, + "prevSize": 32, + "code": 58889, + "name": "tableinsertcolafter" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 110 + }, + { + "icon": { + "paths": [ + "M691.2 451.2h-144v144h-70.4v-144h-144v-67.2h144v-144h70.4v144h144zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM640 896h-256v-192h256v192zM960 896h-256v-192h256v192zM960 643.2h-896v-451.2h896v451.2z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertrowbefore" + ], + "defaultCode": 58887, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1686, + "order": 589, + "prevSize": 32, + "code": 58890, + "name": "tableinsertrowbefore" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 111 + }, + { + "icon": { + "paths": [ + "M332.8 636.8h144v-144h70.4v144h144v67.2h-144v144h-70.4v-144h-144zM0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM64 192h256v192h-256v-192zM960 896h-896v-451.2h896v451.2zM960 384h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertrowafter" + ], + "defaultCode": 58888, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1687, + "order": 590, + "prevSize": 32, + "code": 58891, + "name": "tableinsertrowafter" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 112 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-448h576v448zM960 384h-256v-192h256v192zM864 803.2l-60.8 60.8-131.2-131.2-131.2 131.2-60.8-60.8 131.2-131.2-131.2-131.2 60.8-60.8 131.2 131.2 131.2-131.2 60.8 60.8-131.2 131.2z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablesplitcells" + ], + "defaultCode": 58890, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1688, + "order": 591, + "prevSize": 32, + "code": 58893, + "name": "tablesplitcells" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 113 + }, + { + "icon": { + "paths": [ + "M0 64h1024v896h-1024v-896zM60.8 192v704h899.2v-704h-899.2zM809.6 748.8l-96 96-204.8-204.8-204.8 204.8-96-96 204.8-204.8-204.8-204.8 96-96 204.8 204.8 204.8-204.8 96 96-204.8 204.8z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tabledelete" + ], + "defaultCode": 58891, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1689, + "order": 592, + "prevSize": 32, + "code": 58894, + "name": "tabledelete" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 114 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM640 320h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableleftheader" + ], + "defaultCode": 58922, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1690, + "order": 593, + "prevSize": 32, + "code": 58922, + "name": "tableleftheader" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 115 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tabletopheader" + ], + "defaultCode": 58923, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1691, + "order": 594, + "prevSize": 32, + "code": 58923, + "name": "tabletopheader" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 116 + }, + { + "icon": { + "paths": [ + "M886.4 387.2l-156.8 156.8 160 160-76.8 76.8-160-160-156.8 156.8-76.8-73.6 160-160-163.2-163.2 76.8-76.8 163.2 163.2 156.8-156.8 73.6 76.8zM0 64v896h1024v-896h-1024zM960 384h-22.4l-64 64h86.4v192h-89.6l64 64h25.6v192h-896v-192h310.4l64-64h-374.4v-192h371.2l-64-64h-307.2v-192h896v192z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "tabledeleterow" + ], + "defaultCode": 59392 + }, + "attrs": [], + "properties": { + "order": 595, + "id": 1693, + "prevSize": 32, + "code": 59392, + "name": "tabledeleterow" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 117 + }, + { + "icon": { + "paths": [ + "M320 460.8l64 64v12.8l-64 64v-140.8zM640 537.6l64 64v-137.6l-64 64v9.6zM1024 64v896h-1024v-896h1024zM960 192h-256v51.2l-12.8-12.8-51.2 51.2v-89.6h-256v89.6l-51.2-51.2-12.8 12.8v-51.2h-256v704h256v-118.4l35.2 35.2 28.8-28.8v115.2h256v-115.2l48 48 16-16v83.2h256v-707.2zM672 297.6l-156.8 156.8-163.2-163.2-76.8 76.8 163.2 163.2-156.8 156.8 76.8 76.8 156.8-156.8 160 160 76.8-76.8-160-160 156.8-156.8-76.8-76.8z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "tabledeletecol" + ], + "defaultCode": 59393 + }, + "attrs": [], + "properties": { + "order": 596, + "id": 1692, + "prevSize": 32, + "code": 59393, + "name": "tabledeletecol" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 118 + } + ], + "height": 1024, + "metadata": { + "name": "tinymce" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "tinymce", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "resetPoint": 59649, + "embed": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215 + }, + "historySize": 100, + "gridSize": 16, + "showGrid": true, + "showCodes": true, + "showLiga": false + } +} \ No newline at end of file diff --git a/src/assets/fonts/tinymce/tinymce.svg b/src/assets/fonts/tinymce/tinymce.svg new file mode 100644 index 0000000..8688c1c --- /dev/null +++ b/src/assets/fonts/tinymce/tinymce.svg @@ -0,0 +1,129 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/tinymce/tinymce.ttf b/src/assets/fonts/tinymce/tinymce.ttf new file mode 100644 index 0000000..bf22ca6 Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce.ttf differ diff --git a/src/assets/fonts/tinymce/tinymce.woff b/src/assets/fonts/tinymce/tinymce.woff new file mode 100644 index 0000000..61cbafb Binary files /dev/null and b/src/assets/fonts/tinymce/tinymce.woff differ diff --git a/src/assets/images/avatar.jpg b/src/assets/images/avatar.jpg new file mode 100644 index 0000000..d9d5f43 Binary files /dev/null and b/src/assets/images/avatar.jpg differ diff --git a/src/assets/images/backgrounds/bg-1.jpg b/src/assets/images/backgrounds/bg-1.jpg new file mode 100644 index 0000000..b47e68c Binary files /dev/null and b/src/assets/images/backgrounds/bg-1.jpg differ diff --git a/src/assets/images/backgrounds/bg-10.jpg b/src/assets/images/backgrounds/bg-10.jpg new file mode 100644 index 0000000..b1eea4c Binary files /dev/null and b/src/assets/images/backgrounds/bg-10.jpg differ diff --git a/src/assets/images/backgrounds/bg-11.jpg b/src/assets/images/backgrounds/bg-11.jpg new file mode 100644 index 0000000..7ecff70 Binary files /dev/null and b/src/assets/images/backgrounds/bg-11.jpg differ diff --git a/src/assets/images/backgrounds/bg-12.jpg b/src/assets/images/backgrounds/bg-12.jpg new file mode 100644 index 0000000..815c27d Binary files /dev/null and b/src/assets/images/backgrounds/bg-12.jpg differ diff --git a/src/assets/images/backgrounds/bg-14.jpg b/src/assets/images/backgrounds/bg-14.jpg new file mode 100644 index 0000000..832d6b5 Binary files /dev/null and b/src/assets/images/backgrounds/bg-14.jpg differ diff --git a/src/assets/images/backgrounds/bg-2.jpg b/src/assets/images/backgrounds/bg-2.jpg new file mode 100644 index 0000000..850901c Binary files /dev/null and b/src/assets/images/backgrounds/bg-2.jpg differ diff --git a/src/assets/images/backgrounds/bg-3.jpg b/src/assets/images/backgrounds/bg-3.jpg new file mode 100644 index 0000000..8a763b7 Binary files /dev/null and b/src/assets/images/backgrounds/bg-3.jpg differ diff --git a/src/assets/images/backgrounds/bg-4.jpg b/src/assets/images/backgrounds/bg-4.jpg new file mode 100644 index 0000000..b8e9109 Binary files /dev/null and b/src/assets/images/backgrounds/bg-4.jpg differ diff --git a/src/assets/images/backgrounds/bg-5.jpg b/src/assets/images/backgrounds/bg-5.jpg new file mode 100644 index 0000000..40687a8 Binary files /dev/null and b/src/assets/images/backgrounds/bg-5.jpg differ diff --git a/src/assets/images/backgrounds/bg-6.jpg b/src/assets/images/backgrounds/bg-6.jpg new file mode 100644 index 0000000..151e1c4 Binary files /dev/null and b/src/assets/images/backgrounds/bg-6.jpg differ diff --git a/src/assets/images/backgrounds/bg-7.jpg b/src/assets/images/backgrounds/bg-7.jpg new file mode 100644 index 0000000..581ec20 Binary files /dev/null and b/src/assets/images/backgrounds/bg-7.jpg differ diff --git a/src/assets/images/backgrounds/bg-8.jpg b/src/assets/images/backgrounds/bg-8.jpg new file mode 100644 index 0000000..4336552 Binary files /dev/null and b/src/assets/images/backgrounds/bg-8.jpg differ diff --git a/src/assets/images/backgrounds/bg-9.jpg b/src/assets/images/backgrounds/bg-9.jpg new file mode 100644 index 0000000..e7b3c4c Binary files /dev/null and b/src/assets/images/backgrounds/bg-9.jpg differ diff --git a/src/assets/images/backgrounds/breadcrumb.png b/src/assets/images/backgrounds/breadcrumb.png new file mode 100644 index 0000000..f72a590 Binary files /dev/null and b/src/assets/images/backgrounds/breadcrumb.png differ diff --git a/src/assets/images/backgrounds/dark-menu.jpg b/src/assets/images/backgrounds/dark-menu.jpg new file mode 100644 index 0000000..3fb9abb Binary files /dev/null and b/src/assets/images/backgrounds/dark-menu.jpg differ diff --git a/src/assets/images/backgrounds/fb.jpg b/src/assets/images/backgrounds/fb.jpg new file mode 100644 index 0000000..d28b09f Binary files /dev/null and b/src/assets/images/backgrounds/fb.jpg differ diff --git a/src/assets/images/backgrounds/ice.png b/src/assets/images/backgrounds/ice.png new file mode 100644 index 0000000..08be3de Binary files /dev/null and b/src/assets/images/backgrounds/ice.png differ diff --git a/src/assets/images/backgrounds/in.jpg b/src/assets/images/backgrounds/in.jpg new file mode 100644 index 0000000..43baa2b Binary files /dev/null and b/src/assets/images/backgrounds/in.jpg differ diff --git a/src/assets/images/backgrounds/laptop.jpg b/src/assets/images/backgrounds/laptop.jpg new file mode 100644 index 0000000..876bdb3 Binary files /dev/null and b/src/assets/images/backgrounds/laptop.jpg differ diff --git a/src/assets/images/backgrounds/left-menu-bg.jpg b/src/assets/images/backgrounds/left-menu-bg.jpg new file mode 100644 index 0000000..4899528 Binary files /dev/null and b/src/assets/images/backgrounds/left-menu-bg.jpg differ diff --git a/src/assets/images/backgrounds/mountain.png b/src/assets/images/backgrounds/mountain.png new file mode 100644 index 0000000..9faeb13 Binary files /dev/null and b/src/assets/images/backgrounds/mountain.png differ diff --git a/src/assets/images/backgrounds/snow_rain.gif b/src/assets/images/backgrounds/snow_rain.gif new file mode 100644 index 0000000..93c1ff7 Binary files /dev/null and b/src/assets/images/backgrounds/snow_rain.gif differ diff --git a/src/assets/images/backgrounds/todo.jpeg b/src/assets/images/backgrounds/todo.jpeg new file mode 100644 index 0000000..15877fe Binary files /dev/null and b/src/assets/images/backgrounds/todo.jpeg differ diff --git a/src/assets/images/backgrounds/tw.jpg b/src/assets/images/backgrounds/tw.jpg new file mode 100644 index 0000000..fdb77a0 Binary files /dev/null and b/src/assets/images/backgrounds/tw.jpg differ diff --git a/src/assets/images/backgrounds/wind_turbine.gif b/src/assets/images/backgrounds/wind_turbine.gif new file mode 100644 index 0000000..a819ad6 Binary files /dev/null and b/src/assets/images/backgrounds/wind_turbine.gif differ diff --git a/src/assets/images/banner/banner-1.jpg b/src/assets/images/banner/banner-1.jpg new file mode 100644 index 0000000..e38c209 Binary files /dev/null and b/src/assets/images/banner/banner-1.jpg differ diff --git a/src/assets/images/banner/banner-10.jpg b/src/assets/images/banner/banner-10.jpg new file mode 100644 index 0000000..99acc6f Binary files /dev/null and b/src/assets/images/banner/banner-10.jpg differ diff --git a/src/assets/images/banner/banner-11.jpg b/src/assets/images/banner/banner-11.jpg new file mode 100644 index 0000000..f7490ab Binary files /dev/null and b/src/assets/images/banner/banner-11.jpg differ diff --git a/src/assets/images/banner/banner-12.jpg b/src/assets/images/banner/banner-12.jpg new file mode 100644 index 0000000..ed79ecc Binary files /dev/null and b/src/assets/images/banner/banner-12.jpg differ diff --git a/src/assets/images/banner/banner-13.jpg b/src/assets/images/banner/banner-13.jpg new file mode 100644 index 0000000..4049add Binary files /dev/null and b/src/assets/images/banner/banner-13.jpg differ diff --git a/src/assets/images/banner/banner-14.jpg b/src/assets/images/banner/banner-14.jpg new file mode 100644 index 0000000..f349f06 Binary files /dev/null and b/src/assets/images/banner/banner-14.jpg differ diff --git a/src/assets/images/banner/banner-15.jpg b/src/assets/images/banner/banner-15.jpg new file mode 100644 index 0000000..abff088 Binary files /dev/null and b/src/assets/images/banner/banner-15.jpg differ diff --git a/src/assets/images/banner/banner-16.jpg b/src/assets/images/banner/banner-16.jpg new file mode 100644 index 0000000..3861439 Binary files /dev/null and b/src/assets/images/banner/banner-16.jpg differ diff --git a/src/assets/images/banner/banner-17.jpg b/src/assets/images/banner/banner-17.jpg new file mode 100644 index 0000000..cafbf6d Binary files /dev/null and b/src/assets/images/banner/banner-17.jpg differ diff --git a/src/assets/images/banner/banner-18.jpg b/src/assets/images/banner/banner-18.jpg new file mode 100644 index 0000000..4091c25 Binary files /dev/null and b/src/assets/images/banner/banner-18.jpg differ diff --git a/src/assets/images/banner/banner-19.jpg b/src/assets/images/banner/banner-19.jpg new file mode 100644 index 0000000..1c168d1 Binary files /dev/null and b/src/assets/images/banner/banner-19.jpg differ diff --git a/src/assets/images/banner/banner-2.jpg b/src/assets/images/banner/banner-2.jpg new file mode 100644 index 0000000..46f15dd Binary files /dev/null and b/src/assets/images/banner/banner-2.jpg differ diff --git a/src/assets/images/banner/banner-20.jpg b/src/assets/images/banner/banner-20.jpg new file mode 100644 index 0000000..32ce27b Binary files /dev/null and b/src/assets/images/banner/banner-20.jpg differ diff --git a/src/assets/images/banner/banner-21.jpg b/src/assets/images/banner/banner-21.jpg new file mode 100644 index 0000000..a785ba4 Binary files /dev/null and b/src/assets/images/banner/banner-21.jpg differ diff --git a/src/assets/images/banner/banner-22.jpg b/src/assets/images/banner/banner-22.jpg new file mode 100644 index 0000000..ad2e653 Binary files /dev/null and b/src/assets/images/banner/banner-22.jpg differ diff --git a/src/assets/images/banner/banner-23.jpg b/src/assets/images/banner/banner-23.jpg new file mode 100644 index 0000000..f5ab4e6 Binary files /dev/null and b/src/assets/images/banner/banner-23.jpg differ diff --git a/src/assets/images/banner/banner-24.jpg b/src/assets/images/banner/banner-24.jpg new file mode 100644 index 0000000..95a3dbc Binary files /dev/null and b/src/assets/images/banner/banner-24.jpg differ diff --git a/src/assets/images/banner/banner-25.jpg b/src/assets/images/banner/banner-25.jpg new file mode 100644 index 0000000..17ff045 Binary files /dev/null and b/src/assets/images/banner/banner-25.jpg differ diff --git a/src/assets/images/banner/banner-26.jpg b/src/assets/images/banner/banner-26.jpg new file mode 100644 index 0000000..d33d71d Binary files /dev/null and b/src/assets/images/banner/banner-26.jpg differ diff --git a/src/assets/images/banner/banner-27.jpg b/src/assets/images/banner/banner-27.jpg new file mode 100644 index 0000000..34bcab3 Binary files /dev/null and b/src/assets/images/banner/banner-27.jpg differ diff --git a/src/assets/images/banner/banner-28.jpg b/src/assets/images/banner/banner-28.jpg new file mode 100644 index 0000000..041ab93 Binary files /dev/null and b/src/assets/images/banner/banner-28.jpg differ diff --git a/src/assets/images/banner/banner-29.jpg b/src/assets/images/banner/banner-29.jpg new file mode 100644 index 0000000..a96d97e Binary files /dev/null and b/src/assets/images/banner/banner-29.jpg differ diff --git a/src/assets/images/banner/banner-3.jpg b/src/assets/images/banner/banner-3.jpg new file mode 100644 index 0000000..cfb3d2c Binary files /dev/null and b/src/assets/images/banner/banner-3.jpg differ diff --git a/src/assets/images/banner/banner-30.jpg b/src/assets/images/banner/banner-30.jpg new file mode 100644 index 0000000..1b948c1 Binary files /dev/null and b/src/assets/images/banner/banner-30.jpg differ diff --git a/src/assets/images/banner/banner-31.jpg b/src/assets/images/banner/banner-31.jpg new file mode 100644 index 0000000..f7f698f Binary files /dev/null and b/src/assets/images/banner/banner-31.jpg differ diff --git a/src/assets/images/banner/banner-32.jpg b/src/assets/images/banner/banner-32.jpg new file mode 100644 index 0000000..c769231 Binary files /dev/null and b/src/assets/images/banner/banner-32.jpg differ diff --git a/src/assets/images/banner/banner-33.jpg b/src/assets/images/banner/banner-33.jpg new file mode 100644 index 0000000..0076a95 Binary files /dev/null and b/src/assets/images/banner/banner-33.jpg differ diff --git a/src/assets/images/banner/banner-34.jpg b/src/assets/images/banner/banner-34.jpg new file mode 100644 index 0000000..23add9f Binary files /dev/null and b/src/assets/images/banner/banner-34.jpg differ diff --git a/src/assets/images/banner/banner-35.jpg b/src/assets/images/banner/banner-35.jpg new file mode 100644 index 0000000..ebd7c02 Binary files /dev/null and b/src/assets/images/banner/banner-35.jpg differ diff --git a/src/assets/images/banner/banner-36.jpg b/src/assets/images/banner/banner-36.jpg new file mode 100644 index 0000000..91ca005 Binary files /dev/null and b/src/assets/images/banner/banner-36.jpg differ diff --git a/src/assets/images/banner/banner-37.jpg b/src/assets/images/banner/banner-37.jpg new file mode 100644 index 0000000..cadb18c Binary files /dev/null and b/src/assets/images/banner/banner-37.jpg differ diff --git a/src/assets/images/banner/banner-38.jpg b/src/assets/images/banner/banner-38.jpg new file mode 100644 index 0000000..4d3c834 Binary files /dev/null and b/src/assets/images/banner/banner-38.jpg differ diff --git a/src/assets/images/banner/banner-39.jpg b/src/assets/images/banner/banner-39.jpg new file mode 100644 index 0000000..37f4055 Binary files /dev/null and b/src/assets/images/banner/banner-39.jpg differ diff --git a/src/assets/images/banner/banner-4.jpg b/src/assets/images/banner/banner-4.jpg new file mode 100644 index 0000000..bbcfe4a Binary files /dev/null and b/src/assets/images/banner/banner-4.jpg differ diff --git a/src/assets/images/banner/banner-40.jpg b/src/assets/images/banner/banner-40.jpg new file mode 100644 index 0000000..75244ba Binary files /dev/null and b/src/assets/images/banner/banner-40.jpg differ diff --git a/src/assets/images/banner/banner-5.jpg b/src/assets/images/banner/banner-5.jpg new file mode 100644 index 0000000..9dc5dc7 Binary files /dev/null and b/src/assets/images/banner/banner-5.jpg differ diff --git a/src/assets/images/banner/banner-6.jpg b/src/assets/images/banner/banner-6.jpg new file mode 100644 index 0000000..602d193 Binary files /dev/null and b/src/assets/images/banner/banner-6.jpg differ diff --git a/src/assets/images/banner/banner-7.jpg b/src/assets/images/banner/banner-7.jpg new file mode 100644 index 0000000..d274815 Binary files /dev/null and b/src/assets/images/banner/banner-7.jpg differ diff --git a/src/assets/images/banner/banner-8.jpg b/src/assets/images/banner/banner-8.jpg new file mode 100644 index 0000000..7c19f2d Binary files /dev/null and b/src/assets/images/banner/banner-8.jpg differ diff --git a/src/assets/images/banner/banner-9.jpg b/src/assets/images/banner/banner-9.jpg new file mode 100644 index 0000000..f0f16e2 Binary files /dev/null and b/src/assets/images/banner/banner-9.jpg differ diff --git a/src/assets/images/banner/parallax-4.jpg b/src/assets/images/banner/parallax-4.jpg new file mode 100644 index 0000000..205ba16 Binary files /dev/null and b/src/assets/images/banner/parallax-4.jpg differ diff --git a/src/assets/images/carousel/01.jpg b/src/assets/images/carousel/01.jpg new file mode 100644 index 0000000..ca2520a Binary files /dev/null and b/src/assets/images/carousel/01.jpg differ diff --git a/src/assets/images/carousel/02.jpg b/src/assets/images/carousel/02.jpg new file mode 100644 index 0000000..4e6c114 Binary files /dev/null and b/src/assets/images/carousel/02.jpg differ diff --git a/src/assets/images/carousel/03.jpg b/src/assets/images/carousel/03.jpg new file mode 100644 index 0000000..38dc9bd Binary files /dev/null and b/src/assets/images/carousel/03.jpg differ diff --git a/src/assets/images/carousel/04.jpg b/src/assets/images/carousel/04.jpg new file mode 100644 index 0000000..d9b5449 Binary files /dev/null and b/src/assets/images/carousel/04.jpg differ diff --git a/src/assets/images/carousel/05.jpg b/src/assets/images/carousel/05.jpg new file mode 100644 index 0000000..0109b76 Binary files /dev/null and b/src/assets/images/carousel/05.jpg differ diff --git a/src/assets/images/carousel/06.jpg b/src/assets/images/carousel/06.jpg new file mode 100644 index 0000000..c3edef3 Binary files /dev/null and b/src/assets/images/carousel/06.jpg differ diff --git a/src/assets/images/carousel/07.jpg b/src/assets/images/carousel/07.jpg new file mode 100644 index 0000000..ac08281 Binary files /dev/null and b/src/assets/images/carousel/07.jpg differ diff --git a/src/assets/images/carousel/08.jpg b/src/assets/images/carousel/08.jpg new file mode 100644 index 0000000..9f32e2e Binary files /dev/null and b/src/assets/images/carousel/08.jpg differ diff --git a/src/assets/images/carousel/09.jpg b/src/assets/images/carousel/09.jpg new file mode 100644 index 0000000..d280cdc Binary files /dev/null and b/src/assets/images/carousel/09.jpg differ diff --git a/src/assets/images/carousel/10.jpg b/src/assets/images/carousel/10.jpg new file mode 100644 index 0000000..a62e3a6 Binary files /dev/null and b/src/assets/images/carousel/10.jpg differ diff --git a/src/assets/images/carousel/11.jpg b/src/assets/images/carousel/11.jpg new file mode 100644 index 0000000..6ae896f Binary files /dev/null and b/src/assets/images/carousel/11.jpg differ diff --git a/src/assets/images/carousel/12.jpg b/src/assets/images/carousel/12.jpg new file mode 100644 index 0000000..69c62dc Binary files /dev/null and b/src/assets/images/carousel/12.jpg differ diff --git a/src/assets/images/carousel/13.jpg b/src/assets/images/carousel/13.jpg new file mode 100644 index 0000000..fe9ac78 Binary files /dev/null and b/src/assets/images/carousel/13.jpg differ diff --git a/src/assets/images/carousel/14.jpg b/src/assets/images/carousel/14.jpg new file mode 100644 index 0000000..fd86f61 Binary files /dev/null and b/src/assets/images/carousel/14.jpg differ diff --git a/src/assets/images/carousel/15.jpg b/src/assets/images/carousel/15.jpg new file mode 100644 index 0000000..739f874 Binary files /dev/null and b/src/assets/images/carousel/15.jpg differ diff --git a/src/assets/images/carousel/16.jpg b/src/assets/images/carousel/16.jpg new file mode 100644 index 0000000..b359ff4 Binary files /dev/null and b/src/assets/images/carousel/16.jpg differ diff --git a/src/assets/images/carousel/17.jpg b/src/assets/images/carousel/17.jpg new file mode 100644 index 0000000..a8d45d5 Binary files /dev/null and b/src/assets/images/carousel/17.jpg differ diff --git a/src/assets/images/carousel/18.jpg b/src/assets/images/carousel/18.jpg new file mode 100644 index 0000000..ed16394 Binary files /dev/null and b/src/assets/images/carousel/18.jpg differ diff --git a/src/assets/images/carousel/19.jpg b/src/assets/images/carousel/19.jpg new file mode 100644 index 0000000..132c97c Binary files /dev/null and b/src/assets/images/carousel/19.jpg differ diff --git a/src/assets/images/carousel/20.jpg b/src/assets/images/carousel/20.jpg new file mode 100644 index 0000000..be2afb0 Binary files /dev/null and b/src/assets/images/carousel/20.jpg differ diff --git a/src/assets/images/carousel/21.jpg b/src/assets/images/carousel/21.jpg new file mode 100644 index 0000000..a9fb772 Binary files /dev/null and b/src/assets/images/carousel/21.jpg differ diff --git a/src/assets/images/carousel/22.jpg b/src/assets/images/carousel/22.jpg new file mode 100644 index 0000000..996df97 Binary files /dev/null and b/src/assets/images/carousel/22.jpg differ diff --git a/src/assets/images/carousel/23.jpg b/src/assets/images/carousel/23.jpg new file mode 100644 index 0000000..7588c6b Binary files /dev/null and b/src/assets/images/carousel/23.jpg differ diff --git a/src/assets/images/carousel/24.png b/src/assets/images/carousel/24.png new file mode 100644 index 0000000..3090f2d Binary files /dev/null and b/src/assets/images/carousel/24.png differ diff --git a/src/assets/images/carousel/25.jpg b/src/assets/images/carousel/25.jpg new file mode 100644 index 0000000..2b67abd Binary files /dev/null and b/src/assets/images/carousel/25.jpg differ diff --git a/src/assets/images/carousel/26.jpg b/src/assets/images/carousel/26.jpg new file mode 100644 index 0000000..1d3246c Binary files /dev/null and b/src/assets/images/carousel/26.jpg differ diff --git a/src/assets/images/carousel/27.jpg b/src/assets/images/carousel/27.jpg new file mode 100644 index 0000000..a69a240 Binary files /dev/null and b/src/assets/images/carousel/27.jpg differ diff --git a/src/assets/images/carousel/28.jpg b/src/assets/images/carousel/28.jpg new file mode 100644 index 0000000..cbb5ba1 Binary files /dev/null and b/src/assets/images/carousel/28.jpg differ diff --git a/src/assets/images/carousel/29.png b/src/assets/images/carousel/29.png new file mode 100644 index 0000000..da4980b Binary files /dev/null and b/src/assets/images/carousel/29.png differ diff --git a/src/assets/images/carousel/30.jpg b/src/assets/images/carousel/30.jpg new file mode 100644 index 0000000..39289f6 Binary files /dev/null and b/src/assets/images/carousel/30.jpg differ diff --git a/src/assets/images/carousel/31.jpg b/src/assets/images/carousel/31.jpg new file mode 100644 index 0000000..8aa2b8a Binary files /dev/null and b/src/assets/images/carousel/31.jpg differ diff --git a/src/assets/images/crop-pic.jpg b/src/assets/images/crop-pic.jpg new file mode 100644 index 0000000..c3a881e Binary files /dev/null and b/src/assets/images/crop-pic.jpg differ diff --git a/src/assets/images/doc-images/modern-build-process.png b/src/assets/images/doc-images/modern-build-process.png new file mode 100644 index 0000000..30b9e8c Binary files /dev/null and b/src/assets/images/doc-images/modern-build-process.png differ diff --git a/src/assets/images/elements/01.png b/src/assets/images/elements/01.png new file mode 100644 index 0000000..a823798 Binary files /dev/null and b/src/assets/images/elements/01.png differ diff --git a/src/assets/images/elements/03.png b/src/assets/images/elements/03.png new file mode 100644 index 0000000..12efe6d Binary files /dev/null and b/src/assets/images/elements/03.png differ diff --git a/src/assets/images/elements/04.png b/src/assets/images/elements/04.png new file mode 100644 index 0000000..3feea0c Binary files /dev/null and b/src/assets/images/elements/04.png differ diff --git a/src/assets/images/elements/06.png b/src/assets/images/elements/06.png new file mode 100644 index 0000000..ac76252 Binary files /dev/null and b/src/assets/images/elements/06.png differ diff --git a/src/assets/images/elements/07.png b/src/assets/images/elements/07.png new file mode 100644 index 0000000..c0c993d Binary files /dev/null and b/src/assets/images/elements/07.png differ diff --git a/src/assets/images/elements/08.png b/src/assets/images/elements/08.png new file mode 100644 index 0000000..6da6171 Binary files /dev/null and b/src/assets/images/elements/08.png differ diff --git a/src/assets/images/elements/09.png b/src/assets/images/elements/09.png new file mode 100644 index 0000000..3b82318 Binary files /dev/null and b/src/assets/images/elements/09.png differ diff --git a/src/assets/images/elements/10.png b/src/assets/images/elements/10.png new file mode 100644 index 0000000..a460e8b Binary files /dev/null and b/src/assets/images/elements/10.png differ diff --git a/src/assets/images/elements/11.png b/src/assets/images/elements/11.png new file mode 100644 index 0000000..ceffe6d Binary files /dev/null and b/src/assets/images/elements/11.png differ diff --git a/src/assets/images/elements/12.png b/src/assets/images/elements/12.png new file mode 100644 index 0000000..a05ed68 Binary files /dev/null and b/src/assets/images/elements/12.png differ diff --git a/src/assets/images/elements/13.png b/src/assets/images/elements/13.png new file mode 100644 index 0000000..5bd3928 Binary files /dev/null and b/src/assets/images/elements/13.png differ diff --git a/src/assets/images/elements/14.png b/src/assets/images/elements/14.png new file mode 100644 index 0000000..47ea5d4 Binary files /dev/null and b/src/assets/images/elements/14.png differ diff --git a/src/assets/images/elements/air-jordan.png b/src/assets/images/elements/air-jordan.png new file mode 100644 index 0000000..1b5ad5b Binary files /dev/null and b/src/assets/images/elements/air-jordan.png differ diff --git a/src/assets/images/elements/apple-watch.png b/src/assets/images/elements/apple-watch.png new file mode 100644 index 0000000..2849abe Binary files /dev/null and b/src/assets/images/elements/apple-watch.png differ diff --git a/src/assets/images/elements/fitbit-watch.png b/src/assets/images/elements/fitbit-watch.png new file mode 100644 index 0000000..7afe1df Binary files /dev/null and b/src/assets/images/elements/fitbit-watch.png differ diff --git a/src/assets/images/elements/samsung-gear.png b/src/assets/images/elements/samsung-gear.png new file mode 100644 index 0000000..008b710 Binary files /dev/null and b/src/assets/images/elements/samsung-gear.png differ diff --git a/src/assets/images/elements/vr.png b/src/assets/images/elements/vr.png new file mode 100644 index 0000000..6f96fb3 Binary files /dev/null and b/src/assets/images/elements/vr.png differ diff --git a/src/assets/images/flags/ak.png b/src/assets/images/flags/ak.png new file mode 100644 index 0000000..d79dc4f Binary files /dev/null and b/src/assets/images/flags/ak.png differ diff --git a/src/assets/images/flags/al.png b/src/assets/images/flags/al.png new file mode 100644 index 0000000..a729794 Binary files /dev/null and b/src/assets/images/flags/al.png differ diff --git a/src/assets/images/flags/ar.png b/src/assets/images/flags/ar.png new file mode 100644 index 0000000..6357a8f Binary files /dev/null and b/src/assets/images/flags/ar.png differ diff --git a/src/assets/images/flags/az.png b/src/assets/images/flags/az.png new file mode 100644 index 0000000..b6d8aae Binary files /dev/null and b/src/assets/images/flags/az.png differ diff --git a/src/assets/images/flags/ca.png b/src/assets/images/flags/ca.png new file mode 100644 index 0000000..9d6d955 Binary files /dev/null and b/src/assets/images/flags/ca.png differ diff --git a/src/assets/images/flags/co.png b/src/assets/images/flags/co.png new file mode 100644 index 0000000..888e830 Binary files /dev/null and b/src/assets/images/flags/co.png differ diff --git a/src/assets/images/flags/ct.png b/src/assets/images/flags/ct.png new file mode 100644 index 0000000..a953918 Binary files /dev/null and b/src/assets/images/flags/ct.png differ diff --git a/src/assets/images/flags/de.png b/src/assets/images/flags/de.png new file mode 100644 index 0000000..1bfb3ba Binary files /dev/null and b/src/assets/images/flags/de.png differ diff --git a/src/assets/images/flags/fl.png b/src/assets/images/flags/fl.png new file mode 100644 index 0000000..199a2f1 Binary files /dev/null and b/src/assets/images/flags/fl.png differ diff --git a/src/assets/images/flags/ga.png b/src/assets/images/flags/ga.png new file mode 100644 index 0000000..03f52bb Binary files /dev/null and b/src/assets/images/flags/ga.png differ diff --git a/src/assets/images/flags/hi.png b/src/assets/images/flags/hi.png new file mode 100644 index 0000000..36de7a5 Binary files /dev/null and b/src/assets/images/flags/hi.png differ diff --git a/src/assets/images/flags/ia.png b/src/assets/images/flags/ia.png new file mode 100644 index 0000000..c2c4cf0 Binary files /dev/null and b/src/assets/images/flags/ia.png differ diff --git a/src/assets/images/flags/id.png b/src/assets/images/flags/id.png new file mode 100644 index 0000000..bfbf897 Binary files /dev/null and b/src/assets/images/flags/id.png differ diff --git a/src/assets/images/flags/il.png b/src/assets/images/flags/il.png new file mode 100644 index 0000000..5c13e67 Binary files /dev/null and b/src/assets/images/flags/il.png differ diff --git a/src/assets/images/flags/in.png b/src/assets/images/flags/in.png new file mode 100644 index 0000000..5952580 Binary files /dev/null and b/src/assets/images/flags/in.png differ diff --git a/src/assets/images/flags/ks.png b/src/assets/images/flags/ks.png new file mode 100644 index 0000000..9190b24 Binary files /dev/null and b/src/assets/images/flags/ks.png differ diff --git a/src/assets/images/flags/ky.png b/src/assets/images/flags/ky.png new file mode 100644 index 0000000..5c8d0ca Binary files /dev/null and b/src/assets/images/flags/ky.png differ diff --git a/src/assets/images/flags/la.png b/src/assets/images/flags/la.png new file mode 100644 index 0000000..3f2c478 Binary files /dev/null and b/src/assets/images/flags/la.png differ diff --git a/src/assets/images/flags/ma.png b/src/assets/images/flags/ma.png new file mode 100644 index 0000000..a502081 Binary files /dev/null and b/src/assets/images/flags/ma.png differ diff --git a/src/assets/images/flags/md.png b/src/assets/images/flags/md.png new file mode 100644 index 0000000..1717a26 Binary files /dev/null and b/src/assets/images/flags/md.png differ diff --git a/src/assets/images/flags/me.png b/src/assets/images/flags/me.png new file mode 100644 index 0000000..7e696f3 Binary files /dev/null and b/src/assets/images/flags/me.png differ diff --git a/src/assets/images/flags/mi.png b/src/assets/images/flags/mi.png new file mode 100644 index 0000000..49494fc Binary files /dev/null and b/src/assets/images/flags/mi.png differ diff --git a/src/assets/images/flags/mn.png b/src/assets/images/flags/mn.png new file mode 100644 index 0000000..602f36b Binary files /dev/null and b/src/assets/images/flags/mn.png differ diff --git a/src/assets/images/flags/mo.png b/src/assets/images/flags/mo.png new file mode 100644 index 0000000..413ea1a Binary files /dev/null and b/src/assets/images/flags/mo.png differ diff --git a/src/assets/images/flags/ms.png b/src/assets/images/flags/ms.png new file mode 100644 index 0000000..d3e4a1c Binary files /dev/null and b/src/assets/images/flags/ms.png differ diff --git a/src/assets/images/flags/mt.png b/src/assets/images/flags/mt.png new file mode 100644 index 0000000..6822acb Binary files /dev/null and b/src/assets/images/flags/mt.png differ diff --git a/src/assets/images/flags/nc.png b/src/assets/images/flags/nc.png new file mode 100644 index 0000000..9555820 Binary files /dev/null and b/src/assets/images/flags/nc.png differ diff --git a/src/assets/images/flags/nd.png b/src/assets/images/flags/nd.png new file mode 100644 index 0000000..87e401c Binary files /dev/null and b/src/assets/images/flags/nd.png differ diff --git a/src/assets/images/flags/ne.png b/src/assets/images/flags/ne.png new file mode 100644 index 0000000..a69e15f Binary files /dev/null and b/src/assets/images/flags/ne.png differ diff --git a/src/assets/images/flags/nh.png b/src/assets/images/flags/nh.png new file mode 100644 index 0000000..d6ad1cb Binary files /dev/null and b/src/assets/images/flags/nh.png differ diff --git a/src/assets/images/flags/nj.png b/src/assets/images/flags/nj.png new file mode 100644 index 0000000..f2c6466 Binary files /dev/null and b/src/assets/images/flags/nj.png differ diff --git a/src/assets/images/flags/nm.png b/src/assets/images/flags/nm.png new file mode 100644 index 0000000..c273181 Binary files /dev/null and b/src/assets/images/flags/nm.png differ diff --git a/src/assets/images/flags/nv.png b/src/assets/images/flags/nv.png new file mode 100644 index 0000000..8f1a855 Binary files /dev/null and b/src/assets/images/flags/nv.png differ diff --git a/src/assets/images/flags/ny.png b/src/assets/images/flags/ny.png new file mode 100644 index 0000000..794b86e Binary files /dev/null and b/src/assets/images/flags/ny.png differ diff --git a/src/assets/images/flags/oh.png b/src/assets/images/flags/oh.png new file mode 100644 index 0000000..08601a6 Binary files /dev/null and b/src/assets/images/flags/oh.png differ diff --git a/src/assets/images/flags/ok.png b/src/assets/images/flags/ok.png new file mode 100644 index 0000000..543be91 Binary files /dev/null and b/src/assets/images/flags/ok.png differ diff --git a/src/assets/images/flags/or.png b/src/assets/images/flags/or.png new file mode 100644 index 0000000..846b4a6 Binary files /dev/null and b/src/assets/images/flags/or.png differ diff --git a/src/assets/images/flags/pa.png b/src/assets/images/flags/pa.png new file mode 100644 index 0000000..55f6c0f Binary files /dev/null and b/src/assets/images/flags/pa.png differ diff --git a/src/assets/images/flags/ri.png b/src/assets/images/flags/ri.png new file mode 100644 index 0000000..5cece5d Binary files /dev/null and b/src/assets/images/flags/ri.png differ diff --git a/src/assets/images/flags/sc.png b/src/assets/images/flags/sc.png new file mode 100644 index 0000000..9e39303 Binary files /dev/null and b/src/assets/images/flags/sc.png differ diff --git a/src/assets/images/flags/sd.png b/src/assets/images/flags/sd.png new file mode 100644 index 0000000..154618f Binary files /dev/null and b/src/assets/images/flags/sd.png differ diff --git a/src/assets/images/flags/tn.png b/src/assets/images/flags/tn.png new file mode 100644 index 0000000..321b48c Binary files /dev/null and b/src/assets/images/flags/tn.png differ diff --git a/src/assets/images/flags/tx.png b/src/assets/images/flags/tx.png new file mode 100644 index 0000000..0914b31 Binary files /dev/null and b/src/assets/images/flags/tx.png differ diff --git a/src/assets/images/flags/ut.png b/src/assets/images/flags/ut.png new file mode 100644 index 0000000..7a01ae6 Binary files /dev/null and b/src/assets/images/flags/ut.png differ diff --git a/src/assets/images/flags/va.png b/src/assets/images/flags/va.png new file mode 100644 index 0000000..ce58c01 Binary files /dev/null and b/src/assets/images/flags/va.png differ diff --git a/src/assets/images/flags/vt.png b/src/assets/images/flags/vt.png new file mode 100644 index 0000000..fe1b19f Binary files /dev/null and b/src/assets/images/flags/vt.png differ diff --git a/src/assets/images/flags/wa.png b/src/assets/images/flags/wa.png new file mode 100644 index 0000000..0c0d8f0 Binary files /dev/null and b/src/assets/images/flags/wa.png differ diff --git a/src/assets/images/flags/wi.png b/src/assets/images/flags/wi.png new file mode 100644 index 0000000..2569f17 Binary files /dev/null and b/src/assets/images/flags/wi.png differ diff --git a/src/assets/images/flags/wv.png b/src/assets/images/flags/wv.png new file mode 100644 index 0000000..b403899 Binary files /dev/null and b/src/assets/images/flags/wv.png differ diff --git a/src/assets/images/flags/wy.png b/src/assets/images/flags/wy.png new file mode 100644 index 0000000..82a453c Binary files /dev/null and b/src/assets/images/flags/wy.png differ diff --git a/src/assets/images/gallery/1.jpg b/src/assets/images/gallery/1.jpg new file mode 100644 index 0000000..21afbe9 Binary files /dev/null and b/src/assets/images/gallery/1.jpg differ diff --git a/src/assets/images/gallery/10.jpg b/src/assets/images/gallery/10.jpg new file mode 100644 index 0000000..7ef9af6 Binary files /dev/null and b/src/assets/images/gallery/10.jpg differ diff --git a/src/assets/images/gallery/11.jpg b/src/assets/images/gallery/11.jpg new file mode 100644 index 0000000..f8baabb Binary files /dev/null and b/src/assets/images/gallery/11.jpg differ diff --git a/src/assets/images/gallery/12.jpg b/src/assets/images/gallery/12.jpg new file mode 100644 index 0000000..83a9967 Binary files /dev/null and b/src/assets/images/gallery/12.jpg differ diff --git a/src/assets/images/gallery/126516.svg b/src/assets/images/gallery/126516.svg new file mode 100644 index 0000000..02e491a --- /dev/null +++ b/src/assets/images/gallery/126516.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/gallery/13.jpg b/src/assets/images/gallery/13.jpg new file mode 100644 index 0000000..3c9407c Binary files /dev/null and b/src/assets/images/gallery/13.jpg differ diff --git a/src/assets/images/gallery/14.jpg b/src/assets/images/gallery/14.jpg new file mode 100644 index 0000000..cffa80a Binary files /dev/null and b/src/assets/images/gallery/14.jpg differ diff --git a/src/assets/images/gallery/15.jpg b/src/assets/images/gallery/15.jpg new file mode 100644 index 0000000..3a430e3 Binary files /dev/null and b/src/assets/images/gallery/15.jpg differ diff --git a/src/assets/images/gallery/16.jpg b/src/assets/images/gallery/16.jpg new file mode 100644 index 0000000..03f8ff9 Binary files /dev/null and b/src/assets/images/gallery/16.jpg differ diff --git a/src/assets/images/gallery/17.jpg b/src/assets/images/gallery/17.jpg new file mode 100644 index 0000000..1b14182 Binary files /dev/null and b/src/assets/images/gallery/17.jpg differ diff --git a/src/assets/images/gallery/18.jpg b/src/assets/images/gallery/18.jpg new file mode 100644 index 0000000..e781c7b Binary files /dev/null and b/src/assets/images/gallery/18.jpg differ diff --git a/src/assets/images/gallery/19.jpg b/src/assets/images/gallery/19.jpg new file mode 100644 index 0000000..5b745a6 Binary files /dev/null and b/src/assets/images/gallery/19.jpg differ diff --git a/src/assets/images/gallery/2.jpg b/src/assets/images/gallery/2.jpg new file mode 100644 index 0000000..73e0c18 Binary files /dev/null and b/src/assets/images/gallery/2.jpg differ diff --git a/src/assets/images/gallery/20.jpg b/src/assets/images/gallery/20.jpg new file mode 100644 index 0000000..ce07305 Binary files /dev/null and b/src/assets/images/gallery/20.jpg differ diff --git a/src/assets/images/gallery/21.jpg b/src/assets/images/gallery/21.jpg new file mode 100644 index 0000000..f6a999f Binary files /dev/null and b/src/assets/images/gallery/21.jpg differ diff --git a/src/assets/images/gallery/22.jpg b/src/assets/images/gallery/22.jpg new file mode 100644 index 0000000..2044b90 Binary files /dev/null and b/src/assets/images/gallery/22.jpg differ diff --git a/src/assets/images/gallery/23.jpg b/src/assets/images/gallery/23.jpg new file mode 100644 index 0000000..29a1333 Binary files /dev/null and b/src/assets/images/gallery/23.jpg differ diff --git a/src/assets/images/gallery/24.jpg b/src/assets/images/gallery/24.jpg new file mode 100644 index 0000000..20ace6e Binary files /dev/null and b/src/assets/images/gallery/24.jpg differ diff --git a/src/assets/images/gallery/25.jpg b/src/assets/images/gallery/25.jpg new file mode 100644 index 0000000..d75d6f4 Binary files /dev/null and b/src/assets/images/gallery/25.jpg differ diff --git a/src/assets/images/gallery/26.jpg b/src/assets/images/gallery/26.jpg new file mode 100644 index 0000000..3a83f46 Binary files /dev/null and b/src/assets/images/gallery/26.jpg differ diff --git a/src/assets/images/gallery/27.jpg b/src/assets/images/gallery/27.jpg new file mode 100644 index 0000000..b1078d8 Binary files /dev/null and b/src/assets/images/gallery/27.jpg differ diff --git a/src/assets/images/gallery/28.jpg b/src/assets/images/gallery/28.jpg new file mode 100644 index 0000000..fd889f7 Binary files /dev/null and b/src/assets/images/gallery/28.jpg differ diff --git a/src/assets/images/gallery/29.jpg b/src/assets/images/gallery/29.jpg new file mode 100644 index 0000000..a9242ca Binary files /dev/null and b/src/assets/images/gallery/29.jpg differ diff --git a/src/assets/images/gallery/3.jpg b/src/assets/images/gallery/3.jpg new file mode 100644 index 0000000..db4fc3f Binary files /dev/null and b/src/assets/images/gallery/3.jpg differ diff --git a/src/assets/images/gallery/30.jpg b/src/assets/images/gallery/30.jpg new file mode 100644 index 0000000..3e36926 Binary files /dev/null and b/src/assets/images/gallery/30.jpg differ diff --git a/src/assets/images/gallery/31.jpg b/src/assets/images/gallery/31.jpg new file mode 100644 index 0000000..231009e Binary files /dev/null and b/src/assets/images/gallery/31.jpg differ diff --git a/src/assets/images/gallery/32.jpg b/src/assets/images/gallery/32.jpg new file mode 100644 index 0000000..f1dd662 Binary files /dev/null and b/src/assets/images/gallery/32.jpg differ diff --git a/src/assets/images/gallery/33.jpg b/src/assets/images/gallery/33.jpg new file mode 100644 index 0000000..a224177 Binary files /dev/null and b/src/assets/images/gallery/33.jpg differ diff --git a/src/assets/images/gallery/34.png b/src/assets/images/gallery/34.png new file mode 100644 index 0000000..d1a6016 Binary files /dev/null and b/src/assets/images/gallery/34.png differ diff --git a/src/assets/images/gallery/35.png b/src/assets/images/gallery/35.png new file mode 100644 index 0000000..fa55360 Binary files /dev/null and b/src/assets/images/gallery/35.png differ diff --git a/src/assets/images/gallery/36.png b/src/assets/images/gallery/36.png new file mode 100644 index 0000000..a8cf87e Binary files /dev/null and b/src/assets/images/gallery/36.png differ diff --git a/src/assets/images/gallery/37.png b/src/assets/images/gallery/37.png new file mode 100644 index 0000000..bef4abf Binary files /dev/null and b/src/assets/images/gallery/37.png differ diff --git a/src/assets/images/gallery/38.png b/src/assets/images/gallery/38.png new file mode 100644 index 0000000..a73c426 Binary files /dev/null and b/src/assets/images/gallery/38.png differ diff --git a/src/assets/images/gallery/39.png b/src/assets/images/gallery/39.png new file mode 100644 index 0000000..1f8fe62 Binary files /dev/null and b/src/assets/images/gallery/39.png differ diff --git a/src/assets/images/gallery/4.jpg b/src/assets/images/gallery/4.jpg new file mode 100644 index 0000000..d874847 Binary files /dev/null and b/src/assets/images/gallery/4.jpg differ diff --git a/src/assets/images/gallery/40.png b/src/assets/images/gallery/40.png new file mode 100644 index 0000000..1a4465d Binary files /dev/null and b/src/assets/images/gallery/40.png differ diff --git a/src/assets/images/gallery/41.png b/src/assets/images/gallery/41.png new file mode 100644 index 0000000..2080c6d Binary files /dev/null and b/src/assets/images/gallery/41.png differ diff --git a/src/assets/images/gallery/5.jpg b/src/assets/images/gallery/5.jpg new file mode 100644 index 0000000..1791fb5 Binary files /dev/null and b/src/assets/images/gallery/5.jpg differ diff --git a/src/assets/images/gallery/6.jpg b/src/assets/images/gallery/6.jpg new file mode 100644 index 0000000..eb15c18 Binary files /dev/null and b/src/assets/images/gallery/6.jpg differ diff --git a/src/assets/images/gallery/7.jpg b/src/assets/images/gallery/7.jpg new file mode 100644 index 0000000..0f945a2 Binary files /dev/null and b/src/assets/images/gallery/7.jpg differ diff --git a/src/assets/images/gallery/8.jpg b/src/assets/images/gallery/8.jpg new file mode 100644 index 0000000..d835379 Binary files /dev/null and b/src/assets/images/gallery/8.jpg differ diff --git a/src/assets/images/gallery/9.jpg b/src/assets/images/gallery/9.jpg new file mode 100644 index 0000000..6222fc9 Binary files /dev/null and b/src/assets/images/gallery/9.jpg differ diff --git a/src/assets/images/gallery/bootstrap-material-ui-kit.jpg b/src/assets/images/gallery/bootstrap-material-ui-kit.jpg new file mode 100644 index 0000000..0bbc102 Binary files /dev/null and b/src/assets/images/gallery/bootstrap-material-ui-kit.jpg differ diff --git a/src/assets/images/gallery/dark-menu.jpg b/src/assets/images/gallery/dark-menu.jpg new file mode 100644 index 0000000..3fb9abb Binary files /dev/null and b/src/assets/images/gallery/dark-menu.jpg differ diff --git a/src/assets/images/gallery/left-menu-bg.jpg b/src/assets/images/gallery/left-menu-bg.jpg new file mode 100644 index 0000000..4899528 Binary files /dev/null and b/src/assets/images/gallery/left-menu-bg.jpg differ diff --git a/src/assets/images/gallery/party-flyer.jpg b/src/assets/images/gallery/party-flyer.jpg new file mode 100644 index 0000000..f003fef Binary files /dev/null and b/src/assets/images/gallery/party-flyer.jpg differ diff --git a/src/assets/images/gallery/timeline.jpg b/src/assets/images/gallery/timeline.jpg new file mode 100644 index 0000000..cd41978 Binary files /dev/null and b/src/assets/images/gallery/timeline.jpg differ diff --git a/src/assets/images/ico/apple-icon-120.png b/src/assets/images/ico/apple-icon-120.png new file mode 100644 index 0000000..6ded3cb Binary files /dev/null and b/src/assets/images/ico/apple-icon-120.png differ diff --git a/src/assets/images/ico/apple-icon-152.png b/src/assets/images/ico/apple-icon-152.png new file mode 100644 index 0000000..4766697 Binary files /dev/null and b/src/assets/images/ico/apple-icon-152.png differ diff --git a/src/assets/images/ico/apple-icon-60.png b/src/assets/images/ico/apple-icon-60.png new file mode 100644 index 0000000..139762a Binary files /dev/null and b/src/assets/images/ico/apple-icon-60.png differ diff --git a/src/assets/images/ico/apple-icon-76.png b/src/assets/images/ico/apple-icon-76.png new file mode 100644 index 0000000..75dcf2c Binary files /dev/null and b/src/assets/images/ico/apple-icon-76.png differ diff --git a/src/assets/images/ico/favicon-32.png b/src/assets/images/ico/favicon-32.png new file mode 100644 index 0000000..47d8e41 Binary files /dev/null and b/src/assets/images/ico/favicon-32.png differ diff --git a/src/assets/images/ico/favicon.ico b/src/assets/images/ico/favicon.ico new file mode 100644 index 0000000..281b83d Binary files /dev/null and b/src/assets/images/ico/favicon.ico differ diff --git a/src/assets/images/icons/blue.png b/src/assets/images/icons/blue.png new file mode 100644 index 0000000..a3e040f Binary files /dev/null and b/src/assets/images/icons/blue.png differ diff --git a/src/assets/images/icons/ie.png b/src/assets/images/icons/ie.png new file mode 100644 index 0000000..5050299 Binary files /dev/null and b/src/assets/images/icons/ie.png differ diff --git a/src/assets/images/icons/img.png b/src/assets/images/icons/img.png new file mode 100644 index 0000000..022c721 Binary files /dev/null and b/src/assets/images/icons/img.png differ diff --git a/src/assets/images/icons/loading.gif b/src/assets/images/icons/loading.gif new file mode 100644 index 0000000..90f28cb Binary files /dev/null and b/src/assets/images/icons/loading.gif differ diff --git a/src/assets/images/icons/ltc.png b/src/assets/images/icons/ltc.png new file mode 100644 index 0000000..72e48ee Binary files /dev/null and b/src/assets/images/icons/ltc.png differ diff --git a/src/assets/images/icons/nike.png b/src/assets/images/icons/nike.png new file mode 100644 index 0000000..02d0d9d Binary files /dev/null and b/src/assets/images/icons/nike.png differ diff --git a/src/assets/images/icons/opera.png b/src/assets/images/icons/opera.png new file mode 100644 index 0000000..7844a57 Binary files /dev/null and b/src/assets/images/icons/opera.png differ diff --git a/src/assets/images/icons/play-pause.png b/src/assets/images/icons/play-pause.png new file mode 100644 index 0000000..ece6cfb Binary files /dev/null and b/src/assets/images/icons/play-pause.png differ diff --git a/src/assets/images/icons/play-pause.svg b/src/assets/images/icons/play-pause.svg new file mode 100644 index 0000000..a7f1f50 --- /dev/null +++ b/src/assets/images/icons/play-pause.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/icons/progressbar.gif b/src/assets/images/icons/progressbar.gif new file mode 100644 index 0000000..fbcce6b Binary files /dev/null and b/src/assets/images/icons/progressbar.gif differ diff --git a/src/assets/images/icons/psd.png b/src/assets/images/icons/psd.png new file mode 100644 index 0000000..c23b160 Binary files /dev/null and b/src/assets/images/icons/psd.png differ diff --git a/src/assets/images/icons/repo-forked.png b/src/assets/images/icons/repo-forked.png new file mode 100644 index 0000000..e2a4ab9 Binary files /dev/null and b/src/assets/images/icons/repo-forked.png differ diff --git a/src/assets/images/icons/repo-source.png b/src/assets/images/icons/repo-source.png new file mode 100644 index 0000000..c402ac4 Binary files /dev/null and b/src/assets/images/icons/repo-source.png differ diff --git a/src/assets/images/icons/sketch.png b/src/assets/images/icons/sketch.png new file mode 100644 index 0000000..ef378b4 Binary files /dev/null and b/src/assets/images/icons/sketch.png differ diff --git a/src/assets/images/icons/spinner.gif b/src/assets/images/icons/spinner.gif new file mode 100644 index 0000000..3288d10 Binary files /dev/null and b/src/assets/images/icons/spinner.gif differ diff --git a/src/assets/images/icons/textarea-expand.png b/src/assets/images/icons/textarea-expand.png new file mode 100644 index 0000000..def673a Binary files /dev/null and b/src/assets/images/icons/textarea-expand.png differ diff --git a/src/assets/images/icons/twitter-avatar1.png b/src/assets/images/icons/twitter-avatar1.png new file mode 100644 index 0000000..465abcd Binary files /dev/null and b/src/assets/images/icons/twitter-avatar1.png differ diff --git a/src/assets/images/icons/video-play.svg b/src/assets/images/icons/video-play.svg new file mode 100644 index 0000000..b5ea206 --- /dev/null +++ b/src/assets/images/icons/video-play.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/jvqmap/marker/black.png b/src/assets/images/jvqmap/marker/black.png new file mode 100644 index 0000000..6c46d70 Binary files /dev/null and b/src/assets/images/jvqmap/marker/black.png differ diff --git a/src/assets/images/jvqmap/marker/blue.png b/src/assets/images/jvqmap/marker/blue.png new file mode 100644 index 0000000..855e3a2 Binary files /dev/null and b/src/assets/images/jvqmap/marker/blue.png differ diff --git a/src/assets/images/jvqmap/marker/green.png b/src/assets/images/jvqmap/marker/green.png new file mode 100644 index 0000000..5e5d557 Binary files /dev/null and b/src/assets/images/jvqmap/marker/green.png differ diff --git a/src/assets/images/jvqmap/marker/grey.png b/src/assets/images/jvqmap/marker/grey.png new file mode 100644 index 0000000..260039d Binary files /dev/null and b/src/assets/images/jvqmap/marker/grey.png differ diff --git a/src/assets/images/jvqmap/marker/orange.png b/src/assets/images/jvqmap/marker/orange.png new file mode 100644 index 0000000..46ebd9e Binary files /dev/null and b/src/assets/images/jvqmap/marker/orange.png differ diff --git a/src/assets/images/jvqmap/marker/purple.png b/src/assets/images/jvqmap/marker/purple.png new file mode 100644 index 0000000..bf76de3 Binary files /dev/null and b/src/assets/images/jvqmap/marker/purple.png differ diff --git a/src/assets/images/jvqmap/marker/red.png b/src/assets/images/jvqmap/marker/red.png new file mode 100644 index 0000000..7b410b9 Binary files /dev/null and b/src/assets/images/jvqmap/marker/red.png differ diff --git a/src/assets/images/jvqmap/marker/white.png b/src/assets/images/jvqmap/marker/white.png new file mode 100644 index 0000000..6f48c08 Binary files /dev/null and b/src/assets/images/jvqmap/marker/white.png differ diff --git a/src/assets/images/jvqmap/marker/yellow.png b/src/assets/images/jvqmap/marker/yellow.png new file mode 100644 index 0000000..882cd53 Binary files /dev/null and b/src/assets/images/jvqmap/marker/yellow.png differ diff --git a/src/assets/images/logo/logo-80x80.png b/src/assets/images/logo/logo-80x80.png new file mode 100644 index 0000000..09dbd72 Binary files /dev/null and b/src/assets/images/logo/logo-80x80.png differ diff --git a/src/assets/images/logo/logo-dark-lg.png b/src/assets/images/logo/logo-dark-lg.png new file mode 100644 index 0000000..087d418 Binary files /dev/null and b/src/assets/images/logo/logo-dark-lg.png differ diff --git a/src/assets/images/logo/logo-dark.png b/src/assets/images/logo/logo-dark.png new file mode 100644 index 0000000..fe6312c Binary files /dev/null and b/src/assets/images/logo/logo-dark.png differ diff --git a/src/assets/images/logo/logo-light-is-logo.png b/src/assets/images/logo/logo-light-is-logo.png new file mode 100644 index 0000000..09dbd72 Binary files /dev/null and b/src/assets/images/logo/logo-light-is-logo.png differ diff --git a/src/assets/images/logo/logo-light-lg.png b/src/assets/images/logo/logo-light-lg.png new file mode 100644 index 0000000..6e92e45 Binary files /dev/null and b/src/assets/images/logo/logo-light-lg.png differ diff --git a/src/assets/images/logo/logo-light.png b/src/assets/images/logo/logo-light.png new file mode 100644 index 0000000..2d0e24c Binary files /dev/null and b/src/assets/images/logo/logo-light.png differ diff --git a/src/assets/images/logo/logo.png b/src/assets/images/logo/logo.png new file mode 100644 index 0000000..09dbd72 Binary files /dev/null and b/src/assets/images/logo/logo.png differ diff --git a/src/assets/images/pages/fitness-shoes.jpg b/src/assets/images/pages/fitness-shoes.jpg new file mode 100644 index 0000000..039259d Binary files /dev/null and b/src/assets/images/pages/fitness-shoes.jpg differ diff --git a/src/assets/images/pages/signature-scan.png b/src/assets/images/pages/signature-scan.png new file mode 100644 index 0000000..0718344 Binary files /dev/null and b/src/assets/images/pages/signature-scan.png differ diff --git a/src/assets/images/portfolio/portfolio-1.jpg b/src/assets/images/portfolio/portfolio-1.jpg new file mode 100644 index 0000000..f52df40 Binary files /dev/null and b/src/assets/images/portfolio/portfolio-1.jpg differ diff --git a/src/assets/images/portfolio/portfolio-2.jpg b/src/assets/images/portfolio/portfolio-2.jpg new file mode 100644 index 0000000..beedf12 Binary files /dev/null and b/src/assets/images/portfolio/portfolio-2.jpg differ diff --git a/src/assets/images/portfolio/portfolio-3.jpg b/src/assets/images/portfolio/portfolio-3.jpg new file mode 100644 index 0000000..70b281f Binary files /dev/null and b/src/assets/images/portfolio/portfolio-3.jpg differ diff --git a/src/assets/images/portfolio/portfolio-4.jpg b/src/assets/images/portfolio/portfolio-4.jpg new file mode 100644 index 0000000..c630721 Binary files /dev/null and b/src/assets/images/portfolio/portfolio-4.jpg differ diff --git a/src/assets/images/portfolio/portfolio-5.jpg b/src/assets/images/portfolio/portfolio-5.jpg new file mode 100644 index 0000000..eba8f62 Binary files /dev/null and b/src/assets/images/portfolio/portfolio-5.jpg differ diff --git a/src/assets/images/portfolio/portfolio-6.jpg b/src/assets/images/portfolio/portfolio-6.jpg new file mode 100644 index 0000000..ca4425a Binary files /dev/null and b/src/assets/images/portfolio/portfolio-6.jpg differ diff --git a/src/assets/images/portfolio/width-1200/portfolio-1.jpg b/src/assets/images/portfolio/width-1200/portfolio-1.jpg new file mode 100644 index 0000000..f7dcd22 Binary files /dev/null and b/src/assets/images/portfolio/width-1200/portfolio-1.jpg differ diff --git a/src/assets/images/portfolio/width-1200/portfolio-2.jpg b/src/assets/images/portfolio/width-1200/portfolio-2.jpg new file mode 100644 index 0000000..69cafc8 Binary files /dev/null and b/src/assets/images/portfolio/width-1200/portfolio-2.jpg differ diff --git a/src/assets/images/portfolio/width-1200/portfolio-3.jpg b/src/assets/images/portfolio/width-1200/portfolio-3.jpg new file mode 100644 index 0000000..8ac2398 Binary files /dev/null and b/src/assets/images/portfolio/width-1200/portfolio-3.jpg differ diff --git a/src/assets/images/portfolio/width-1200/portfolio-4.jpg b/src/assets/images/portfolio/width-1200/portfolio-4.jpg new file mode 100644 index 0000000..4a54f5a Binary files /dev/null and b/src/assets/images/portfolio/width-1200/portfolio-4.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-1.jpg b/src/assets/images/portfolio/width-600/portfolio-1.jpg new file mode 100644 index 0000000..66f7fd9 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-1.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-10.jpg b/src/assets/images/portfolio/width-600/portfolio-10.jpg new file mode 100644 index 0000000..0cde3db Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-10.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-11.jpg b/src/assets/images/portfolio/width-600/portfolio-11.jpg new file mode 100644 index 0000000..b871e56 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-11.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-12.jpg b/src/assets/images/portfolio/width-600/portfolio-12.jpg new file mode 100644 index 0000000..22db6ab Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-12.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-13.jpg b/src/assets/images/portfolio/width-600/portfolio-13.jpg new file mode 100644 index 0000000..e5f7d03 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-13.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-14.jpg b/src/assets/images/portfolio/width-600/portfolio-14.jpg new file mode 100644 index 0000000..cb262a3 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-14.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-15.jpg b/src/assets/images/portfolio/width-600/portfolio-15.jpg new file mode 100644 index 0000000..0de3d67 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-15.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-16.jpg b/src/assets/images/portfolio/width-600/portfolio-16.jpg new file mode 100644 index 0000000..336bc68 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-16.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-17.jpg b/src/assets/images/portfolio/width-600/portfolio-17.jpg new file mode 100644 index 0000000..0bb865f Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-17.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-18.jpg b/src/assets/images/portfolio/width-600/portfolio-18.jpg new file mode 100644 index 0000000..336cc7e Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-18.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-19.jpg b/src/assets/images/portfolio/width-600/portfolio-19.jpg new file mode 100644 index 0000000..8939538 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-19.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-2.jpg b/src/assets/images/portfolio/width-600/portfolio-2.jpg new file mode 100644 index 0000000..8270205 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-2.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-20.jpg b/src/assets/images/portfolio/width-600/portfolio-20.jpg new file mode 100644 index 0000000..25fdd7e Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-20.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-21.jpg b/src/assets/images/portfolio/width-600/portfolio-21.jpg new file mode 100644 index 0000000..08c5a3f Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-21.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-22.jpg b/src/assets/images/portfolio/width-600/portfolio-22.jpg new file mode 100644 index 0000000..79f67bc Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-22.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-23.jpg b/src/assets/images/portfolio/width-600/portfolio-23.jpg new file mode 100644 index 0000000..6c0f4b4 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-23.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-24.jpg b/src/assets/images/portfolio/width-600/portfolio-24.jpg new file mode 100644 index 0000000..7bd9a2a Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-24.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-25.jpg b/src/assets/images/portfolio/width-600/portfolio-25.jpg new file mode 100644 index 0000000..568eace Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-25.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-26.jpg b/src/assets/images/portfolio/width-600/portfolio-26.jpg new file mode 100644 index 0000000..edc77ad Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-26.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-27.jpg b/src/assets/images/portfolio/width-600/portfolio-27.jpg new file mode 100644 index 0000000..15dcd51 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-27.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-3.jpg b/src/assets/images/portfolio/width-600/portfolio-3.jpg new file mode 100644 index 0000000..755ef90 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-3.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-4.jpg b/src/assets/images/portfolio/width-600/portfolio-4.jpg new file mode 100644 index 0000000..290bed7 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-4.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-5.jpg b/src/assets/images/portfolio/width-600/portfolio-5.jpg new file mode 100644 index 0000000..a095e80 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-5.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-6.jpg b/src/assets/images/portfolio/width-600/portfolio-6.jpg new file mode 100644 index 0000000..c4859b0 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-6.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-7.jpg b/src/assets/images/portfolio/width-600/portfolio-7.jpg new file mode 100644 index 0000000..a35ec44 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-7.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-8.jpg b/src/assets/images/portfolio/width-600/portfolio-8.jpg new file mode 100644 index 0000000..18aa7b3 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-8.jpg differ diff --git a/src/assets/images/portfolio/width-600/portfolio-9.jpg b/src/assets/images/portfolio/width-600/portfolio-9.jpg new file mode 100644 index 0000000..de76627 Binary files /dev/null and b/src/assets/images/portfolio/width-600/portfolio-9.jpg differ diff --git a/src/assets/images/portrait/large/avatar-l-1.png b/src/assets/images/portrait/large/avatar-l-1.png new file mode 100644 index 0000000..d6b5913 Binary files /dev/null and b/src/assets/images/portrait/large/avatar-l-1.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-1.png b/src/assets/images/portrait/medium/avatar-m-1.png new file mode 100644 index 0000000..899a80b Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-1.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-10.png b/src/assets/images/portrait/medium/avatar-m-10.png new file mode 100644 index 0000000..5034539 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-10.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-11.png b/src/assets/images/portrait/medium/avatar-m-11.png new file mode 100644 index 0000000..755fef3 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-11.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-12.png b/src/assets/images/portrait/medium/avatar-m-12.png new file mode 100644 index 0000000..0cd1e05 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-12.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-13.png b/src/assets/images/portrait/medium/avatar-m-13.png new file mode 100644 index 0000000..b2edacb Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-13.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-14.png b/src/assets/images/portrait/medium/avatar-m-14.png new file mode 100644 index 0000000..46e57c1 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-14.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-15.png b/src/assets/images/portrait/medium/avatar-m-15.png new file mode 100644 index 0000000..74b4968 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-15.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-16.png b/src/assets/images/portrait/medium/avatar-m-16.png new file mode 100644 index 0000000..2440a90 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-16.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-17.png b/src/assets/images/portrait/medium/avatar-m-17.png new file mode 100644 index 0000000..c7daea9 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-17.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-18.png b/src/assets/images/portrait/medium/avatar-m-18.png new file mode 100644 index 0000000..70a0847 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-18.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-19.png b/src/assets/images/portrait/medium/avatar-m-19.png new file mode 100644 index 0000000..fcfaa1c Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-19.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-2.png b/src/assets/images/portrait/medium/avatar-m-2.png new file mode 100644 index 0000000..f64add6 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-2.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-20.png b/src/assets/images/portrait/medium/avatar-m-20.png new file mode 100644 index 0000000..e76e46b Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-20.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-21.png b/src/assets/images/portrait/medium/avatar-m-21.png new file mode 100644 index 0000000..3766258 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-21.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-22.png b/src/assets/images/portrait/medium/avatar-m-22.png new file mode 100644 index 0000000..53df1c4 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-22.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-23.png b/src/assets/images/portrait/medium/avatar-m-23.png new file mode 100644 index 0000000..4eb065e Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-23.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-24.png b/src/assets/images/portrait/medium/avatar-m-24.png new file mode 100644 index 0000000..9b771f1 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-24.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-25.jpg b/src/assets/images/portrait/medium/avatar-m-25.jpg new file mode 100644 index 0000000..17be18c Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-25.jpg differ diff --git a/src/assets/images/portrait/medium/avatar-m-3.png b/src/assets/images/portrait/medium/avatar-m-3.png new file mode 100644 index 0000000..d314844 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-3.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-4.png b/src/assets/images/portrait/medium/avatar-m-4.png new file mode 100644 index 0000000..03114b4 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-4.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-5.png b/src/assets/images/portrait/medium/avatar-m-5.png new file mode 100644 index 0000000..6d462c2 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-5.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-6.png b/src/assets/images/portrait/medium/avatar-m-6.png new file mode 100644 index 0000000..e2ec29b Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-6.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-7.png b/src/assets/images/portrait/medium/avatar-m-7.png new file mode 100644 index 0000000..6ce99c7 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-7.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-8.png b/src/assets/images/portrait/medium/avatar-m-8.png new file mode 100644 index 0000000..7276774 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-8.png differ diff --git a/src/assets/images/portrait/medium/avatar-m-9.png b/src/assets/images/portrait/medium/avatar-m-9.png new file mode 100644 index 0000000..046e649 Binary files /dev/null and b/src/assets/images/portrait/medium/avatar-m-9.png differ diff --git a/src/assets/images/portrait/small/avatar-s-1.png b/src/assets/images/portrait/small/avatar-s-1.png new file mode 100644 index 0000000..0132b94 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-1.png differ diff --git a/src/assets/images/portrait/small/avatar-s-10.png b/src/assets/images/portrait/small/avatar-s-10.png new file mode 100644 index 0000000..d065f49 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-10.png differ diff --git a/src/assets/images/portrait/small/avatar-s-11.png b/src/assets/images/portrait/small/avatar-s-11.png new file mode 100644 index 0000000..1842896 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-11.png differ diff --git a/src/assets/images/portrait/small/avatar-s-12.png b/src/assets/images/portrait/small/avatar-s-12.png new file mode 100644 index 0000000..0f38a87 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-12.png differ diff --git a/src/assets/images/portrait/small/avatar-s-13.png b/src/assets/images/portrait/small/avatar-s-13.png new file mode 100644 index 0000000..4110e21 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-13.png differ diff --git a/src/assets/images/portrait/small/avatar-s-14.png b/src/assets/images/portrait/small/avatar-s-14.png new file mode 100644 index 0000000..1b5767e Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-14.png differ diff --git a/src/assets/images/portrait/small/avatar-s-15.png b/src/assets/images/portrait/small/avatar-s-15.png new file mode 100644 index 0000000..048f492 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-15.png differ diff --git a/src/assets/images/portrait/small/avatar-s-16.png b/src/assets/images/portrait/small/avatar-s-16.png new file mode 100644 index 0000000..c81223b Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-16.png differ diff --git a/src/assets/images/portrait/small/avatar-s-17.png b/src/assets/images/portrait/small/avatar-s-17.png new file mode 100644 index 0000000..0ed404f Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-17.png differ diff --git a/src/assets/images/portrait/small/avatar-s-18.png b/src/assets/images/portrait/small/avatar-s-18.png new file mode 100644 index 0000000..db61ee5 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-18.png differ diff --git a/src/assets/images/portrait/small/avatar-s-19.png b/src/assets/images/portrait/small/avatar-s-19.png new file mode 100644 index 0000000..89c38bc Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-19.png differ diff --git a/src/assets/images/portrait/small/avatar-s-2.png b/src/assets/images/portrait/small/avatar-s-2.png new file mode 100644 index 0000000..905dabb Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-2.png differ diff --git a/src/assets/images/portrait/small/avatar-s-20.png b/src/assets/images/portrait/small/avatar-s-20.png new file mode 100644 index 0000000..f08c535 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-20.png differ diff --git a/src/assets/images/portrait/small/avatar-s-21.png b/src/assets/images/portrait/small/avatar-s-21.png new file mode 100644 index 0000000..07ba087 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-21.png differ diff --git a/src/assets/images/portrait/small/avatar-s-22.png b/src/assets/images/portrait/small/avatar-s-22.png new file mode 100644 index 0000000..faaa9ad Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-22.png differ diff --git a/src/assets/images/portrait/small/avatar-s-23.png b/src/assets/images/portrait/small/avatar-s-23.png new file mode 100644 index 0000000..ba12ef6 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-23.png differ diff --git a/src/assets/images/portrait/small/avatar-s-24.png b/src/assets/images/portrait/small/avatar-s-24.png new file mode 100644 index 0000000..a09944f Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-24.png differ diff --git a/src/assets/images/portrait/small/avatar-s-25.png b/src/assets/images/portrait/small/avatar-s-25.png new file mode 100644 index 0000000..40b37c6 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-25.png differ diff --git a/src/assets/images/portrait/small/avatar-s-26.png b/src/assets/images/portrait/small/avatar-s-26.png new file mode 100644 index 0000000..40b37c6 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-26.png differ diff --git a/src/assets/images/portrait/small/avatar-s-3.png b/src/assets/images/portrait/small/avatar-s-3.png new file mode 100644 index 0000000..5b590cc Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-3.png differ diff --git a/src/assets/images/portrait/small/avatar-s-4.png b/src/assets/images/portrait/small/avatar-s-4.png new file mode 100644 index 0000000..a1e957d Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-4.png differ diff --git a/src/assets/images/portrait/small/avatar-s-5.png b/src/assets/images/portrait/small/avatar-s-5.png new file mode 100644 index 0000000..9de6d2b Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-5.png differ diff --git a/src/assets/images/portrait/small/avatar-s-6.png b/src/assets/images/portrait/small/avatar-s-6.png new file mode 100644 index 0000000..734c7dc Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-6.png differ diff --git a/src/assets/images/portrait/small/avatar-s-7.png b/src/assets/images/portrait/small/avatar-s-7.png new file mode 100644 index 0000000..b6c151b Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-7.png differ diff --git a/src/assets/images/portrait/small/avatar-s-8.png b/src/assets/images/portrait/small/avatar-s-8.png new file mode 100644 index 0000000..2c82769 Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-8.png differ diff --git a/src/assets/images/portrait/small/avatar-s-9.png b/src/assets/images/portrait/small/avatar-s-9.png new file mode 100644 index 0000000..812145c Binary files /dev/null and b/src/assets/images/portrait/small/avatar-s-9.png differ diff --git a/src/assets/images/portrait/small/default.png b/src/assets/images/portrait/small/default.png new file mode 100644 index 0000000..8e1e1fc Binary files /dev/null and b/src/assets/images/portrait/small/default.png differ diff --git a/src/assets/images/raty/cancel-off.png b/src/assets/images/raty/cancel-off.png new file mode 100644 index 0000000..a3031f0 Binary files /dev/null and b/src/assets/images/raty/cancel-off.png differ diff --git a/src/assets/images/raty/cancel-on.png b/src/assets/images/raty/cancel-on.png new file mode 100644 index 0000000..08f2493 Binary files /dev/null and b/src/assets/images/raty/cancel-on.png differ diff --git a/src/assets/images/raty/star-off-2.png b/src/assets/images/raty/star-off-2.png new file mode 100644 index 0000000..956fa7c Binary files /dev/null and b/src/assets/images/raty/star-off-2.png differ diff --git a/src/assets/images/raty/star-off.png b/src/assets/images/raty/star-off.png new file mode 100644 index 0000000..b0f3759 Binary files /dev/null and b/src/assets/images/raty/star-off.png differ diff --git a/src/assets/images/raty/star-on-2.png b/src/assets/images/raty/star-on-2.png new file mode 100644 index 0000000..975fe7f Binary files /dev/null and b/src/assets/images/raty/star-on-2.png differ diff --git a/src/assets/images/raty/star-on.png b/src/assets/images/raty/star-on.png new file mode 100644 index 0000000..865cfc3 Binary files /dev/null and b/src/assets/images/raty/star-on.png differ diff --git a/src/assets/images/slider/slider-1.png b/src/assets/images/slider/slider-1.png new file mode 100644 index 0000000..8a79f85 Binary files /dev/null and b/src/assets/images/slider/slider-1.png differ diff --git a/src/assets/images/slider/slider-2.png b/src/assets/images/slider/slider-2.png new file mode 100644 index 0000000..3812136 Binary files /dev/null and b/src/assets/images/slider/slider-2.png differ diff --git a/src/assets/images/slider/slider-3.png b/src/assets/images/slider/slider-3.png new file mode 100644 index 0000000..eb4a555 Binary files /dev/null and b/src/assets/images/slider/slider-3.png differ diff --git a/src/assets/images/slider/slider-4.png b/src/assets/images/slider/slider-4.png new file mode 100644 index 0000000..27b5004 Binary files /dev/null and b/src/assets/images/slider/slider-4.png differ diff --git a/src/assets/images/slider/slider-5.png b/src/assets/images/slider/slider-5.png new file mode 100644 index 0000000..9a8ed13 Binary files /dev/null and b/src/assets/images/slider/slider-5.png differ diff --git a/src/assets/images/slider/slider-6.png b/src/assets/images/slider/slider-6.png new file mode 100644 index 0000000..71c9c92 Binary files /dev/null and b/src/assets/images/slider/slider-6.png differ diff --git a/src/assets/images/slider/top.png b/src/assets/images/slider/top.png new file mode 100644 index 0000000..75bbb9f Binary files /dev/null and b/src/assets/images/slider/top.png differ diff --git a/src/assets/images/svg/cd-arrow.svg b/src/assets/images/svg/cd-arrow.svg new file mode 100644 index 0000000..ad2b221 --- /dev/null +++ b/src/assets/images/svg/cd-arrow.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/src/assets/images/svg/magnifier.svg b/src/assets/images/svg/magnifier.svg new file mode 100644 index 0000000..d478157 --- /dev/null +++ b/src/assets/images/svg/magnifier.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/assets/jkanban/jkanban.min.css b/src/assets/jkanban/jkanban.min.css new file mode 100644 index 0000000..72ab29f --- /dev/null +++ b/src/assets/jkanban/jkanban.min.css @@ -0,0 +1 @@ +.kanban-container{position:relative;box-sizing:border-box;width:auto}.kanban-container *{box-sizing:border-box}.kanban-container:after{clear:both;display:block;content:""}.kanban-board{position:relative;float:left;background:#e2e4e6;transition:all .3s cubic-bezier(.23,1,.32,1)}.kanban-board.disabled-board{opacity:.3}.kanban-board.is-moving.gu-mirror{transform:rotate(3deg)}.kanban-board.is-moving.gu-mirror .kanban-drag{overflow:hidden;padding-right:50px}.kanban-board header{font-size:16px;padding:15px}.kanban-board header .kanban-title-board{font-weight:700;margin:0;padding:0;display:inline}.kanban-board header .kanban-title-button{float:right}.kanban-board .kanban-drag{min-height:200px;padding:20px}.kanban-board:after{clear:both;display:block;content:""}.kanban-item{background:#fff;padding:15px;margin-bottom:20px;transition:all .3s cubic-bezier(.23,1,.32,1)}.kanban-item:hover{cursor:move}.kanban-item:last-child{margin:0}.kanban-item.is-moving.gu-mirror{transform:rotate(3deg);height:auto!important}.gu-mirror{position:fixed!important;margin:0!important;z-index:9999!important}.gu-hide{display:none!important}.gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.gu-transit{opacity:.2!important;transform:rotate(0)!important} \ No newline at end of file diff --git a/src/assets/media/default-skin.png b/src/assets/media/default-skin.png new file mode 100644 index 0000000..441c502 Binary files /dev/null and b/src/assets/media/default-skin.png differ diff --git a/src/assets/sass/main.scss b/src/assets/sass/main.scss new file mode 100644 index 0000000..a9e7011 --- /dev/null +++ b/src/assets/sass/main.scss @@ -0,0 +1,30 @@ +@import "scss/bootstrap.scss"; +@import "scss/bootstrap-extended.scss"; +@import "scss/colors.scss"; +@import "scss/components.scss"; +// @import "scss/custom-rtl.scss"; +@import "scss/core/menu/navigation"; +@import "scss/core/menu/menu-types/vertical-menu-modern.scss"; +@import "scss/core/menu/menu-types/horizontal-menu.scss"; +@import "scss/core/colors/palette"; +@import "scss/core/colors/palette-gradient.scss"; +@import "scss/core/colors/palette-callout.scss"; +@import "scss/plugins/loaders/loaders.scss"; +@import "scss/plugins/animate/animate.scss"; +@import "scss/pages/timeline.scss"; +@import "scss/pages/login-register.scss"; +@import "scss/pages/app-todo.scss"; +@import "scss/pages/app-todoapp.scss"; +@import "scss/pages/app-contacts.scss"; +@import "scss/pages/app-email.scss"; +@import "scss/pages/app-chat.scss"; +@import "scss/pages/users.scss"; +@import "scss/pages/news-feed.scss"; +@import "scss/pages/user-feed.scss"; +@import "scss/pages/gallery.scss"; +@import "scss/pages/search.scss"; +@import "scss/pages/invoice.scss"; +@import "scss/pages/error.scss"; +@import "scss/pages/coming-soon.scss"; +@import "scss/pages/under-maintenance.scss"; +@import "scss/commansocial.scss"; diff --git a/src/assets/sass/scss/bootstrap-extended.scss b/src/assets/sass/scss/bootstrap-extended.scss new file mode 100644 index 0000000..69d1c61 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended.scss @@ -0,0 +1,53 @@ +// ================================================================================================ +// File Name: bootstrap-extended.scss +// Description: List of modified Bootstrap files. This is an actual copy of bootstrap.scss +// excluding files that have not been modified. +// ---------------------------------------------------------------------------------------------- +// Item Name: Modern Admin -Angular 11+ Bootstrap 5 Admin Dashboard Template +// Version: 3.0 +// Author: PIXINVENT +// Author URL: http://www.themeforest.net/user/pixinvent +// ================================================================================================ + +// Core variables and mixins +@import "bootstrap/functions"; +@import "bootstrap/mixins"; +@import "bootstrap-extended/mixins"; + +// Load variable overrides +@import "core/variables/variables"; +@import "bootstrap/variables"; + +@import "core/variables/components-variables"; + +// // Core CSS +@import "bootstrap-extended/reboot"; +@import "bootstrap-extended/type"; +@import "bootstrap-extended/code"; +@import "bootstrap-extended/grid"; +@import "bootstrap-extended/tables"; +@import "bootstrap-extended/forms"; +@import "bootstrap-extended/buttons"; + +// // Components +@import "bootstrap-extended/animation"; +@import "bootstrap-extended/dropdown"; +@import "bootstrap-extended/navbar"; +@import "bootstrap-extended/card"; +@import "bootstrap-extended/collapse"; +@import "bootstrap-extended/breadcrumb"; +@import "bootstrap-extended/pagination"; +@import "bootstrap-extended/badge"; +@import "bootstrap-extended/nav"; +@import "bootstrap-extended/alert"; +@import "bootstrap-extended/media"; +@import "bootstrap-extended/progress"; +@import "bootstrap-extended/list-group"; +@import "bootstrap-extended/toast"; + +// // Components w/ JavaScript +@import "bootstrap-extended/modal"; +@import "bootstrap-extended/popover"; + +// // Utility classes +@import "bootstrap-extended/utilities"; diff --git a/src/assets/sass/scss/bootstrap-extended/_alert.scss b/src/assets/sass/scss/bootstrap-extended/_alert.scss new file mode 100644 index 0000000..9f53185 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_alert.scss @@ -0,0 +1,78 @@ +.alert{ + position: relative; + .alert-link{ + &:hover{ + text-decoration: underline; + } + } + &.alert-icon-left { + border-left-width: 4rem; + } + &.alert-icon-right { + border-right-width: 4rem; + } + &.alert-icon-left[class*=bg-]{ + border-left-color:rgba(0,0,0,.15)!important + } + &.alert-icon-right[class*=bg-]{ + border-right-color:rgba(0,0,0,.15)!important + } + &[class*=alert-icon-] { + .alert-icon{ + content: '\f2b2'; + font-family: LineAwesome; + color: #fff; + width: 4rem; + left: -4rem; + text-align: center; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1.25rem; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + .close{ + font-size: 2rem; + line-height: 1rem; + } + &[class*=bg-]{ + color: #fff; + .alert-link{ + color: #fff; + } + .close{ + color: #fff; + opacity: 1; + text-shadow: none; + } + } + &.alert-icon-right{ + .alert-icon{ + left:auto; + right:-4rem; + } + } + &[class*=alert-arrow-]:before{ + content:""; + display:inline-block; + position:absolute; + top:50%; + left:0; + border-left:8px solid; + border-top:8px solid transparent; + border-bottom:8px solid transparent; + border-left-color:inherit; + margin-top:-8px; + } + &.alert-arrow-right:before{ + left:auto; + right:0; + border-left:0; + border-right:8px solid; + border-right-color: inherit; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_animation.scss b/src/assets/sass/scss/bootstrap-extended/_animation.scss new file mode 100644 index 0000000..cba6679 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_animation.scss @@ -0,0 +1,75 @@ +.collapse-icon{ + .card-header{ + position: relative; + } + a[data-toggle="collapse"]{ + &:after{ + position: absolute; + top: 48%; + right: 20px; + margin-top: -8px; + font-family: 'feather'; + content: "\2212"; + transition: all 300ms linear 0s; + } + &:before{ + position: absolute; + top: 48%; + right: 20px; + margin-top: -8px; + font-family: 'feather'; + content: "\002B"; + transition: all 300ms linear 0s; + } + } + &.left{ + a{ + padding-left: 28px; + &:before, &:after{ + left: 20px; + right: auto; + } + } + } + a[aria-expanded="true"]{ + &:before{ + opacity: 0; + } + } + a[aria-expanded="false"]{ + &:after{ + opacity: 0; + } + } + &.accordion-icon-rotate{ + a[aria-expanded="true"]{ + &:before{ + transform: rotate(180deg); + } + } + a[aria-expanded="false"]{ + &:after{ + transform: rotate(-180deg); + } + } + } +} + +// Mega Menu Accordion Section + +.header-navbar{ + .navbar-container{ + .mega-dropdown-menu{ + .collapse-icon{ + a[data-toggle="collapse"]{ + &:after{ + margin-top: -16px; + } + &:before{ + margin-top: -16px; + } + } + } + } + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_badge.scss b/src/assets/sass/scss/bootstrap-extended/_badge.scss new file mode 100644 index 0000000..6e4b55f --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_badge.scss @@ -0,0 +1,157 @@ + +.badge{ + color: $white; + font-weight: 400; + &[class*='badge-']{ + [class*='icon-']{ + line-height: 1; + ~span{ + position: relative; + bottom: 2px; + padding: 0 5px; + } + } + span{ + position: relative; + bottom: 2px; + padding: 0 5px; + } + a{ + color: #fff; + } + .dropdown-toggle::after, + &.dropdown-toggle::after{ + position: relative; + top: -2px; + right: 3px; + font-size: 1rem; + } + .dropdown-menu{ + a{ + color: #555; + } + } + } + &.badge-square{ + border-radius: 0; + } + &.badge-border{ + background-color: transparent; + border-width: 3px !important; + font-size: 85%; + } + &.badge-striped{ + background-color: #dadada; + border-width: 3px !important; + font-size: 0.85rem; + color: #555; + a{ + color: #555; + } + } + &.badge.float-right { + margin-left: 0.5rem; + margin-top: 0.15rem; + } +} + +// badge sizes + +.badge-xl{ + font-size: 1.8rem; +} +.badge-lg{ + font-size: 1.2rem; +} +.badge-md{ + font-size: 1rem; +} +.badge-sm{ + font-size: 0.8rem; +} + +// Colors +// +// Contextual variations (linked tags get darker on :hover). + +.badge-secondary { + // @include badge-variant($badge-secondary-bg); + @include badge-variant($secondary); +} + +.badge-primary { + @include badge-variant($primary); +} + +.badge-success { + @include badge-variant($success); +} + +.badge-info { + @include badge-variant($info); +} + +.badge-warning { + @include badge-variant($warning); +} + +.badge-danger { + @include badge-variant($danger); +} + +//Tag Up +.badge-up{ + position: absolute; + top: 10px; + right: 11px; +} +.badge-icon{ + i{ + font-size: 100%; + margin-right: 5px; + } +} + +.form-control + .block-tag{ + display:block; +} +.block-tag{ + margin-top:0.5rem; +} +.block-area{ + padding: 0.24rem 0.3rem; +} + +//Prisam / Bootstrap tag class fix +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; + font-size: 100%; + font-weight: 400; + padding: 0; +} + +// @media only screen and (max-width: 767px) { +// .badge-up{ +// right: 6px; +// top: 5px; +// } +// } + +// For Header navbar - badge in Notification dropdown +@media only screen and (max-width: 767px) { + .header-navbar .navbar-container .dropdown-notification{ + .badge-up{ + position: relative; + right: 6px; + top: -17px; + } + } +} + + diff --git a/src/assets/sass/scss/bootstrap-extended/_breadcrumb.scss b/src/assets/sass/scss/bootstrap-extended/_breadcrumb.scss new file mode 100644 index 0000000..e6f60a1 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_breadcrumb.scss @@ -0,0 +1,41 @@ +.breadcrumb { + font-size:1rem; + font-family: $font-family-monospace; + background-color: $transparent; + padding: 0 0 $breadcrumb-padding-y $breadcrumb-padding-x; + > li { + + li::before { + padding-right: .6rem; + padding-left: .6rem; + } + } + .breadcrumb-item + .breadcrumb-item::before{ + content: "-"; + } +} +/* Custom scss for page headers style */ +.breadcrumbs-right{ + .breadcrumb { + float:right; + } +} +.breadcrumbs-top{ + .breadcrumb { + margin: 0; + padding: 0; + } +} + +.breadcrumb-new{ + .content-header-title{ + padding: 6px 24px 8px 0; + margin: 0 24px 0 0; + border-right: 1px solid $border-color; + } +} + +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .breadcrumb { + min-height: auto; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_buttons.scss b/src/assets/sass/scss/bootstrap-extended/_buttons.scss new file mode 100644 index 0000000..5d8b6ce --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_buttons.scss @@ -0,0 +1,66 @@ +// Remove focus/active focus outline +.btn { + &.btn-square{ + @include button-square-variant(0); + } + &.btn-round{ + @include button-round-variant(2rem); + } + &:focus,&.focus,&:active, &.active { + outline: none; + box-shadow: none !important; + } + + &.btn-icon{ + i{ + font-size: 1.1rem; + } + &.btn-pure{ + background-color: transparent; + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + i{ + font-size: 1.25rem; + } + } + } + &.btn-social{ + padding: 0.7rem 0.25rem 0.85rem 3.75rem; + //0.5rem 0.25rem 0.5rem 2.75rem; + } +} +.btn-min-width{ + min-width:8.5rem; +} + +.color-box{ + width: 100%; + height: 2.75rem; + border-radius: 0.25rem; +} +.btn-float { + padding: 15px; + white-space: normal; + -webkit-box-shadow: 0 6px 10px rgba(0,0,0,.15); + box-shadow: 0 6px 10px rgba(0,0,0,.15); + &.btn-link { + padding: 10px; + } + i { + display: block; + margin: 0; + top: 0; + } + &.btn-float-lg i, &.btn-float-lg span{ + font-size: 2rem; + } + &.btn-float-lg i + span{ + font-size: 1.1rem; + } + > i + span { + display: block; + padding-top: 10px; + margin-bottom: -6px; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_card.scss b/src/assets/sass/scss/bootstrap-extended/_card.scss new file mode 100644 index 0000000..c0d6242 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_card.scss @@ -0,0 +1,227 @@ +.card-group, +.card-deck { + margin-bottom: 0.75rem; +} + +.card { + // box-shadow: 0px 2px 1px rgba(0, 0, 0, 0.05); + margin-bottom: 1.875rem; + border: none; + // border-radius: 0.42rem; + box-shadow: 0px 1px 15px 1px rgba(62, 57, 107, 0.07); + + .card { + box-shadow: none !important; + } + + .card-title { + font-weight: 500; + letter-spacing: 0.05rem; + font-size: 1.12rem; + } + + .card-bordered { + border: $card-border-width solid $card-border-color; + } + + //fullscreen card + &.card-fullscreen { + display: block; + z-index: 9999; + position: fixed; + width: 100% !important; + height: 100% !important; + top: 0; + right: 0; + left: 0; + bottom: 0; + overflow: auto; + } + + .card-body[class*='border-bottom-'] { + border-bottom-width: 2px !important; + } + + .card-img-overlay { + &.bg-overlay { + background: rgba(0, 0, 0, 0.45); + } + + .text-muted { + color: $gray-800 !important; + } + } + + &.card-minimal { + border: none; + box-shadow: none; + } + + &.crypto-card-3 { + .card-body:before { + font-family: "cryptocoins"; + font-size: 10rem; + color: rgba($white, 0.15); + position: absolute; + bottom: -32px; + right: 0px; + } + } + +} + +// If card moved +.card-moved { + + .card, + .card-header { + background-color: $warning; + color: $white; + } +} + +.handle, +.titleArea { + cursor: move; +} + +.card-header { + border-bottom: none; + + .card-title { + margin-bottom: 0; + } + + .heading-elements, + .heading-elements-toggle { + background-color: inherit; + position: absolute; + top: 20px; + right: 20px; + + &.heading-top-elements { + + // top: 0px; + .page-item { + display: inline-block + } + } + + a { + padding: 0 8px; + + &.btn { + padding-top: 6px; + padding-bottom: 6px; + } + } + } +} + +.card-footer { + border-top: 1px solid #EEEEEE; +} + +.text-white { + .card-text { + color: rgba(255, 255, 255, 1); + } + + .card-img-overlay { + .text-muted { + color: #FFF !important; + } + } + + code { + background-color: rgba(255, 255, 255, 1); + } + + .heading-elements { + i { + color: #FFF; + } + } +} + +.card-head-inverse { + .heading-elements { + i { + color: #FFF; + } + } + + color: #FFF; +} + +.card-transparent { + background-color: transparent; +} + +// Card Ecommerce +.card-image-position-right { + margin-left: 50px; + position: absolute; + top: -27px; +} + +.card-image-position-right-mid { + position: absolute; + top: auto; + right: 0px; + width: 250px; +} + +.card-font-style-black { + font-size: 90px; + font-weight: 900; + color: #ffffff52; + margin-top: -12px; +} + +.card-font-style-white { + font-size: 72px; + font-weight: 900; + margin-top: -10px; +} + +.background-round { + background-color: rgba(0, 0, 0, 0.18); + padding: 8px; + border-radius: 50%; +} + +@include media-breakpoint-down(md) { + .heading-elements { + // text-align: center; + + .list-inline { + display: none; + } + + &.visible { + .list-inline { + display: block; + } + + display: block; + margin-top: 0; + top: 100%; + top: 37px; + height: auto; + left: 0px; + padding: 10px; + text-align: right; + // border: 1px solid #eee; + z-index: 997; + position: absolute; + width: 100%; + } + } +} + +@include media-breakpoint-up(lg) { + .heading-elements-toggle { + display: none; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_code.scss b/src/assets/sass/scss/bootstrap-extended/_code.scss new file mode 100644 index 0000000..113191b --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_code.scss @@ -0,0 +1,16 @@ + +// Inline code +code { + padding: .2rem .4rem; + font-size: 90%; + color: $code-color; + background-color: $kbd-bg; + @include border-radius($border-radius); +} +pre{ + background-color : #f7f7f9; + code + { + background-color: transparent !important; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_collapse.scss b/src/assets/sass/scss/bootstrap-extended/_collapse.scss new file mode 100644 index 0000000..8fca559 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_collapse.scss @@ -0,0 +1,6 @@ +.accordion, .default-collapse { + .card-header{ + cursor: pointer; + border-radius: 0 !important; + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_dropdown.scss b/src/assets/sass/scss/bootstrap-extended/_dropdown.scss new file mode 100644 index 0000000..f89c2b0 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_dropdown.scss @@ -0,0 +1,360 @@ +// The dropdown menu +.dropdown{ + &.dropdown-demo{ + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + } + .dropdown-menu { + border: 1px solid #E4E5EC; + border-radius: $border-radius-lg; + transform-origin: top; + animation-fill-mode: forwards; + transform: scale(1, 0); + transition: all 0.2s linear; + margin: -0.1rem 0 0; + box-shadow: 0px 5px 75px 2px rgba(64, 70, 74, 0.2); + min-width: 11rem; + .dropdown-header{ + padding: 10px 20px; + margin-top: 10px; + text-transform: uppercase; + color:$gray-300; + } + .dropdown-item{ + padding: 10px 20px; + width: 100%; + &:active, &.active{ + a{ + color: #fff; + } + } + } + } + .dropdown-divider{ + border: 1px solid #E4E5EC; + } + i{ + margin-right:0.5rem; + } +} +.dropdown{ + .dropdown-menu { + border: 1px solid #E4E5EC; + border-radius: $border-radius-lg; + transform-origin: top; + animation-fill-mode: forwards; + transform: scale(1, 0); + transition: all 0.2s linear; + margin: -0.1rem 0 0; + box-shadow: 0px 5px 75px 2px rgba(64, 70, 74, 0.2) !important; + min-width: 11rem; + .dropdown-header{ + padding: 10px 20px; + margin-top: 10px; + text-transform: uppercase; + color:$gray-300; + } + .dropdown-item{ + padding: 10px 20px; + width: 100%; + &:active, &.active{ + a{ + color: #fff; + } + } + } + } +} + +.show { + > .dropdown-menu { + transform: scale(1, 1); + opacity:1; + display: block; + } +} + +.dropdown-toggle { + // changed icon caret + + &::after { + font-size: 0.8rem; + font-family: 'LineAwesome'; + content: "\f110" !important; + border:none !important; + position: relative; + top: 0px; + right: 0px; + padding: 0 2px 0 6px; + margin: 0 0.3em 0 0; + vertical-align: 0; + } + // hide default arrow to show custom icon DD + &.nav-hide-arrow{ + &::after { + display: none; + } + } + + // Prevent the focus on the dropdown toggle when closing dropdowns + &:focus { + outline: 0; + } +} +// Horizontal layout navigation menu dropdown arrow +.navbar-horizontal{ + .dropdown-menu .dropdown-submenu > a:after, .dropdown-menu .dropdown-submenu > button:after{ + font-size: 0.85rem; + right: 2px; + } + .dropdown-toggle::after { + top: 14px !important; + } +} +// Button with dropdown arrow + +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown menu with the parent. +.dropdown-menu-right { + // left: auto !important; + right: 0; +} + +// Multileval Dropdown Menu +// ------------------------- +.dropdown-menu{ + box-shadow: none; + .dropdown-submenu{ + position:relative; + &:hover { + .dropdown-menu{ + display:block + } + } + > .dropdown-menu{ + top:0; + left:100%; + margin-top:-6px; + margin-left:-1px; + &::before { + box-shadow:none; + } + &.open-left{ + left: auto; + right: 100%; + } + } + > a:after, > button:after{ + font-family: 'LineAwesome'; + content: "\f112" !important; + right: 15px; + font-size: 1rem; + float: right; + border: none; + position: absolute; + } + :hover{ + >a:after, >button:after{ + border-left-color:#555; + } + } + .pull-left{ + float:none; + >.dropdown-menu{ + left:-100%; + margin-left:10px; + } + } + } +} + +// Highlight header +.dropdown-header { + text-transform: uppercase; + &.highlight{ + color: #2b2d2f; + text-decoration: none; + background-color: #f5f5f5; + } +} + +// Color theme active & hover +.btn-secondary ~ .dropdown-menu{ + .dropdown-item.active{ + background-color: darken(#ffffff, 20%); + } +} +.btn-primary ~ .dropdown-menu{ + .dropdown-item.active{ + background-color: $primary; + } +} +.btn-success ~ .dropdown-menu{ + + .dropdown-item.active{ + background-color: $success; + } +} +.btn-danger ~ .dropdown-menu{ + + .dropdown-item.active{ + background-color: $danger; + } +} +.btn-info ~ .dropdown-menu{ + + .dropdown-item.active{ + background-color: $info; + } +} +.btn-warning ~ .dropdown-menu{ + + .dropdown-item.active{ + background-color: $warning; + } +} + +// Arrow +.dropdown-menu{ + &.arrow { + margin-top: 12px; + &:after, &:before { + position: absolute; + left: 10px; + display: inline-block; + width: 0; + height: 0; + content: ''; + border: 7px solid transparent; + border-top-width: 0; + } + &:before{ + top: -7px; + border-bottom-color: lighten(#000000, 70%); + } + &:after{ + top: -6px; + border-bottom-color: #fff; + } + } + .arrow-left{ + margin-left: 7px !important; + &:after, &:before { + position: absolute; + top: 10px; + display: inline-block; + width: 0; + height: 0; + content: ''; + border: 7px solid transparent; + border-left-width: 0; + } + &:before{ + left: -8px; + border-right-color: lighten(#000000, 70%); + } + &:after{ + left: -7px; + border-right-color: #fff; + } + } + .arrow-right{ + margin-right: 7px !important; + &:after, &:before { + position: absolute; + top: 10px; + display: inline-block; + width: 0; + height: 0; + content: ''; + border: 7px solid transparent; + border-right-width: 0; + } + &:before{ + right: -7px; + border-left-color: lighten(#000000, 70%); + } + &:after{ + right: -6px; + border-left-color: #fff; + } + } +} + +.dropup { + .dropdown-toggle { + // changed icon dropup caret + &::after { + content: "\f113" !important; + } + } + .dropdown-menu { + top: auto; + // bottom: 100%; + &.arrow{ + margin-bottom: 12px; + &:after, &:before { + top: auto; + border-top-width: 7px; + border-bottom-width: 0; + } + &:before { + bottom: -8px; + border-top-color: lighten(#000000, 70%); + } + &:after{ + bottom: -6px; + border-top-color: #fff; + } + } + } + .dropdown-submenu { + .dropdown-menu { + bottom: auto; + top: 0; + } + } +} + +// Sizes + +.dropdown-menu-xl a, +.dropdown-menu-xl button { + padding-top: 9px !important; + padding-bottom: 9px !important; + font-size: 1.2rem; + line-height: 1.43; +} +.dropdown-menu-lg a, +.dropdown-menu-lg button { + padding-top: 6px !important; + padding-bottom: 6px !important; +} +.dropdown-menu-sm a, +.dropdown-menu-sm button { + padding-top: 5px !important; + padding-bottom: 5px !important; + font-size: 0.86rem; + line-height: 1.67; +} + +.dropdown-item{ + &.buttons-columnVisibility.active{ + color: $black; + } +} +.drilldown-menu{ + .dropdown-item{ + &.active,&:active{ + &.hover,&:hover{ + color: #fff; + } + } + } +} + +// For Arrow white in Selectbox +.selectBox-arrow-light{ + .selectboxit-default-arrow{ + border-top-color: $white; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_forms.scss b/src/assets/sass/scss/bootstrap-extended/_forms.scss new file mode 100644 index 0000000..5978cad --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_forms.scss @@ -0,0 +1,260 @@ +form{ + label{ + color: darken($body-bg, 70%); + } + .form-group{ + margin-bottom: 1.5rem; + } + + .form-control{ + border: 1px solid darken($body-bg, 12%); + color: darken($body-bg, 60%); + + &::-webkit-input-placeholder { + color: darken($body-bg, 20%); + } + + &:-moz-placeholder { /* Firefox 18- */ + color: darken($body-bg, 20%); + } + + &::-moz-placeholder { /* Firefox 19+ */ + color: darken($body-bg, 20%); + } + + &:-ms-input-placeholder { + color: darken($body-bg, 20%); + } + } + .form-section{ + color: $menu-dark-bg; + line-height: 3rem; + margin-bottom: 20px; + border-bottom: 1px solid $menu-dark-bg; + + i{ + font-size: 20px; + margin-left: 5px; + margin-right: 10px; + } + } + + /* .form-body{ + overflow: hidden; + } */ + + .form-actions{ + border-top: 1px solid darken($body-bg, 10%); + padding: 20px 0; + margin-top: 20px; + + &.filled{ + background-color: $body-bg; + } + &.center{ + text-align: center; + } + &.right{ + text-align: right; + } + + &.top{ + border-top: 0; + border-bottom: 1px solid darken($body-bg, 10%); + margin-top: 0; + margin-bottom: 20px; + } + + @include media-breakpoint-down(sm) { + .buttons-group{ + float: left !important; + margin-bottom: 10px; + } + } + } + + &.form-horizontal{ + .form-group{ + @include media-breakpoint-up(sm) { + .label-control{ + text-align: right; + } + } + } + } + + &.row-separator{ + .form-group{ + margin: 0; + border-bottom: 1px solid darken($body-bg, 3%); + .label-control{ + padding-top: 1.5rem; + } + > div{ + padding: 1.2rem; + padding-right: 0; + } + &.last{ + border-bottom: 0; + } + } + } + + &.form-bordered{ + .form-group{ + margin: 0; + border-bottom: 1px solid darken($body-bg, 3%); + .label-control{ + padding-top: 1.5rem; + } + > div{ + padding: 1.2rem; + padding-right: 0; + border-left: 1px solid darken($body-bg, 3%); + } + &.last{ + border-bottom: 0; + } + } + } + + &.striped-rows{ + .form-group{ + margin: 0; + + .label-control{ + padding-top: 1.5rem; + } + + > div{ + padding: 1.2rem; + padding-right: 0; + } + + &:nth-child(even){ + background-color: $body-bg; + } + } + } + + &.striped-labels{ + .form-group{ + margin: 0; + + .label-control{ + padding-top: 1.5rem; + } + + > div{ + padding: 1.2rem; + padding-right: 0; + background-color: white; + } + + &:nth-child(even){ + background-color: $body-bg; + } + } + } + + .custom-control-indicator{ + width: 1.1rem; + height: 1.075rem; + line-height: 1.05rem; + top: 0.15rem; + left: 0; + + .custom-control-description{ + margin-left: 1rem; + } + } +} + +select.form-control { + padding-top: 0; + padding-bottom: 0; +} + + +/*Bootstrap Enhance */ +.custom-checkbox { + margin-bottom: 0; + .custom-control-input{ + &:focus{ + outline: -webkit-focus-ring-color auto 5px; + } + &:disabled:checked { + ~ .custom-control-label::before { + background-color: rgba(30, 159, 242,0.5); + } + } + } +} +.custom-checkbox input:disabled:checked ~ .custom-control-indicator{ + opacity: 0.5; +} +.custom-checkbox input:disabled ~ .custom-control-indicator{ + cursor: not-allowed; +} +.custom-control-input > input:focus ~ .custom-control-indicator{ + padding: 0.51rem; +} +.custom-control-indicator{ + width: 1.1rem; + height: 1.075rem; + line-height: 1.05rem; + top: 0.15rem; + + .custom-control-description{ + margin-left: 1rem; + } +} +.form-control{ + &:disabled, + &[readonly]{ + background-color: #ECEFF1; + } +} +.input-group-addon { + background-color: #ECEFF1; + border-color: #BABFC7; +} + +.input-group-text{ + padding: 0.4rem 1rem; +} + +.custom-control{ + min-height: auto; +} + +// Skin-Square Buttons +.checkbox-input-group, .radio-input-group{ + .input-group{ + .skin.skin-square, .skin-polaris.skin{ + height: 16px; + width: 22px; + .icheckbox_square-red{ + top: -3px; + } + .iradio_polaris{ + top: -7px; + } + } + } +} +// Group Input with Switchery +.switchery-input-group{ + .input-group{ + .input-group-text{ + padding: 0.2rem 1rem; + } + } +} + +//Custom Checkbox +.custom-control-label::before{ + width: 1.1rem; + height: 1.1rem; +} +.custom-control-label::after{ + width: 1.1rem; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_grid.scss b/src/assets/sass/scss/bootstrap-extended/_grid.scss new file mode 100644 index 0000000..e9dfd44 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_grid.scss @@ -0,0 +1,86 @@ +// .bs-example{ +// [class^="col-"]{ +// span{ +// padding: .75rem; +// background-color: rgba(86, 61, 124, 0.15); +// border: 1px solid rgba(86, 61, 124, 0.2); +// display: block; +// } +// margin-bottom: 1rem; +// } +// .row + .row { +// margin-top: 1rem; +// } +// } + + +// +// Grid examples +// + +.bd-example-row { + .row + .row { + margin-top: 1rem; + } + + .row { + > .col, + > [class^="col-"] { + padding-top: .75rem; + padding-bottom: .75rem; + background-color: rgba(86,61,124,.15); + border: 1px solid rgba(86,61,124,.2); + } + } + + .flex-items-top, + .flex-items-middle, + .flex-items-bottom { + min-height: 6rem; + background-color: rgba(255,0,0,.1); + } +} + +.bd-example-row-flex-cols .row { + min-height: 10rem; + background-color: rgba(255,0,0,.1); +} + +.bd-highlight { + background-color: rgba(86, 61, 124, .15); + border: 1px solid rgba(86, 61, 124, .15); +} + +// Grid mixins +.example-container { + width: 800px; + @include make-container(); +} + +.example-row { + @include make-row(); +} + +.example-content-main { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(8); + } +} + +.example-content-secondary { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(4); + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_list-group.scss b/src/assets/sass/scss/bootstrap-extended/_list-group.scss new file mode 100644 index 0000000..23001ff --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_list-group.scss @@ -0,0 +1,55 @@ +/* =============================================================================================== + File Name: list-group.scss + Description: Contain list item, list group related extended SCSS. + ---------------------------------------------------------------------------------------------- + Item Name: Modern Admin - Clean Angular 11+ Bootstrap 5 Admin Dashboard + Version: 3.0 + Author: PIXINVENT + Author URL: http://www.themeforest.net/user/pixinvent +================================================================================================*/ + +// Inline list style with pipeline seperator + +ul.list-inline{ + li{ + display: inline-block; + } + &.list-inline-pipe{ + >li + li:before{ + content: ' | '; + color: $gray-300; + } + } +} +.list-group{ + .list-group-item{ + &.active{ + color: #fff !important; + } + } + .list-group-item-action{ + &:active{ + color: #fff; + background-color: $info; + a{ + color: #fff; + } + } + } +} +.users-list{ + li+li { + margin-left: -14px; + } + li{ + img{ + border: 2px solid #fff; + box-shadow: 0px 2px 10px 0px rgba($gray-600, 0.3) + } + .badge{ + background: rgba($white, 0.8); + color: $gray-600; + margin-bottom: 6px; + } + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_media.scss b/src/assets/sass/scss/bootstrap-extended/_media.scss new file mode 100644 index 0000000..60d6140 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_media.scss @@ -0,0 +1,48 @@ +.media-list{ + .media{ + padding: 1.5rem; + margin-top: 0; + .media-left{ + padding-right: 1rem; + float: left; + } + .media-right{ + padding-left: 1rem; + float: right; + } + } + a.media{ + color: $gray-600 !important; + } +} +.media{ + [class*="avatar-"]{ + position: relative; + padding-right: 0 !important; + margin-right: 0; + i{ + position: absolute; + // right:1px; + // top: 1px; + right: -4px; + bottom: -1px; + width: 10px; + height: 10px; + border: 2px solid lighten($body-bg, 30%); + border-radius: 100%; + } + } +} +.media-bordered{ + .media{ + border-top: 1px solid #E4E7ED; + &:first-child{ + border-top: 0; + } + } +} +.media-notation{ + a { + margin-right: 0.5rem; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_mixins.scss b/src/assets/sass/scss/bootstrap-extended/_mixins.scss new file mode 100644 index 0000000..16979d9 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_mixins.scss @@ -0,0 +1,24 @@ +// =============================================================================================== +// File Name: mixins.scss +// Description: Extended mixins file with new mixins features. +// ---------------------------------------------------------------------------------------------- +// Item Name: Modern Admin - Angular 11+ Bootstrap 5 Admin Dashboard Template +// Version: 3.0 +// Author: PIXINVENT +// Author URL: http://www.themeforest.net/user/pixinvent +// ================================================================================================ + +// // Components +@import "mixins/_buttons"; +@import "mixins/_label"; + +@import "mixins/_label"; +@import "mixins/_type"; //(NEW) + +// // // Components +@import "mixins/_buttons"; +@import "mixins/_navs"; +@import "mixins/_forms"; + +// // // Layout +@import "mixins/_navbar-align"; diff --git a/src/assets/sass/scss/bootstrap-extended/_modal.scss b/src/assets/sass/scss/bootstrap-extended/_modal.scss new file mode 100644 index 0000000..28c9890 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_modal.scss @@ -0,0 +1,15 @@ +.modal-sm { + max-width: 400px; +} +.modal-xs { + max-width: 300px; +} +.modal-xl { + max-width: 94%; + margin-left: 3%; + margin-right: 3%; +} +.icon-align{ + margin-top: 0.6rem; + margin-left: 0.5rem; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_nav.scss b/src/assets/sass/scss/bootstrap-extended/_nav.scss new file mode 100644 index 0000000..f18e37a --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_nav.scss @@ -0,0 +1,820 @@ +.nav { + border-radius: 0.25rem; + + // navs + &.wrap-border { + border: 1px solid #ddd; + + li.nav-header { + margin: 0 0.5rem; + } + + li.nav-item, + div { + // padding: 2px 10px; + } + } + + &.no-hover-bg { + .nav-item:hover { + background-color: transparent; + } + } + + .dropdown { + .dropdown-item { + &.active { + background-color: transparent; + color: #55595c; + + &:focus { + background-color: transparent; + color: #55595c; + } + } + } + } + + // Square Border + &.square-border { + border-radius: 0; + + .nav-item { + .nav-link.active { + border-radius: 0; + } + } + } + + .nav-item { + .nav-link { + display: inline-flex; + } + + i { + align-self: center; + } + } + + .dropdown-divider { + margin: 0.5rem 0; + } + + .modern-nav-toggle { + padding: 25px 0px; + } + + // nav pills + &.nav-pills { + .nav-item { + .nav-link { + i { + &.float-right:before { + position: relative; + top: 7px; + left: 7px; + } + } + + .badge { + &.float-right { + position: relative; + top: 1px; + left: 3px; + } + } + + &.dropdown-toggle::after { + top: -1px; + } + } + } + + // Justified Pills + &.nav-justified { + @include nav-justified; + @include nav-tabs-justified; + + .nav-link { + display: block; + + &.active { + border: none; + + &:hover, + &:focus { + border: none; + } + } + } + } + + &.nav-pill-bordered { + .nav-item { + border: 1px solid #d3d3d3; + border-radius: 0.25rem; + } + } + + &.nav-pill-with-active-bordered { + .nav-item { + a { + &.nav-link { + border: 1px solid #d3d3d3; + border-radius: 0.25rem; + background-color: #ffffff; + color: #55595c; + + &.active { + border: 1px solid $primary; + color: $primary; + } + } + } + } + } + + &.nav-active-bordered-pill { + .nav-item { + a { + &.nav-link { + color: #55595c; + + &.active { + border: 1px solid $primary; + border-radius: 0.25rem; + color: $primary; + background-color: #ffffff; + } + } + } + } + } + + &.nav-pill-toolbar { + &.nav-stacked { + .nav-item { + ~.nav-item { + a { + &.nav-link { + border-left: 1px solid #d3d3d3; + border-top: 0; + } + } + } + + &:first-child { + a { + &.nav-link { + border-radius: 0.25rem 0.25rem 0 0; + } + } + } + + &:last-child { + a { + &.nav-link { + border-radius: 0 0 0.25rem 0.25rem; + } + } + } + } + } + + .nav-item { + margin-top: 0; + margin-left: 0; + + a { + &.nav-link { + border: 1px solid #d3d3d3; + border-radius: 0; + + &.active, + &:active { + border-color: $info; + } + } + } + } + } + } + + // nav tabs + &.nav-tabs { + .nav-item { + .nav-link { + padding: 0.5rem 0.7rem; + display: inline-flex; + + &:hover { + &:not(.active) { + border-color: transparent; + } + } + + &.active { + background-color: #fff; + border-radius: 0.25rem 0.25rem 0 0; + } + + i { + &.float-right { + margin-left: 0.5rem; + } + } + + &.dropdown-toggle { + &::after { + top: -1px; + } + } + } + + &:hover { + color: #333; + } + } + + &.wrap-border { + border: 1px solid #ddd; + } + + &.no-hover-bg { + .nav-item:hover { + background-color: transparent; + } + } + + .dropdown { + .dropdown-item { + &.active { + background-color: transparent; + color: #55595c; + + &:focus { + background-color: transparent; + color: #55595c; + } + } + } + } + + // Square Border + &.square-border { + border-radius: 0; + + .nav-item { + .nav-link.active { + border-radius: 0; + } + } + } + + // Justified Tabs + &.nav-justified { + @include nav-justified; + @include nav-tabs-justified; + + .nav-item { + a.nav-link { + display: block; + + .active { + background-color: #fff; + } + } + } + } + + //************ + // Top Border + //************ + &.nav-top-border { + .nav-item { + a { + color: $success; + + &.nav-link.active { + border-top: 3px solid $success; + border-top-left-radius: 0; + border-top-right-radius: 0; + color: #555; + } + + &:hover { + color: darken($success, 30%); + + &:not(.active) { + border-color: transparent; + } + } + } + } + } + + //********** + // Top Line + //********** + &.nav-topline { + border-bottom: none; + + .nav-item { + &:hover { + background-color: transparent; + } + + &:not(:last-child) { + border-right: none; + } + + a { + border: 1px solid rgba(40, 44, 42, 0.1); + border-bottom: none; + + &.nav-link { + padding: 0.8rem 0.5rem; + background: rgba(40, 44, 42, 0.05); + color: #74777b; + line-height: 1; + -webkit-transition: color 0.2s; + transition: color 0.2s; + + &.active { + background: none; + box-shadow: inset 0 3px 0 $danger; + color: $danger; + border-radius: 0; + border-top-color: $danger; + border-bottom: none; + } + + &:hover, + &:focus { + color: $danger; + } + + &.dropdown-toggle::after { + top: -1px; + } + } + } + } + } + + //*********** + // Underline + //*********** + &.nav-underline { + background: #fff; + position: relative; + border-bottom: 1px solid $info; + border-radius: 0; + + .nav-item { + position: relative; + z-index: 1; + display: block; + text-align: center; + -webkit-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + margin-left: 0; + + &.open { + a { + .nav-link { + background-color: transparent; + + &:focus, + &:hover { + background-color: transparent; + color: $info; + } + } + } + } + + a { + &.nav-link { + position: relative; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + line-height: 2rem; + padding: 0.5rem 1rem; + -webkit-transition: color 0.2s; + transition: color 0.2s; + color: $info; + border: none; + + &.dropdown-toggle::after { + margin-top: -1rem; + } + + &.active { + border: none; + background-color: transparent; + + &:focus, + &:hover { + color: #55595c; + background-color: transparent; + } + + &:before { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + } + + &:hover, + &:focus { + color: $info; + } + + &:before { + position: absolute; + bottom: -1px; + left: 0; + width: 100%; + height: 4px; + background: $info; + content: ''; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + -webkit-transform: translate3d(0, 150%, 0); + transform: translate3d(0, 150%, 0); + } + } + } + } + } + + //******************** + // Triangle and line + //******************** + &.nav-linetriangle { + border-bottom-color: $warning; + + .nav-item { + position: relative; + z-index: 1; + display: block; + text-align: center; + -webkit-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + + a { + &.nav-link { + position: relative; + display: block; + overflow: visible; + text-overflow: ellipsis; + white-space: nowrap; + line-height: 2.5; + border: none; + color: #55595c; + + &.active { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + border-bottom-color: $warning; + color: $warning; + + &:after, + &:before { + position: absolute; + top: 100%; + left: 50%; + width: 0; + height: 0; + border: solid transparent; + content: ''; + pointer-events: none; + } + + &:before { + margin-left: -11px; + border-width: 12px; + border-top-color: $warning; + } + + &:after { + margin-left: -10px; + border-width: 10px; + border-top-color: #fff; + } + + &:focus { + color: $warning; + } + } + + &.dropdown-toggle { + &:after { + margin-top: -1rem; + } + + &.active { + &:after { + margin-top: 0; + } + } + } + } + } + } + + &.nav-justified { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + border-bottom-color: $warning; + + .nav-item { + a { + &.nav-link { + &.active { + top: 0px + } + } + } + } + } + } + + //****************** + // Falling Icon + //****************** + &.nav-iconfall { + overflow: visible; + border-bottom: none; + + .nav-item { + position: relative; + z-index: 1; + display: block; + text-align: center; + -webkit-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + margin: 0.5rem 0.7rem 0; + + &:hover, + &:focus { + background-color: transparent; + } + + a { + &.nav-link { + display: inline-block; + padding: 1em 0 2em; + color: #74777b; + position: relative; + line-height: 2.5; + width: 100%; + border: none; + -webkit-transition: color 0.3s cubic-bezier(0.7, 0, 0.3, 1); + transition: color 0.3s cubic-bezier(0.7, 0, 0.3, 1); + } + + &:hover, + &:focus { + color: #2CC185; + border: none; + } + + &.active { + color: #2CC185; + border: none; + background-color: transparent; + + i { + &:after { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + &:before { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + } + } + + i { + display: block; + margin-right: 0; + + &:after { + position: absolute; + bottom: 1em; + left: 50%; + margin-left: -20px; + width: 40px; + height: 4px; + background: #2CC185; + content: ''; + opacity: 0; + -webkit-transition: -webkit-transform 0.2s ease-in; + transition: transform 0.2s ease-in; + -webkit-transform: scale3d(0, 1, 1); + transform: scale3d(0, 1, 1); + } + + &:before { + display: block; + margin: 0 0 0.35em; + opacity: 0; + -webkit-transition: -webkit-transform 0.2s, opacity 0.2s; + transition: transform 0.2s, opacity 0.2s; + -webkit-transform: translate3d(0, -100px, 0); + transform: translate3d(0, -100px, 0); + pointer-events: none; + } + } + + &.dropdown-toggle { + &:after { + margin-top: -1rem; + } + } + } + } + } + } + + .nav-item { + .nav-link { + display: block; + } + } + + .dropdown-divider { + margin: 0.5rem 0; + } +} + +@include media-breakpoint-up(sm) { + + .nav.nav-tabs.nav-linetriangle, + .nav.nav-tabs.nav-iconfall, + .nav.nav-tabs.nav-underline { + &.nav-justified .nav-item { + display: table-cell !important; + } + } +} + +// Vertical Tabs +.nav-vertical { + overflow: hidden; + + .nav-left { + &.nav-tabs { + float: left; + border-bottom: 0; + border-radius: 0; + display: table; + + li.nav-item { + float: none; + margin: 0; + margin-right: -1px; + + a.nav-link { + min-width: 6.5rem; + border-right: 1px solid #ddd; + + &.active { + border: 1px solid #ddd; + border-right: 0; + border-radius: 0.25rem 0 0 0.25rem; + } + + &:hover { + &:not(.active) { + border-color: transparent; + border-right: 1px solid #ddd; + } + } + } + } + + &.nav-border-left { + li.nav-item { + a.nav-link { + color: $danger; + + &.active { + border-left: 3px solid $danger; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + color: #555; + } + } + } + } + } + + ~.tab-content { + margin-left: 45px; + + .tab-pane { + display: none; + background-color: #fff; + padding: 0 0 0.6rem 1rem; + overflow-y: auto; + + &.active { + display: block; + } + } + } + } + + .nav-right { + &.nav-tabs { + float: right; + border-bottom: 0; + border-radius: 0; + display: table; + + li.nav-item { + float: none; + margin: 0; + margin-left: -1px; + + a.nav-link { + min-width: 6.5rem; + border-left: 1px solid #ddd; + + &.active { + border: 1px solid #ddd; + border-left: 0; + border-radius: 0 0.25rem 0.25rem 0; + } + + &:hover { + &:not(.active) { + border-color: transparent; + border-left: 1px solid #ddd; + } + } + } + } + + &.nav-border-right { + li.nav-item { + a.nav-link { + color: $danger; + + &.active { + border-right: 3px solid $danger; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + color: #555; + } + } + } + } + } + + ~.tab-content { + + .tab-pane { + display: none; + background-color: #fff; + padding: 0 0 0.6rem 1rem; + overflow-y: auto; + + &.active { + display: block; + } + } + } + } +} + +// only Icons Tabs +.nav.nav-tabs.nav-only-icon { + .nav-item { + .nav-link { + font-size: 1.25rem; + + i { + margin-left: 0.5rem; + } + } + } +} + +.nav.nav-tabs .nav-item.show .nav-link, +.nav.nav-tabs .nav-item.show .nav-link:focus { + background-color: transparent; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_navbar.scss b/src/assets/sass/scss/bootstrap-extended/_navbar.scss new file mode 100644 index 0000000..accd9a2 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_navbar.scss @@ -0,0 +1,1008 @@ +/* =============================================================================================== + File Name: navbar.scss + Description: Contain header navigation bar, vertical main navigation bar and + horiznotal main navigation bar related SCSS. + ---------------------------------------------------------------------------------------------- + Item Name: Item Name: Modern Admin -Angular 11+ Bootstrap 5 Admin Dashboard Template + Version: 3.0 + Author: PIXINVENT + Author URL: http://www.themeforest.net/user/pixinvent +================================================================================================*/ + +%extend_hamburger_color { + .hamburger-inner, + .hamburger-inner::before, + .hamburger-inner::after { + background-color: $navbar-light-bg; + } +} +@mixin fullNav { + .navbar-header { + width: 100% !important; + padding: 0.5rem 1rem; + position: relative; + + .menu-toggle { + top: 2px; + position: relative; + } + + .open-navbar-container i { + font-size: 1.8rem; + } + + .navbar-brand { + position: absolute; + left: 50%; + top: 0; + transform: translate(-50%, 0); + } + } + + &.navbar-with-menu { + .navbar-container { + width: 100%; + display: table; + background: #fff; + padding: 0rem 1rem; + margin: 0; + height: auto; + } + } +} + +.header-navbar { + padding: 0px; + min-height: $navbar-height; + font-family: $font-family-monospace; + transition: 300ms ease all; + &.navbar-static-top{ + z-index: 1038; + } + .navbar-wrapper { + width: 100%; + } + + // add border to navbar + &.navbar-border { + border-bottom: 1px solid #e4e7ed; + } + + &.navbar-dark.navbar-border { + border-bottom: 1px solid #8596b5; + } + + // add shadow to navbar + &.navbar-shadow { + box-shadow: 0px 2px 30px 2px rgba(0, 0, 0, 0.1); + } + + // hide top horizontal menu drop-down arrow + &.navbar-without-dd-arrow { + .nav-link { + &.dropdown-toggle::after { + display: none; + } + } + } + + //center align brand option for horizontal layouts + &.navbar-brand-center { + .navbar-header { + width: 192px; + position: absolute; + top: 0; + left: 50%; + padding: 0; + margin: 0; + transform: translate(-50%, 0); + z-index: 999; + } + } + + .navbar-header { + height: 100%; + width: $navbar-header-width; + height: $navbar-height + 0.1; + float: left; + position: relative; + padding: 0rem 0.85rem; + transition: 300ms ease all; + + .navbar-brand { + padding: 18px 0px; + margin-right: 0; + + .brand-logo { + width: 36px; + } + + .brand-text { + display: inline; + padding-left: 6px; + font-weight: 500; + vertical-align: middle; + } + } + } + + .navbar-container { + padding: 0rem 18px; + height: $navbar-height; + transition: 300ms ease all; + background: inherit; + + ul.nav { + li { + > a.nav-link { + padding: 1.9rem 1rem; + font-size: 1.15rem; + + i.flag-icon { + margin-right: 0.5rem; + } + } + + a.dropdown-user-link { + padding: 1.2rem 1rem; + line-height: 23px; + + .user-name { + display: inline-block; + margin-bottom: 0.4rem; + margin-left: 0.2rem; + } + } + + a.menu-toggle { + padding: 1.7rem 1rem 1.6rem 1rem; + + i { + font-size: 1.6rem; + } + } + + a.nav-link-label { + padding: 1.7rem 1rem 1.6rem 1rem; + height: 100%; + } + + a.dropdown-user-link { + .avatar { + margin-right: 0.5rem; + width: 36px; + } + } + + a.nav-link-search, + a.nav-link-expand { + padding: 1.7rem 1rem 1.7rem 1rem; + } + + div.input-group { + padding: 0.7rem 1rem; + } + + i.ficon { + font-size: 1.5rem; + } + + .media-list { + max-height: 18.2rem; + top: -20px; + } + + .scrollable-container { + position: relative; + } + } + } + + //Navbar notification css + .dropdown-menu-media { + width: 24rem; + + .media-list { + .media { + padding: 1rem; + border: none; + // border-top: 1px solid $border-color; + border-bottom: 1px solid $border-color; + } + } + + .dropdown-menu-header { + border-bottom: 1px solid $border-color; + } + + .dropdown-menu-footer { + position: relative; + top: -20px; + a { + padding: 0.3rem; + border-top: 1px solid $border-color; + margin-bottom: -20px; + } + } + } + } + + &.navbar-without-menu { + .navbar-container { + margin-left: 0; + } + } + + &.navbar-with-menu { + .navbar-container { + } + } + + .nav-item + .nav-item { + margin-left: 0rem; + } + + /* For sm screen*/ + @include media-breakpoint-down(sm) { + @include fullNav; + } +} +/* Modern menu For md screen*/ +@include media-breakpoint-down(md) { + [data-menu="vertical-menu-modern"] { + .header-navbar { + @include fullNav; + } + .navbar-dark, + .navbar-semi-dark { + .navbar-header .navbar-nav .nav-link { + color: $white; + } + .navbar-container .navbar-nav .nav-link { + color: $navbar-dark-bg; + } + } + .navbar-light { + .navbar-header .navbar-nav .nav-link { + color: $navbar-dark-bg; + } + } + .navbar-header .navbar-nav { + .open-navbar-container, + .nav-menu-main { + padding: 1rem; + } + } + } +} + +.navbar-light { + background: $navbar-light-bg; + + &.navbar-horizontal { + background: $navbar-light-bg; + } + + .navbar-nav { + li { + line-height: 1; + } + + .active { + &.nav-link { + background-color: rgba(0, 0, 0, 0.03); + } + } + + .disabled { + &.nav-link { + color: $nav-link-disabled-color; + } + } + } +} + +.navbar-dark { + background: $navbar-dark-bg; + .navbar-brand { + color: $navbar-light-bg !important; + .brand-text{ + color: $navbar-light-bg !important; + } + } + &.navbar-horizontal { + background: $navbar-dark-bg; + } + + @extend %extend_hamburger_color; + + .nav-search { + .form-control, + .btn-secondary { + color: $navbar-light-bg; + background: $navbar-dark-bg; + } + } + + // .navbar-brand .brand-text { + // color: $white !important; + // } + + .navbar-nav { + li { + line-height: 1; + } + + .active { + &.nav-link { + background-color: rgba(255, 255, 255, 0.05); + } + } + + .disabled { + &.nav-link { + color: $gray-200; + } + } + } +} + +.navbar-semi-dark { + .navbar-header { + background: $navbar-dark-bg; + + .brand-text { + color: $white; + } + } + + background: $navbar-light-bg; + + .navbar-nav { + li { + line-height: 1; + } + + .nav-link { + color: $gray-600; + } + + .active { + &.nav-link { + background-color: rgba(0, 0, 0, 0.03); + } + } + + .disabled { + &.nav-link { + color: $nav-link-disabled-color; + } + } + } +} + +.navbar-semi-light { + .navbar-header { + background: $navbar-light-bg; + + .brand-text { + color: $gray-800; + } + } + + background: $gray-600; + + .navbar-nav { + li { + line-height: 1; + } + + .nav-link { + color: $navbar-light-bg; + } + + .active { + &.nav-link { + background-color: rgba(0, 0, 0, 0.03); + } + } + + .disabled { + &.nav-link { + color: $nav-link-disabled-color; + } + } + } +} + +// Mega menu +// ------------------------------ +.mega-dropdown { + position: static !important; + + .dropdown-menu { + display: flex; + } +} + +.navigation-main, +.navbar-nav { + .mega-dropdown-menu { + font-family: $font-family-sans-serif; + width: calc(100% - 50px); + padding: 0.5rem 0; + // width: 98%; + /* fallback if needed */ + margin: 0px 25px; + box-shadow: none; + box-shadow: 0px 5px 75px 2px rgba(64, 70, 74, 0.2); + z-index: 9999; + + ul { + padding: 0; + margin: 0; + + li { + list-style: none; + + a { + display: block; + color: $gray-800; + &.dropdown-item{ + &:active{ + color: $white; + } + } + + .children-in { + float: right; + } + + &:hover { + text-decoration: none; + color: $gray-600; + } + + &:focus { + text-decoration: none; + color: $gray-600; + } + } + } + + a.dropdown-item { + padding: 10px; + } + } + + p.accordion-text { + line-height: $line-height-base; + } + + .dropdown-menu-header { + padding: 0.5rem 0; + border-bottom: 1px solid $border-color; + } + + h6 i.la { + font-size: 1.1rem; + } + } +} + +// TODO: Need to generalize it +.horizontal-top-icon-menu { + .mega-dropdown-menu { + margin: 0px 25px !important; + } +} + +// Mega menu max width on boxed layout only +.container { + .mega-dropdown-menu { + @include mega-menu-container-max-widths(); + } +} + +@-moz-document url-prefix() { + ul { + li { + a { + .children-in { + position: relative; + right: 3px; + top: -14px; + } + } + } + } +} + +// Mega menu list +// ------------------------------ +.menu-list { + list-style: none; + padding: 0; + overflow: hidden; +} + +.menu-panel { + padding: 0; +} + +.sliding-menu { + overflow: hidden; + position: relative; + + ul { + float: left; + margin: 0; + padding: 0; + + li { + list-style: none; + margin: 0; + } + } +} + +// Mega "Hamburger" Icon Animations +// ------------------------------ +.navbar-menu-icon { + width: 24px; + margin: 16px 2px !important; + position: relative; + margin: 0px auto; + transform: rotate(0deg); + transition: 0.5s ease-in-out; + cursor: pointer; +} + +.navbar-menu-icon { + span { + display: block; + position: absolute; + height: 2px; + width: 100%; + background: $gray-600; + border-radius: 9px; + opacity: 1; + left: 0; + transform: rotate(0deg); + transition: 0.25s ease-in-out; + } +} + +.navbar-menu-icon span:nth-child(1) { + top: 0px; +} + +.navbar-menu-icon span:nth-child(2) { + top: 10px; +} + +.navbar-menu-icon span:nth-child(3) { + top: 20px; +} + +.navbar-menu-icon.show span:nth-child(1) { + top: 10px; + transform: rotate(135deg); +} + +.navbar-menu-icon.show span:nth-child(2) { + opacity: 0; + left: -60px; +} + +.navbar-menu-icon.show span:nth-child(3) { + top: 10px; + transform: rotate(-135deg); +} + +// Media queries for device support +// ========================================= +@include media-breakpoint-down(sm) { + .header-navbar { + // search bar + #navbar-mobile { + .search-input.open { + .input { + width: 132px; + &::placeholder { + color: $input-placeholder-color; + } + } + } + } + + // generic navbar dropdown specific + .navbar-nav { + .show { + position: static; + } + + .open-navbar-container { + padding-top: 0.9rem; + } + } + + .navbar-container { + .show { + .dropdown-menu { + right: 0; + left: 0 !important; + float: none; + width: auto; + margin-top: 0; + max-height: 400px; + overflow-x: hidden; + overflow-y: hidden; //prev. was scroll + } + } + + ul.nav { + li { + &.nav-item i { + margin-right: 0.2rem; + } + + > a.nav-link { + padding: 1.5rem 0.4rem; + + i.flag-icon { + margin-right: 0.2rem; + } + } + + a.dropdown-user-link { + padding: 0.8rem 0.6rem !important; + } + + a.nav-link-label { + padding: 1.4rem 0.4rem; + i.ft-bell { + position: relative; + left: 8px; + } + } + + a.nav-link-search, + a.nav-link-expand { + padding: 1.4rem 1rem 1rem 1rem; + } + + .dropdown-toggle::after { + margin-right: 0; + margin-left: -2px; + } + } + } + } + } + + // dark navbar + .navbar-dark, + .navbar-semi-dark { + .hamburger-inner, + .hamburger-inner::before, + .hamburger-inner::after { + background-color: $navbar-light-bg; + } + + .navbar-header { + .navbar-nav { + .nav-link { + color: $navbar-light-bg; + } + } + } + + .navbar-container { + .navbar-nav { + .nav-link { + color: $gray-600; + } + } + } + } + + // light navbar + .navbar-light, + .navbar-semi-light { + .navbar-header { + .navbar-nav { + .nav-link { + color: $navbar-dark-bg; + } + } + } + + .navbar-container { + .navbar-nav { + .nav-link { + color: $gray-600; + } + } + } + } +} + +.headroom { + will-change: transform; + transition: transform 200ms linear; +} + +.headroom--pinned-top { + transform: translateY(0%); +} + +.headroom--unpinned-top { + transform: translateY(-100%); +} + +.headroom--pinned-bottom { + transform: translateY(0%); +} + +.headroom--unpinned-bottom { + transform: translateY(100%); +} + +// iPad support for navbr +@include media-breakpoint-down(lg) { + .header-navbar { + .navbar-container { + ul.nav { + li { + > a.nav-link { + // padding: 1.4rem 0.4rem 0.8rem 0.4rem; + i.flag-icon { + margin-right: 0.2rem; + } + } + + a.dropdown-user-link { + // padding: 0.8rem 0.6rem; + padding: 1.2rem 0.6rem; + } + + a.nav-link-label { + // padding: 1.2rem 0rem 1rem 0.8rem; + } + + a.nav-link-search, + a.nav-link-expand { + // padding: 1.5rem 1rem 1rem 1rem; + } + + .dropdown-toggle::after { + margin-right: 0; + margin-left: -2px; + } + + .selected-language { + display: none; + } + + a.dropdown-user-link { + .user-name { + display: none; + } + } + } + } + } + } +} + +@mixin extend_mobile_specific($menu_height) { + .header-navbar { + .navbar-container { + .show { + .dropdown-menu { + max-height: $menu_height; + } + } + } + } +} + +@mixin responsive_sub_nav { + //For responsive sub nav + #navbar-mobile.navbar-collapse { + .navbar-nav { + margin: 0; + flex-flow: row wrap; + + .dropdown-menu { + position: absolute; + } + + .nav-item { + float: left; + } + } + } +} + +@media (max-width: 767px) { + @include responsive_sub_nav; +} +@include media-breakpoint-down(md) { + @include responsive_sub_nav; +} + +/* ----------- iPhone 5, 5S iPhone 6----------- */ + +/* Landscape */ + +@media only screen and (min-device-width: 26.78em) and (max-device-width: 47.64em) and (-webkit-min-device-pixel-ratio: 2) and (orientation: landscape) { + @include extend_mobile_specific(180px); +} + +/* ----------- iPhone 6+ ----------- */ + +/* Landscape */ + +@media only screen and (min-device-width: 29.57em) and (max-device-width: 52.57em) and (-webkit-min-device-pixel-ratio: 3) and (orientation: landscape) { + @include extend_mobile_specific(280px); +} + +// For Navbars Of Navbar Section + +@media screen and (max-width: 1024px) { + #navbar-demo { + .header-navbar { + .navbar-header { + width: auto; + + .menu-toggle.ft-menu { + position: relative; + // top: 0.6rem !important; + } + + .nav-link.open-navbar-container { + .la.la-ellipsis-v { + position: relative; + // top: -2.5rem; + } + } + } + } + + .navbar-container { + margin-left: auto; + + .navbar-btn { + .nav-link.btn { + padding: 0.5rem 1rem; + } + } + } + } + + .internationalization { + .card { + .card-body { + .header-navbar { + .navbar-wrapper { + .navbar-header { + width: auto; + + .menu-toggle.ft-menu { + position: relative; + // top: 0.6rem !important; // (1) commented (1),(2),(3) for internationalization navbar + } + + .nav-link.open-navbar-container { + .la.la-ellipsis-v { + position: relative; + top: 0.5rem; + // top: -2.5rem; // (2) + } + } + } + } + } + } + } + } +} + +@media screen and (max-width: 768px) { + #navbar-demo { + .header-navbar.navbar-semi-dark, + .header-navbar.navbar-brand-center { + .navbar-header { + width: 60px; + } + } + + .navbar-container { + .nav-form-inline { + .input-group { + .form-control { + width: 95px; + } + } + } + } + } +} + +@media screen and (max-width: 540px) { + #navbar-demo { + .navbar-container { + #navbar-mobile5.navbar-badges { + .badge-up { + position: absolute; + top: 1px; + right: 16rem; + } + } + + .add-on-right { + margin-top: 5rem !important; + margin-bottom: 1rem; + } + + .nav-form-select { + margin-bottom: 1rem; + float: left !important; + } + + .nav-radio, + .nav-checkbox { + label { + color: $black !important; + } + } + + .nav-checkbox { + float: left !important; + } + } + } + + .internationalization { + .card { + .card-body { + .header-navbar { + .navbar-wrapper { + .navbar-header { + width: 100%; + + .menu-toggle.ft-menu { + position: relative; + top: 0.6rem !important; + } + + .nav-link.open-navbar-container { + .la.la-ellipsis-v { + position: relative; + // top: -2.5rem; // (3) + } + } + } + } + } + } + } + } +} + +body.vertical-layout { + &.menu-open { + .main-menu { + .navigation { + .navigation-header { + .la-ellipsis-h, + .nav-menu-icon { + display: none; + } + } + } + } + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_pagination.scss b/src/assets/sass/scss/bootstrap-extended/_pagination.scss new file mode 100644 index 0000000..9441b66 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_pagination.scss @@ -0,0 +1,80 @@ +.pagination{ + margin-top: 1rem; + .page-link{ + color: $info; + border: 1px solid $gray-100; + } +} +.pager { + padding-left: 0; + margin: $line-height-base 0; + list-style: none; + text-align: center; + li { + display: inline; + > a, + > span { + display: inline-block; + padding: 5px 14px; + background-color: $pagination-bg; + border: $pagination-border-width solid $pagination-border-color; + border-radius: $border-radius; + } + + > a:hover, + > a:focus { + text-decoration: none; + background-color: $pagination-hover-bg; + } + } + &.pager-square{ + li{ + a{ + border-radius: 0; + } + } + } + &.pager-round{ + li{ + a{ + border-radius: 2rem; + } + } + } + &.pager-flat{ + li{ + a{ + border: 0; + } + } + } + .next { + > a, + > span { + float: right; + } + } + + .previous { + > a, + > span { + float: left; + } + } + + .disabled { + > a, + > a:hover, + > a:focus, + > span { + color: $pagination-disabled-color; + background-color: $pagination-bg; + // cursor: $cursor-disabled; + } + } + [class*="text-"]{ + .pager{ + text-align: inherit; + } + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_popover.scss b/src/assets/sass/scss/bootstrap-extended/_popover.scss new file mode 100644 index 0000000..5a03da4 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_popover.scss @@ -0,0 +1,28 @@ +.popover{ + z-index: 999; + &.popover-top, &.bs-tether-element-attached-top{ + &:after, &:before{ + margin-left: -10px; + } + } + &.popover-right, &.bs-tether-element-attached-right{ + &:after, &:before{ + margin-top: -10px; + } + } + &.popover-bottom, &.bs-tether-element-attached-bottom{ + &:after, &:before{ + margin-left: -10px; + } + } + &.popover-left, &.bs-tether-element-attached-left{ + &:after, &:before{ + margin-top: -10px; + } + } +} + +//Select-box-it +.selectboxit-container .selectboxit-options{ + z-index: 998; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_progress.scss b/src/assets/sass/scss/bootstrap-extended/_progress.scss new file mode 100644 index 0000000..fda97e1 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_progress.scss @@ -0,0 +1,45 @@ +/*========================================================================================= + File Name: progress.scss + Description: Extended bootstrap progress bar scss. + ---------------------------------------------------------------------------------------- + Item Name: Item Name: Modern Admin -Angular 11+ Bootstrap 5 Admin Dashboard Template + Version: 3.0 + Author: PIXINVENT + Author URL: http://www.themeforest.net/user/pixinvent + ---------------------------------------------------------------------------------------- + + Modifiers: `progress-lg` + `progress-md` + `progress-sm` + `progress-xs` + +==========================================================================================*/ + +// Size Modifier +// ======================================================================== + +.progress{ + margin-bottom: 3rem; + &:last-child{ + margin-bottom: 1rem; + } + &.progress-xl{ + height: $progress-size-xl !important; + } + &.progress-lg{ + height: $progress-size-lg !important; + } + &.progress-md{ + height: $progress-size-md !important; + } + &.progress-sm{ + height: $progress-size-sm !important; + } + &.progress-xs{ + height: $progress-size-xs !important; + } + + &.box-shadow{ + box-shadow: 0px 10px 15px 0px rgba($gray-600, 0.3) + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_reboot.scss b/src/assets/sass/scss/bootstrap-extended/_reboot.scss new file mode 100644 index 0000000..4d526b8 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_reboot.scss @@ -0,0 +1,5 @@ +a { + &:focus { + outline: none + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_tables.scss b/src/assets/sass/scss/bootstrap-extended/_tables.scss new file mode 100644 index 0000000..b010888 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_tables.scss @@ -0,0 +1,142 @@ +// ================================================================================================ +// File Name: tables.scss +// Description: Tables pages custom scss +// ---------------------------------------------------------------------------------------------- +// Item Name: Item Name: Modern Admin -Angular 11+ Bootstrap 5 Admin Dashboard Template +// Version: 3.0 +// Author: PIXINVENT +// Author URL: http://www.themeforest.net/user/pixinvent +// ================================================================================================ + +.table-white-space { + th, td { + white-space: nowrap; + } +} + +.table-borderless { + td, th { + border: none; + } +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid $table_border_color; + border-top: 1px solid $table_border_color; +} + +.table-bordered { + th, td { + border: 1px solid $table_border_color; + } +} + +.table { + th, td { + border-bottom: 1px solid $table_border_color; + } +} + +.table-bordered { + border: 1px solid $table_border_color; +} + +.table-inverse { + color: #eceeef; + background-color: #00A5A8; +} + +.table { + &.table-column { + th, td { + border: none; + border-left: 1px solid #e3ebf3; + } + th:first-child, td:first-child { + border-left: none; + } + } + th, td { + padding: 0.75rem 2rem; + } + &.table-xl { + th, td { + padding: 1.25rem 2rem; + } + } + &.table-lg { + th, td { + padding: 0.9rem 2rem; + } + } + &.table-de { + th, td { + padding: 0.75rem 2rem; + } + } + &.table-sm { + th, td { + padding: 0.6rem 2rem; + } + } + &.table-xs { + th, td { + padding: 0.4rem 2rem; + } + } +} + +/* +* Table sizing +*/ + +// For table borderless + +.table-borderless { + thead th { + border-top: 1px solid $table_border_color; + } + > tbody > tr > { + td, th { + border: 0; + } + } +} + +// For table solid border + +.table > { + thead > tr { + &.border-solid > th { + border-bottom-width: 2px; + } + &.border-double > th { + border-bottom-width: 4px; + border-bottom-style: double; + } + } + tbody > tr.border-dashed > td { + border-top-style: dashed; + } +} + +//For table double border + +//For table dashed border + +.border-custom-color td { + border-top: inherit; + border-bottom: inherit; +} + +//For Handson Table + +.handsontable .ht_master .wtHolder { + width: auto !important; + height: auto !important; +} + +#hot-display-license-info{ + display: none; +} diff --git a/src/assets/sass/scss/bootstrap-extended/_toast.scss b/src/assets/sass/scss/bootstrap-extended/_toast.scss new file mode 100644 index 0000000..0bdd702 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_toast.scss @@ -0,0 +1,61 @@ +// Toasts +.toast-bs-container{ + z-index: 1040; + position: fixed; + top: 0; + left: 0; + width: 100%; + + .toast-position{ + position: relative; + top: 0; + right: 0; + display: flex; + flex-direction: column; + flex-wrap: wrap-reverse; + + .toast.show{ + // display: block; + opacity: 1; + z-index: 1030; + } + } +} +.toast-placement{ + position: static; + top: 0; + .toast{ + position: absolute; + top: 0; + z-index: 1030; + } +} + + + +.toast { + display: none; + background-color: rgba(255, 255, 255,1); + margin-top: $toast-padding-x; + // position: absolute; +} + +.toast-body{ + background-color: $body-bg; +} +.toast.show.toast-wrapper{ + position: static; +} + + +.toast.toast-translucent { + opacity: 1; + display: block; +} + +.toast-header{ + img{ + width: 20px; + height: 20px; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/_type.scss b/src/assets/sass/scss/bootstrap-extended/_type.scss new file mode 100644 index 0000000..e811acb --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_type.scss @@ -0,0 +1,89 @@ +// ================================================================================================ +// File Name: type.scss +// Description: Type pages custom scss +// ---------------------------------------------------------------------------------------------- +// Item Name: Item Name: Modern Admin -Angular 11+ Bootstrap 5 Admin Dashboard Template +// Version: 3.0 +// Author: PIXINVENT +// Author URL: http://www.themeforest.net/user/pixinvent +// ================================================================================================ + + +//small +.font-small-1{ + font-size: 0.7rem !important; +} +.font-small-2{ + font-size: 0.8rem !important; +} +.font-small-3{ + font-size: 0.9rem !important; +} +//medium +.font-medium-1{ + font-size: 1.1rem !important; +} +.font-medium-2{ + font-size: 1.2rem !important; +} +.font-medium-3{ + font-size: 1.3rem !important; +} +.font-medium-4{ + font-size: 1.4rem !important; +} +.font-medium-5{ + font-size: 1.5rem !important; +} +//large +.font-large-1{ + font-size: 2rem !important; +} +.font-large-2{ + font-size: 3rem !important; +} +.font-large-3{ + font-size: 4rem !important; +} +.font-large-4{ + font-size: 5rem !important; +} +.font-large-5{ + font-size: 6rem !important; +} + +// Text styling +// ------------------------- + +// Font weights + +.text-bold-300 { + @include font-weight(light); +} +.text-bold-400 { + @include font-weight(book); +} +.text-bold-500 { + @include font-weight(medium); +} +.text-bold-600 { + @include font-weight(semi-bold); +} +.text-bold-700 { + @include font-weight(bold); +} + +// Font style +.text-italic { + font-style: italic; +} +.text-highlight { + padding: 4px 6px; +} + +//list Item +ol, ul, dl{ + li{ + line-height: 1.8; + } +} diff --git a/src/assets/sass/scss/bootstrap-extended/_utilities.scss b/src/assets/sass/scss/bootstrap-extended/_utilities.scss new file mode 100644 index 0000000..bcb156d --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/_utilities.scss @@ -0,0 +1,128 @@ +.icon-bg-circle{ + color: $white; + padding: 0.5rem; + border-radius: 50%; +} +.icon-left{ + margin-right:0.5rem; +} +.icon-right{ + margin-right:0.5rem; +} +.icon-spin { + display: inline-block; + animation: spin 1s infinite linear; +} + +.blockOverlay{ + z-index: 1050 !important; +} +.blockElement, .blockPage{ + z-index: 1051 !important; +} + +.embed-responsive{ + &:before{ + padding-top: 57%; + } +} + +@-moz-keyframes spin { + from { + -moz-transform: rotate(0deg); + } + to { + -moz-transform: rotate(360deg); + } +} + +@-webkit-keyframes spin { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.hidden{ + display: none; + visibility: hidden; +} + +//Disabled +a{ + &.disabled{ + // color: $dropdown-link-disabled-color !important; + } + &:hover { + cursor: pointer; + text-decoration: none; + } +} + +.round{@include border-radius(1.5rem);} +.square{@include border-radius($btn-border-radius-square);} + +.mega-dropdown-menu{ + p.accordion-text{ + line-height: 1.45; + } + a[aria-expanded="true"]{ + padding-bottom:1rem; + } +} + +// Line on Side + +.line-on-side { + border-bottom: 1px solid #dadada; + line-height: 0.1em; + margin: 10px 0 20px; +} +.line-on-side span { + background:#fff; + padding:0 10px; +} + +.icon-line-height{ + line-height : 1.5rem !important; +} + +//Tables +//-------------------------- +.table-middle{ + td{ + vertical-align: middle; + } +} + +// Spinner classes +.spinner { + display: inline-block; + -webkit-animation: spin 1s linear infinite; + -o-animation: spin 1s linear infinite; + animation: spin 1s linear infinite; +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +//For blank page in small screen + +@media only screen and (max-width: 576px){ + .line-on-side { + border-bottom: none; + line-height: 1.25rem; + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_buttons.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_buttons.scss new file mode 100644 index 0000000..48a3e0a --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_buttons.scss @@ -0,0 +1,14 @@ +@mixin button-square-variant($border) { + @include border-radius($border); +} +@mixin button-round-variant($border) { + @include border-radius($border); +} + +// Button sizes +@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { + padding: $padding-y $padding-x; + font-size: $font-size; + // line-height: $line-height-base; + @include border-radius($border-radius); +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_forms.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_forms.scss new file mode 100644 index 0000000..ef5543c --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_forms.scss @@ -0,0 +1,7 @@ +@mixin input-field-size($input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { + height: $input-height; + padding: $padding-vertical $padding-horizontal; + font-size: $font-size; + line-height: $line-height-base; + border-radius: $border-radius; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_label.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_label.scss new file mode 100644 index 0000000..b590a4c --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_label.scss @@ -0,0 +1,13 @@ +// tags + +@mixin badge-variant($color) { + background-color: $color; + &.badge-glow{ + box-shadow: 0px 0px 10px $color; + } + &[href] { + @include hover-focus { + background-color: darken($color, 10%); + } + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_navbar-align.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_navbar-align.scss new file mode 100644 index 0000000..58d99d6 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_navbar-align.scss @@ -0,0 +1,11 @@ + +// For each breakpoint, define the maximum width of the container in a media query +@mixin mega-menu-container-max-widths($max-widths: $container-max-widths) { + @each $breakpoint, $container-max-width in $max-widths { + @include media-breakpoint-up($breakpoint) { + max-width: $container-max-width; + $margin-width: calc((100% - #{$container-max-width})/2); + margin: 0 $margin-width; + } + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_navs.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_navs.scss new file mode 100644 index 0000000..7628253 --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_navs.scss @@ -0,0 +1,50 @@ +// Justified nav links +// ------------------------- + +@mixin nav-justified { + width: 100%; + + .nav-item { + float: none; + } + + .nav-link { + text-align: center; + margin-bottom: 5px; + } + + > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + + @include media-breakpoint-up(sm) { + .nav-item { + display: table-cell; + width: 1%; + } + .nav-link { + margin-bottom: 0; + } + } +} + +// Move borders to anchors instead of bottom of list +// +// Mixin for adding on top the shared `.nav-justified` styles for our tabs +@mixin nav-tabs-justified { + + .nav-link { + // Override margin from .nav-tabs + margin-right: 0; + border-radius: $border-radius; + } + + @include media-breakpoint-up(sm) { + .nav-link.active, + .nav-link.active:hover, + .nav-link.active:focus { + border-bottom-color: transparent;//$nav-tabs-justified-active-link-border-color; + } + } +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap-extended/mixins/_type.scss b/src/assets/sass/scss/bootstrap-extended/mixins/_type.scss new file mode 100644 index 0000000..3df975f --- /dev/null +++ b/src/assets/sass/scss/bootstrap-extended/mixins/_type.scss @@ -0,0 +1,31 @@ +// Font weight mixins +// ------------------ +@mixin font-weight($weight) { + $weights: ( + thin: 100, + extra-light: 200, + ultra-light: 200, + light: 300, + normal: 400, + book: 400, + regular: 400, + medium: 500, + semi-bold: 600, + demi-bold: 600, + bold: 700, + extra-bold: 800, + ultra-bold: 900, + heavy: 900, + black: 900, + ultra: 900, + ultra-black: 900, + extra-ultra: 900 + ); + + $output: $weight; + @if map-has-key($weights, $weight) { + $output: map-get($weights, $weight); + } + + font-weight: $output; +} \ No newline at end of file diff --git a/src/assets/sass/scss/bootstrap.scss b/src/assets/sass/scss/bootstrap.scss new file mode 100644 index 0000000..519953d --- /dev/null +++ b/src/assets/sass/scss/bootstrap.scss @@ -0,0 +1,13 @@ +/*! + * Bootstrap v4.2.1 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + + @import "bootstrap/functions"; + + @import "core/variables/variables"; + @import "bootstrap/variables"; + + @import "bootstrap/bootstrap"; diff --git a/src/assets/sass/scss/bootstrap/_alert.scss b/src/assets/sass/scss/bootstrap/_alert.scss new file mode 100644 index 0000000..da2a98a --- /dev/null +++ b/src/assets/sass/scss/bootstrap/_alert.scss @@ -0,0 +1,51 @@ +// +// Base styles +// + +.alert { + position: relative; + padding: $alert-padding-y $alert-padding-x; + margin-bottom: $alert-margin-bottom; + border: $alert-border-width solid transparent; + @include border-radius($alert-border-radius); +} + +// Headings for larger alerts +.alert-heading { + // Specified to prevent conflicts of changing $headings-color + color: inherit; +} + +// Provide class for links that match alerts +.alert-link { + font-weight: $alert-link-font-weight; +} + + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissible { + padding-right: $close-font-size + $alert-padding-x * 2; + + // Adjust close link position + .close { + position: absolute; + top: 0; + right: 0; + padding: $alert-padding-y $alert-padding-x; + color: inherit; + } +} + + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +@each $color, $value in $theme-colors { + .alert-#{$color} { + @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); + } +} diff --git a/src/assets/sass/scss/bootstrap/_badge.scss b/src/assets/sass/scss/bootstrap/_badge.scss new file mode 100644 index 0000000..2082f05 --- /dev/null +++ b/src/assets/sass/scss/bootstrap/_badge.scss @@ -0,0 +1,54 @@ +// Base class +// +// Requires one of the contextual, color modifier classes for `color` and +// `background-color`. + +.badge { + display: inline-block; + padding: $badge-padding-y $badge-padding-x; + @include font-size($badge-font-size); + font-weight: $badge-font-weight; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + @include border-radius($badge-border-radius); + @include transition($badge-transition); + + @at-root a#{&} { + @include hover-focus { + text-decoration: none; + } + } + + // Empty badges collapse automatically + &:empty { + display: none; + } +} + +// Quick fix for badges in buttons +.btn .badge { + position: relative; + top: -1px; +} + +// Pill badges +// +// Make them extra rounded with a modifier to replace v3's badges. + +.badge-pill { + padding-right: $badge-pill-padding-x; + padding-left: $badge-pill-padding-x; + @include border-radius($badge-pill-border-radius); +} + +// Colors +// +// Contextual variations (linked badges get darker on :hover). + +@each $color, $value in $theme-colors { + .badge-#{$color} { + @include badge-variant($value); + } +} diff --git a/src/assets/sass/scss/bootstrap/_breadcrumb.scss b/src/assets/sass/scss/bootstrap/_breadcrumb.scss new file mode 100644 index 0000000..be30950 --- /dev/null +++ b/src/assets/sass/scss/bootstrap/_breadcrumb.scss @@ -0,0 +1,41 @@ +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: $breadcrumb-padding-y $breadcrumb-padding-x; + margin-bottom: $breadcrumb-margin-bottom; + list-style: none; + background-color: $breadcrumb-bg; + @include border-radius($breadcrumb-border-radius); +} + +.breadcrumb-item { + // The separator between breadcrumbs (by default, a forward-slash: "/") + + .breadcrumb-item { + padding-left: $breadcrumb-item-padding; + + &::before { + display: inline-block; // Suppress underlining of the separator in modern browsers + padding-right: $breadcrumb-item-padding; + color: $breadcrumb-divider-color; + content: $breadcrumb-divider; + } + } + + // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built + // without `